acl_get('a_attach')) ? "$filename$SID&mode=ext_groups" : ''; return; } define('IN_PHPBB', 1); // Include files $phpbb_root_path = './../'; $phpEx = substr(strrchr(__FILE__, '.'), 1); require('pagestart.' . $phpEx); include($phpbb_root_path . 'includes/functions_posting.' . $phpEx); if (!$auth->acl_get('a_attach')) { trigger_error($user->lang['NO_ADMIN']); } $mode = request_var('mode', ''); $submit = (isset($_POST['submit'])) ? true : false; $error = $notify = array(); switch ($mode) { case 'extensions': $l_title = 'MANAGE_EXTENSIONS'; break; case 'ext_groups': $l_title = 'EXTENSION_GROUPS_TITLE'; break; case 'orphan': $l_title = 'ORPHAN_ATTACHMENTS'; break; default: trigger_error('NO_MODE'); } adm_page_header($user->lang[$l_title]); if ($submit && $mode == 'extensions') { // Change Extensions ? $extension_change_list = (isset($_POST['extension_change_list'])) ? array_map('intval', $_POST['extension_change_list']) : array(); $group_select_list = (isset($_POST['group_select'])) ? array_map('intval', $_POST['group_select']) : array(); // Generate correct Change List $extensions = array(); for ($i = 0; $i < count($extension_change_list); $i++) { $extensions[$extension_change_list[$i]]['group_id'] = $group_select_list[$i]; } $sql = 'SELECT * FROM ' . EXTENSIONS_TABLE . ' ORDER BY extension_id'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { if ($row['group_id'] != $extensions[$row['extension_id']]['group_id']) { $sql = 'UPDATE ' . EXTENSIONS_TABLE . ' SET group_id = ' . (int) $extensions[$row['extension_id']]['group_id'] . ' WHERE extension_id = ' . $row['extension_id']; $db->sql_query($sql); add_log('admin', 'LOG_ATTACH_EXT_UPDATE', $row['extension']); } } $db->sql_freeresult($result); // Delete Extension ? $extension_id_list = (isset($_POST['extension_id_list'])) ? array_map('intval', $_POST['extension_id_list']) : array(); if (sizeof($extension_id_list)) { $sql = 'SELECT extension FROM ' . EXTENSIONS_TABLE . ' WHERE extension_id IN (' . implode(', ', $extension_id_list) . ')'; $result = $db->sql_query($sql); $extension_list = ''; while ($row = $db->sql_fetchrow($result)) { $extension_list .= ($extension_list == '') ? $row['extension'] : ', ' . $row['extension']; } $db->sql_freeresult($result); $sql = 'DELETE FROM ' . EXTENSIONS_TABLE . ' WHERE extension_id IN (' . implode(', ', $extension_id_list) . ')'; $db->sql_query($sql); add_log('admin', 'LOG_ATTACH_EXT_DEL', $extension_list); } // Add Extension ? $add_extension = strtolower(request_var('add_extension', '')); $add_extension_group = request_var('add_group_select', 0); $add = (isset($_POST['add_extension_check'])) ? true : false; if ($add_extension != '' && $add) { if (!sizeof($error)) { $sql = 'SELECT extension_id FROM ' . EXTENSIONS_TABLE . " WHERE extension = '" . $db->sql_escape($add_extension) . "'"; $result = $db->sql_query($sql); if ($row = $db->sql_fetchrow($result)) { $error[] = sprintf($user->lang['EXTENSION_EXIST'], $add_extension); } $db->sql_freeresult($result); if (!sizeof($error)) { $sql_ary = array( 'group_id' => $add_extension_group, 'extension' => $add_extension ); $db->sql_query('INSERT INTO ' . EXTENSIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); add_log('admin', 'LOG_ATTACH_EXT_ADD', $add_extension); } } } if (!sizeof($error)) { $notify[] = $user->lang['EXTENSIONS_UPDATED']; } } if ($submit && $mode == 'ext_groups') { // Change Extension Groups ? $group_change_list = (isset($_POST['group_change_list'])) ? array_map('intval', $_POST['group_change_list']) : array(); $extension_group_list = request_var('extension_group_list', ''); $group_allowed_list = (isset($_POST['allowed_list'])) ? array_flip(array_map('intval', $_POST['allowed_list'])) : array(); $download_mode_list = (isset($_POST['download_mode_list'])) ? array_map('intval', $_POST['download_mode_list']) : array(); $category_list = (isset($_POST['category_list'])) ? array_map('intval', $_POST['category_list']) : array(); $upload_icon_list = request_var('upload_icon_list', ''); $filesize_list = (isset($_POST['max_filesize_list'])) ? array_map('intval', $_POST['max_filesize_list']) : array(); $size_select_list = request_var('size_select_list', 'b'); foreach ($group_change_list as $group_id => $var) { $filesize_list[$group_id] = ($size_select_list[$group_id] == 'kb') ? round($filesize_list[$group_id] * 1024) : (($size_select_list[$group_id] == 'mb') ? round($filesize_list[$group_id] * 1048576) : $filesize_list[$group_id]); $group_sql = array( 'group_name' => $extension_group_list[$group_id], 'cat_id' => $category_list[$group_id], 'allow_group' => (isset($group_allowed_list[$group_id])) ? 1 : 0, 'download_mode' => $download_mode_list[$group_id], 'upload_icon' => ($upload_icon_list[$group_id] == 'no_image') ? '' : $upload_icon_list[$group_id], 'max_filesize' => $filesize_list[$group_id] ); $sql = 'UPDATE ' . EXTENSION_GROUPS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $group_sql) . " WHERE group_id = $group_id"; $db->sql_query($sql); } // Delete Extension Groups $group_delete_list = (isset($_POST['group_delete_list'])) ? array_keys(array_map('intval', $_POST['group_delete_list'])) : array(); if (sizeof($group_delete_list)) { $sql = 'SELECT group_name FROM ' . EXTENSION_GROUPS_TABLE . ' WHERE group_id IN (' . implode(', ', $group_delete_list) . ')'; $result = $db->sql_query($sql); $l_group_list = array(); while ($row = $db->sql_fetchrow($result)) { $l_group_list[] = $row['group_name']; } $db->sql_freeresult($result); $sql = 'DELETE FROM ' . EXTENSION_GROUPS_TABLE . ' WHERE group_id IN (' . implode(', ', $group_delete_list) . ')'; $db->sql_query($sql); // Set corresponding Extensions to a pending Group $sql ='"UPDATE ' . EXTENSIONS_TABLE . ' SET group_id = 0 WHERE group_id IN (' . implode(', ', $group_delete_list) . ')'; $db->sql_query($sql); add_log('admin', 'LOG_ATTACH_EXTGROUP_DEL', implode(', ', $l_group_list)); } // Add Extensions Group ? $extension_group = request_var('add_extension_group', ''); $download_mode = request_var('add_download_mode', INLINE_LINK); $cat_id = request_var('add_category', 0); $upload_icon = request_var('add_upload_icon', ''); $filesize = request_var('add_max_filesize', 0); $size_select = request_var('add_size_select', 'b'); $is_allowed = (isset($_POST['add_allowed'])) ? true : false; $add = (isset($_POST['add_extension_group_check'])) ? true : false; if ($extension_group != '' && $add) { // check Extension Group $sql = 'SELECT group_name FROM ' . EXTENSION_GROUPS_TABLE . " WHERE group_name = '" . $db->sql_escape($extension_group) . "'"; $result = $db->sql_query_limit($sql, 1); if ($row = $db->sql_fetchrow($result)) { if ($row['group_name'] == $extension_group) { $error[] = sprintf($user->lang['EXTENSION_GROUP_EXIST'], $extension_group); } } $db->sql_freeresult($result); if (!sizeof($error)) { $filesize = ($size_select == 'kb') ? round($filesize * 1024) : (($size_select == 'mb') ? round($filesize * 1048576) : $filesize); $group_sql = array( 'group_name' => $extension_group, 'cat_id' => $cat_id, 'allow_group' => $is_allowed, 'download_mode' => $download_mode, 'upload_icon' => ($upload_icon == 'no_image') ? '' : $upload_icon, 'max_filesize' => $filesize ); $sql = 'INSERT INTO ' . EXTENSION_GROUPS_TABLE . ' ' . $db->sql_build_array('INSERT', $group_sql); $db->sql_query($sql); add_log('admin', 'LOG_ATTACH_EXTGROUP_ADD', $extension_group); } } $sql = 'SELECT e.extension, g.* FROM ' . EXTENSIONS_TABLE . ' e, ' . EXTENSION_GROUPS_TABLE . ' g WHERE e.group_id = g.group_id AND g.allow_group = 1'; $result = $db->sql_query($sql); $extensions = array(); while ($row = $db->sql_fetchrow($result)) { $extension = $row['extension']; $extensions['_allowed_'][] = $extension; $extensions[$extension]['display_cat'] = (int) $row['cat_id']; $extensions[$extension]['download_mode']= (int) $row['download_mode']; $extensions[$extension]['upload_icon'] = (string) $row['upload_icon']; $extensions[$extension]['max_filesize'] = (int) $row['max_filesize']; } $db->sql_freeresult($result); $cache->destroy('extensions'); $cache->put('extensions', $extensions); if (!sizeof($error)) { $notify[] = $user->lang['EXTENSION_GROUPS_UPDATED']; } } ?>

lang[$l_title]; ?>

lang[$l_title . '_EXPLAIN']; ?>

lang['LOG_ATTACH_ORPHAN_DEL'], implode(', ', $delete_files))); $notify[] = sprintf($user->lang['LOG_ATTACH_ORPHAN_DEL'], implode(', ', $delete_files)); } $upload_list = array(); foreach ($add_files as $file) { if (!in_array($file, $delete_files) && $post_ids[$file]) { $upload_list[$post_ids[$file]] = $file; } } unset($add_files); if (sizeof($upload_list)) { ?>

lang['UPLOADING_FILES']; ?>

sql_query($sql); $forum_names = array(); while ($row = $db->sql_fetchrow($result)) { $forum_names[$row['forum_id']] = $row['forum_name']; } $db->sql_freeresult($result); $sql = 'SELECT forum_id, topic_id, post_id FROM ' . POSTS_TABLE . ' WHERE post_id IN (' . implode(', ', array_keys($upload_list)) . ')'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { echo sprintf($user->lang['UPLOADING_FILE_TO'], $upload_list[$row['post_id']], $row['post_id']) . '
'; if (!$auth->acl_gets('f_attach', 'u_attach', $row['forum_id'])) { echo '' . sprintf($user->lang['UPLOAD_DENIED_FORUM'], $forum_names[$row['forum_id']]) . '

'; } else { upload_file($row['post_id'], $row['topic_id'], $row['forum_id'], $config['upload_dir'], $upload_list[$row['post_id']]); } } } } if (sizeof($error)) { ?>

lang['WARNING']; ?>

', $error); ?>

lang['NOTIFY']; ?>

', $notify); ?>

'; foreach ($modes as $_mode) { $s_select_mode .= ''; } $s_select_mode .= ''; ?>
">
 
$img) { $filename_list .= ''; } $size = request_var('size', 0); if (!$size && !$submit) { $max_add_filesize = intval($config['max_filesize']); $size = ($max_add_filesize >= 1048576) ? 'mb' : (($max_add_filesize >= 1024) ? 'kb' : 'b'); } $max_add_filesize = ($max_add_filesize >= 1048576) ? round($max_add_filesize / 1048576 * 100) / 100 : (($max_add_filesize >= 1024) ? round($max_add_filesize / 1024 * 100) / 100 : $max_add_filesize); $viewgroup = request_var('g', 0); ?> sql_query($sql); while ($row = $db->sql_fetchrow($result)) { // Format the filesize if ($row['max_filesize'] == 0) { $row['max_filesize'] = (int) $config['max_filesize']; } $size_format = ($row['max_filesize'] >= 1048576) ? 'mb' : (($row['max_filesize'] >= 1024) ? 'kb' : 'b'); $row['max_filesize'] = ($row['max_filesize'] >= 1048576) ? round($row['max_filesize'] / 1048576 * 100) / 100 : (($row['max_filesize'] >= 1024) ? round($row['max_filesize'] / 1024 * 100) / 100 : $row['max_filesize']); $s_allowed = ($row['allow_group'] == 1) ? 'checked="checked"' : ''; $edit_img = ($row['upload_icon'] != '') ? $row['upload_icon'] : ''; $filename_list = ''; $no_image_select = false; foreach ($imglist as $key => $img) { if ($edit_img == '') { $no_image_select = true; $selected = ''; } else { $selected = ($edit_img == $img) ? ' selected="selected"' : ''; } $filename_list .= ''; } ?> sql_query($sql); $assigned_extensions = array(); while ($e_row = $db->sql_fetchrow($e_result)) { $assigned_extensions[] = strtoupper($e_row['extension']); } $db->sql_freeresult($e_result); ?>
 lang['EXTENSION_GROUP']; ?>   lang['SPECIAL_CATEGORY']; ?>   lang['ALLOWED']; ?>   lang['DOWNLOAD_MODE']; ?>   lang['UPLOAD_ICON']; ?>   lang['MAX_EXTGROUP_FILESIZE']; ?>   lang['ADD']; ?> 
 
  
 lang['EXTENSION_GROUP']; ?>   lang['SPECIAL_CATEGORY']; ?>   lang['ALLOWED']; ?>   lang['DOWNLOAD_MODE']; ?>   lang['UPLOAD_ICON']; ?>   lang['MAX_EXTGROUP_FILESIZE']; ?>   lang['DELETE']; ?> 
" class="gen">
/>
  
 lang['ASSIGNED_EXTENSIONS'] . ' » ' . ((sizeof($assigned_extensions)) ? implode(', ', $assigned_extensions) : $user->lang['NONE']); ?>
  
sql_query($sql); if ($row = $db->sql_fetchrow($result)) { $old_group_id = $row['group_id']; do { $current_group_id = $row['group_id']; if ($old_group_id != $current_group_id) { ?> sql_fetchrow($result)); } ?>
 lang['EXTENSION']; ?>   lang['EXTENSION_GROUP']; ?>   lang['ADD_EXTENSION']; ?> 
 lang['EXTENSION']; ?>   lang['EXTENSION_GROUP']; ?>   lang['DELETE']; ?> 
  
sql_query($sql); while ($row = $db->sql_fetchrow($result)) { unset($attach_filelist[$row['physical_filename']]); } $db->sql_freeresult($result); ?> = 1048576) ? $user->lang['MB'] : ( ($filesize >= 1024) ? $user->lang['KB'] : $user->lang['BYTES'] ); $filesize = ($filesize >= 1048576) ? round((round($filesize / 1048576 * 100) / 100), 2) : (($filesize >= 1024) ? round((round($filesize / 1024 * 100) / 100), 2) : $filesize); ?>
 lang['FILENAME']; ?>   lang['FILESIZE']; ?>   lang['ATTACH_POST_ID']; ?>   lang['ATTACH_TO_POST']; ?>   lang['DELETE']; ?> 
ID:
   lang['MARK_ALL']; ?> :: lang['UNMARK_ALL']; ?> lang['MARK_ALL']; ?> :: lang['UNMARK_ALL']; ?>

$user->lang['NONE'], IMAGE_CAT => $user->lang['CAT_IMAGES'], WM_CAT => $user->lang['CAT_WM_FILES'], RM_CAT => $user->lang['CAT_RM_FILES'] ); if ($group_id) { $sql = 'SELECT cat_id FROM ' . EXTENSION_GROUPS_TABLE . ' WHERE group_id = ' . intval($group_id); $result = $db->sql_query($sql); $cat_type = (!($row = $db->sql_fetchrow($result))) ? NONE_CAT : $row['cat_id']; $db->sql_freeresult($result); } else { $cat_type = NONE_CAT; } $group_select = ''; return($group_select); } // Extension group select function group_select($select_name, $default_group = '-1') { global $db, $user; $group_select = ''; return $group_select; } // Build select for download modes function download_select($select_name, $group_id = FALSE) { global $db, $user; $types = array( INLINE_LINK => $user->lang['MODE_INLINE'], PHYSICAL_LINK => $user->lang['MODE_PHYSICAL'] ); if ($group_id) { $sql = "SELECT download_mode FROM " . EXTENSION_GROUPS_TABLE . " WHERE group_id = " . intval($group_id); $result = $db->sql_query($sql); $download_mode = (!($row = $db->sql_fetchrow($result))) ? INLINE_LINK : $row['download_mode']; $db->sql_freeresult($result); } else { $download_mode = INLINE_LINK; } $group_select = ''; return($group_select); } // Upload already uploaded file... huh? are you kidding? function upload_file($post_id, $topic_id, $forum_id, $upload_dir, $filename) { global $message_parser, $db, $user; $message_parser->attachment_data = array(); $message_parser->filename_data['filecomment'] = ''; $message_parser->filename_data['filename'] = $upload_dir . '/' . $filename; $filedata = upload_attachment($filename, true, $upload_dir . '/' . $filename); if ($filedata['post_attach'] && !sizeof($filedata['error'])) { $message_parser->attachment_data = array( 'post_id' => $post_id, 'poster_id' => $user->data['user_id'], 'topic_id' => $topic_id, 'physical_filename' => $filedata['destination_filename'], 'real_filename' => $filedata['filename'], 'comment' => $message_parser->filename_data['filecomment'], 'extension' => $filedata['extension'], 'mimetype' => $filedata['mimetype'], 'filesize' => $filedata['filesize'], 'filetime' => $filedata['filetime'], 'thumbnail' => $filedata['thumbnail'] ); $message_parser->filename_data['filecomment'] = ''; $filedata['post_attach'] = FALSE; // Submit Attachment $attach_sql = $message_parser->attachment_data; $db->sql_transaction(); $sql = 'INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $attach_sql); $db->sql_query($sql); $sql = 'UPDATE ' . POSTS_TABLE . " SET post_attachment = 1 WHERE post_id = $post_id"; $db->sql_query($sql); $sql = 'UPDATE ' . TOPICS_TABLE . " SET topic_attachment = 1 WHERE topic_id = $topic_id"; $db->sql_query($sql); $db->sql_transaction('commit'); add_log('admin', sprintf($user->lang['LOG_ATTACH_FILEUPLOAD'], $post_id, $filename)); echo '' . $user->lang['SUCCESSFULLY_UPLOADED'] . '

'; } else if (sizeof($filedata['error'])) { echo '' . sprintf($user->lang['ADMIN_UPLOAD_ERROR'], implode("
\t", $filedata['error'])) . '


'; } } ?>