acl_get('a_attach')) ? "$filename$SID&mode=attach" : ''; $module['POST']['ATTACHMENTS'] = ($auth->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); $user->add_lang(array('posting', 'viewtopic')); 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 'attach': $l_title = 'ATTACHMENT_SETTINGS'; break; 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'); } if ($mode == 'attach') { $config_sizes = array('max_filesize' => 'size', 'attachment_quota' => 'quota_size', 'max_filesize_pm' => 'pm_size'); foreach ($config_sizes as $cfg_key => $var) { $$var = request_var($var, ''); } // Pull all config data $sql = 'SELECT * FROM ' . CONFIG_TABLE; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $config_name = $row['config_name']; $config_value = $row['config_value']; $default_config[$config_name] = $config_value; $new[$config_name] = request_var($config_name, $default_config[$config_name]); foreach ($config_sizes as $cfg_key => $var) { if (empty($$var) && !$submit && $config_name == $cfg_key) { $$var = (intval($default_config[$config_name]) >= 1048576) ? 'mb' : ((intval($default_config[$config_name]) >= 1024) ? 'kb' : 'b'); } if (!$submit && $config_name == $cfg_key) { $new[$config_name] = ($new[$config_name] >= 1048576) ? round($new[$config_name] / 1048576 * 100) / 100 : (($new[$config_name] >= 1024) ? round($new[$config_name] / 1024 * 100) / 100 : $new[$config_name]); } if ($submit && $config_name == $cfg_key) { $old = $new[$config_name]; $new[$config_name] = ($$var == 'kb') ? round($new[$config_name] * 1024) : (($$var == 'mb') ? round($new[$config_name] * 1048576) : $new[$config_name]); } } if ($submit) { set_config($config_name, $new[$config_name]); if (in_array($config_name, array('max_filesize', 'attachment_quota', 'max_filesize_pm'))) { $new[$config_name] = $old; } } } perform_site_list(); if ($submit) { add_log('admin', 'LOG_' . strtoupper($mode) . '_CONFIG'); // Check Settings test_upload($error, $new['upload_dir'], false); if (!sizeof($error)) { trigger_error($user->lang['CONFIG_UPDATED']); } } } 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') { $action = request_var('action', ''); $group_id = request_var('g', 0); if ($action != 'add' && $action != 'edit') { trigger_error('WRONG_MODE'); } if (!$group_id && $action == 'edit') { trigger_error('NO_EXT_GROUP_SPECIFIED'); } if ($group_id) { $sql = 'SELECT * FROM ' . EXTENSION_GROUPS_TABLE . " WHERE group_id = $group_id"; $result = $db->sql_query($sql); $ext_row = $db->sql_fetchrow($result); $db->sql_freeresult($result); } else { $ext_row = array(); } $group_name = request_var('group_name', ''); $new_group_name = ($action == 'add') ? $group_name : (($ext_row['group_name'] != $group_name) ? $group_name : ''); if (!$group_name) { $error[] = $user->lang['NO_EXT_GROUP_NAME']; } // Check New Group Name if ($new_group_name) { $sql = 'SELECT group_id FROM ' . EXTENSION_GROUPS_TABLE . " WHERE LOWER(group_name) = '" . strtolower($new_group_name) . "'"; $result = $db->sql_query($sql); if ($db->sql_fetchrow($result)) { $error[] = sprintf($user->lang['EXTENSION_GROUP_EXIST'], $new_group_name); } $db->sql_freeresult($result); } if (!sizeof($error)) { // Ok, build the update/insert array $upload_icon = request_var('upload_icon', 'no_image'); $size_select = request_var('size_select', 'b'); $forum_select = request_var('forum_select', false); $allowed_forums = isset($_REQUEST['allowed_forums']) ? array_map('intval', array_values($_REQUEST['allowed_forums'])) : array(); $allow_in_pm = isset($_REQUEST['allow_in_pm']) ? true : false; $max_filesize = request_var('max_filesize', 0); $max_filesize = ($size_select == 'kb') ? round($max_filesize * 1024) : (($size_select == 'mb') ? round($max_filesize * 1048576) : $max_filesize); if ($max_filesize == $config['max_filesize']) { $max_filesize = 0; } if (!sizeof($allowed_forums)) { $forum_select = false; } $group_ary = array( 'group_name' => $group_name, 'cat_id' => request_var('special_category', ATTACHMENT_CATEGORY_NONE), 'allow_group' => (isset($_REQUEST['allow_group'])) ? 1 : 0, 'download_mode' => request_var('download_mode', INLINE_LINK), 'upload_icon' => ($upload_icon == 'no_image') ? '' : $upload_icon, 'max_filesize' => $max_filesize, 'allowed_forums'=> ($forum_select) ? serialize($allowed_forums) : '', 'allow_in_pm' => ($allow_in_pm) ? 1 : 0 ); $sql = ($action == 'add') ? 'INSERT INTO ' . EXTENSION_GROUPS_TABLE . ' ' : 'UPDATE ' . EXTENSION_GROUPS_TABLE . ' SET '; $sql .= $db->sql_build_array((($action == 'add') ? 'INSERT' : 'UPDATE'), $group_ary); $sql .= ($action == 'edit') ? " WHERE group_id = $group_id" : ''; $db->sql_query($sql); if ($action == 'add') { $group_id = $db->sql_nextid(); } add_log('admin', 'LOG_ATTACH_EXTGROUP_' . strtoupper($action), $group_name); } $extension_list = isset($_REQUEST['extensions']) ? array_map('intval', array_values($_REQUEST['extensions'])) : array(); if ($action == 'edit' && sizeof($extension_list)) { $sql = 'UPDATE ' . EXTENSIONS_TABLE . " SET group_id = 0 WHERE group_id = $group_id"; $db->sql_query($sql); } if (sizeof($extension_list)) { $sql = 'UPDATE ' . EXTENSIONS_TABLE . " SET group_id = $group_id WHERE extension_id IN (" . implode(', ', $extension_list) . ")"; $db->sql_query($sql); } rewrite_extensions(); if (!sizeof($error)) { $notify[] = $user->lang['SUCCESS_EXTENSION_GROUP_' . strtoupper($action)]; } } ?>

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']]); } } unset($message_parser); } } if (sizeof($error)) { ?>

lang['WARNING']; ?>

', $error); ?>

lang['NOTIFY']; ?>

', $notify); ?>

'; foreach ($modes as $_mode) { $s_select_mode .= ''; } $s_select_mode .= ''; ?>
">
 
0 ORDER BY cat_id'; $result = $db->sql_query($sql); $s_assigned_groups = array(); while ($row = $db->sql_fetchrow($result)) { $s_assigned_groups[$row['cat_id']][] = $row['group_name']; } $db->sql_freeresult($result); $display_inlined_yes = ($new['img_display_inlined']) ? 'checked="checked"' : ''; $display_inlined_no = (!$new['img_display_inlined']) ? 'checked="checked"' : ''; $create_thumbnail_yes = ($new['img_create_thumbnail']) ? 'checked="checked"' : ''; $create_thumbnail_no = (!$new['img_create_thumbnail']) ? 'checked="checked"' : ''; $secure_downloads_yes = ($new['secure_downloads']) ? 'checked="checked"' : ''; $secure_downloads_no = (!$new['secure_downloads']) ? 'checked="checked"' : ''; $secure_allow_deny_yes = ($new['secure_allow_deny']) ? 'checked="checked"' : ''; $secure_allow_deny_no = (!$new['secure_allow_deny']) ? 'checked="checked"' : ''; $secure_allow_empty_referer_yes = ($new['secure_allow_empty_referer']) ? 'checked="checked"' : ''; $secure_allow_empty_referer_no = (!$new['secure_allow_empty_referer']) ? 'checked="checked"' : ''; ?>
lang[$l_title]; ?>
lang['UPLOAD_DIR']; ?>:
lang['UPLOAD_DIR_EXPLAIN']; ?>
lang['DISPLAY_ORDER']; ?>:
lang['DISPLAY_ORDER_EXPLAIN']; ?>
/> lang['DESCENDING']; ?>   /> lang['ASCENDING']; ?>
lang['ATTACH_QUOTA']; ?>:
lang['ATTACH_QUOTA_EXPLAIN']; ?>
lang['ATTACH_MAX_FILESIZE']; ?>:
lang['ATTACH_MAX_FILESIZE_EXPLAIN']; ?>
lang['ATTACH_MAX_PM_FILESIZE']; ?>:
lang['ATTACH_MAX_PM_FILESIZE_EXPLAIN']; ?>
lang['MAX_ATTACHMENTS'] ?>:
lang['MAX_ATTACHMENTS_PM'] ?>:
lang['SECURE_DOWNLOADS']; ?>:
lang['SECURE_DOWNLOADS_EXPLAIN']; ?>
/> lang['YES']; ?>   /> lang['NO']; ?>
lang['SECURE_ALLOW_DENY']; ?>:
lang['SECURE_ALLOW_DENY_EXPLAIN']; ?>
/> lang['ORDER_ALLOW_DENY']; ?>   /> lang['ORDER_DENY_ALLOW']; ?>
lang['SECURE_EMPTY_REFERER']; ?>:
lang['SECURE_EMPTY_REFERER_EXPLAIN']; ?>
/> lang['YES']; ?>   /> lang['NO']; ?>
lang['SETTINGS_CAT_IMAGES']; ?>
lang['ASSIGNED_GROUP']; ?>: lang['NONE']); ?>
lang['DISPLAY_INLINED']; ?>:
lang['DISPLAY_INLINED_EXPLAIN']; ?>
/> lang['YES']; ?>   /> lang['NO']; ?>
lang['CREATE_THUMBNAIL']; ?>:
lang['CREATE_THUMBNAIL_EXPLAIN']; ?>
/> lang['YES']; ?>   /> lang['NO']; ?>
lang['MIN_THUMB_FILESIZE']; ?>:
lang['MIN_THUMB_FILESIZE_EXPLAIN']; ?>
lang['BYTES']; ?>
lang['IMAGICK_PATH']; ?>:
lang['IMAGICK_PATH_EXPLAIN']; ?>
  [ ">lang['SEARCH_IMAGICK']; ?> ]
lang['MAX_IMAGE_SIZE']; ?>:
lang['MAX_IMAGE_SIZE_EXPLAIN']; ?>
px X px
lang['IMAGE_LINK_SIZE']; ?>:
lang['IMAGE_LINK_SIZE_EXPLAIN']; ?>
px X px
  
sql_query($sql); $defined_ips = ''; $ips = array(); while ($row = $db->sql_fetchrow($result)) { $value = ($row['site_ip']) ? $row['site_ip'] : $row['site_hostname']; if ($value) { $defined_ips .= '' . $value . ''; $ips[$row['site_id']] = $value; } } $db->sql_freeresult($result); if (!$new['secure_downloads']) { ?>
lang['SECURE_DOWNLOAD_NOTICE']; ?>

lang['DEFINE_' . $allow_deny . '_IPS']; ?>
lang['DOWNLOAD_ADD_IPS_EXPLAIN']; ?>
lang['IP_HOSTNAME']; ?>:
lang['EXCLUDE_FROM_' . $allow_deny . '_IP']; ?>:
lang['EXCLUDE_ENTERED_IP']; ?>
lang['YES']; ?>   lang['NO']; ?>
   
lang['REMOVE_' . $allow_deny . '_IPS']; ?>
lang['DOWNLOAD_REMOVE_IPS_EXPLAIN']; ?>
lang['IP_HOSTNAME']; ?>:
 
lang['NO_IPS_DEFINED']; ?>
$user->lang['NONE'], ATTACHMENT_CATEGORY_IMAGE => $user->lang['CAT_IMAGES'], ATTACHMENT_CATEGORY_WM => $user->lang['CAT_WM_FILES'], ATTACHMENT_CATEGORY_RM => $user->lang['CAT_RM_FILES'] ); $action = request_var('action', 'show'); $group_id = request_var('g', 0); $action = (isset($_REQUEST['add'])) ? 'add' : $action; $action = (($action == 'add' || $action == 'edit') && $submit && !sizeof($error)) ? 'show' : $action; if (isset($_REQUEST['select_mode'])) { $action = 'show'; } if ($action == 'delete') { $confirm = (isset($_POST['confirm'])) ? true : false; $cancel = (isset($_POST['cancel'])) ? true : false; if (!$cancel && !$confirm) { adm_page_confirm($user->lang['CONFIRM'], $user->lang['CONFIRM_OPERATION']); } else if ($confirm && !$cancel) { $sql = 'SELECT group_name FROM ' . EXTENSION_GROUPS_TABLE . " WHERE group_id = $group_id"; $result = $db->sql_query($sql); $group_name = $db->sql_fetchfield('group_name', 0, $result); $sql = 'DELETE FROM ' . EXTENSION_GROUPS_TABLE . " WHERE group_id = $group_id"; $db->sql_query($sql); // Set corresponding Extensions to a pending Group $sql = 'UPDATE ' . EXTENSIONS_TABLE . " SET group_id = 0 WHERE group_id = $group_id"; $db->sql_query($sql); add_log('admin', 'LOG_ATTACH_EXTGROUP_DEL', $group_name); rewrite_extensions(); trigger_error('EXTENSION_GROUP_DELETED'); } else { $action = 'show'; } } switch ($action) { case 'edit': if (!$group_id) { trigger_error('NO_EXTENSION_GROUP'); } $sql = 'SELECT * FROM ' . EXTENSION_GROUPS_TABLE . " WHERE group_id = $group_id"; $result = $db->sql_query($sql); extract($db->sql_fetchrow($result)); $db->sql_freeresult($result); $forum_ids = (!$allowed_forums) ? array() : unserialize(trim($allowed_forums)); case 'add': if ($action == 'add') { $group_name = request_var('group_name', ''); $cat_id = 0; $allow_group = 1; $allow_in_pm = 1; $download_mode = 1; $upload_icon = ''; $max_filesize = 0; $forum_ids = array(); } $extensions = array(); $sql = 'SELECT * FROM ' . EXTENSIONS_TABLE . " WHERE group_id = $group_id OR group_id = 0 ORDER BY extension"; $result = $db->sql_query($sql); $extensions = $db->sql_fetchrowset($result); $db->sql_freeresult($result); $img_path = $config['upload_icons_path']; $imglist = filelist($phpbb_root_path . $img_path); $imglist = array_values($imglist); $imglist = $imglist[0]; $filename_list = ''; foreach ($imglist as $key => $img) { $filename_list .= ''; } if ($max_filesize == 0) { $max_filesize = (int) $config['max_filesize']; } $size_format = ($max_filesize >= 1048576) ? 'mb' : (($max_filesize >= 1024) ? 'kb' : 'b'); $max_filesize = ($max_filesize >= 1048576) ? round($max_filesize / 1048576 * 100) / 100 : (($max_filesize >= 1024) ? round($max_filesize / 1024 * 100) / 100 : $max_filesize); $s_allowed = ($allow_group) ? ' checked="checked"' : ''; $s_in_pm_allowed = ($allow_in_pm) ? ' checked="checked"' : ''; $filename_list = ''; $no_image_select = false; foreach ($imglist as $key => $img) { if (!$upload_icon) { $no_image_select = true; $selected = ''; } else { $selected = ($upload_icon == $img) ? ' selected="selected"' : ''; } $filename_list .= ''; } // Show Edit Screen ?>
lang[strtoupper($action) . '_EXTENSION_GROUP']; ?>
lang['GROUP_NAME']; ?>:
lang['SPECIAL_CATEGORY']; ?>:
lang['SPECIAL_CATEGORY_EXPLAIN']; ?>
lang['ALLOWED']; ?>: />
lang['ALLOW_IN_PM']; ?>: />
lang['DOWNLOAD_MODE']; ?>:
lang['DOWNLOAD_MODE_EXPLAIN']; ?>
lang['UPLOAD_ICON']; ?>:
  
lang['MAX_EXTGROUP_FILESIZE']; ?>:
lang['ASSIGNED_EXTENSIONS']; ?>:
»  
  $row) { if ($row['group_id'] == $group_id && $group_id) { echo ($i) ? ', ' . $row['extension'] : $row['extension']; $i++; } } ?>
 
[ lang['GO_TO_EXTENSIONS']; ?> ]
lang['ALLOWED_FORUMS']; ?>:
lang['ALLOWED_FORUMS_EXPLAIN']; ?>
/> lang['ALLOW_ALL_FORUMS']; ?>   /> lang['ALLOW_SELECTED_FORUMS']; ?>

  
sql_query($sql); rewrite_extensions(); case 'show': $sql = 'SELECT * FROM ' . EXTENSION_GROUPS_TABLE . ' ORDER BY allow_group DESC, group_name'; $result = $db->sql_query($sql); ?> sql_fetchrow($result)) { $row_class = ($row_class == 'row1') ? 'row2' : 'row1'; if ($row['allow_group'] == 0 && $act_deact == 'deactivate') { ?> sql_freeresult($result); ?>
lang['EXTENSION_GROUP']; ?> lang['SPECIAL_CATEGORY']; ?> lang['OPTIONS']; ?>
"> ">lang[strtoupper($act_deact)]; ?> ">lang['EDIT']; ?> ">lang['DELETE']; ?>
lang['CREATE_GROUP']; ?>:
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'], ATTACHMENT_CATEGORY_IMAGE => $user->lang['CAT_IMAGES'], ATTACHMENT_CATEGORY_WM => $user->lang['CAT_WM_FILES'], ATTACHMENT_CATEGORY_RM => $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))) ? ATTACHMENT_CATEGORY_NONE : $row['cat_id']; $db->sql_freeresult($result); } else { $cat_type = ATTACHMENT_CATEGORY_NONE; } $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, $phpbb_root_path; $message_parser->attachment_data = array(); $message_parser->filename_data['filecomment'] = ''; $message_parser->filename_data['filename'] = $phpbb_root_path . $upload_dir . '/' . basename($filename); $filedata = upload_attachment($forum_id, $filename, true, $phpbb_root_path . $upload_dir . '/' . basename($filename)); if ($filedata['post_attach'] && !sizeof($filedata['error'])) { $message_parser->attachment_data = array( 'post_msg_id' => $post_id, 'poster_id' => $user->data['user_id'], 'topic_id' => $topic_id, 'in_message' => 0, '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'])) . '


'; } } // Search Imagick function search_imagemagick() { $imagick = ''; $exe = ((defined('PHP_OS')) && (preg_match('#win#i', PHP_OS))) ? '.exe' : ''; if (empty($_ENV['MAGICK_HOME'])) { $locations = array('C:/WINDOWS/', 'C:/WINNT/', 'C:/WINDOWS/SYSTEM/', 'C:/WINNT/SYSTEM/', 'C:/WINDOWS/SYSTEM32/', 'C:/WINNT/SYSTEM32/', '/usr/bin/', '/usr/sbin/', '/usr/local/bin/', '/usr/local/sbin/', '/opt/', '/usr/imagemagick/', '/usr/bin/imagemagick/'); foreach ($locations as $location) { if (@is_readable($location . 'mogrify' . $exe) && @filesize($location . 'mogrify' . $exe) > 3000) { $imagick = str_replace('\\', '/', $location); continue; } } } else { $imagick = str_replace('\\', '/', $_ENV['MAGICK_HOME']); } return $imagick; } // Test Settings function test_upload(&$error, $upload_dir, $create_directory = false) { global $user, $phpbb_root_path; // Does the target directory exist, is it a directory and writeable. if ($create_directory) { if (!file_exists($phpbb_root_path . $upload_dir)) { @mkdir($phpbb_root_path . $upload_dir, 0777); @chmod($phpbb_root_path . $upload_dir, 0777); } } if (!file_exists($phpbb_root_path . $upload_dir)) { $error[] = sprintf($user->lang['NO_UPLOAD_DIR'], $upload_dir); return; } if (!is_dir($phpbb_root_path . $upload_dir)) { $error[] = sprintf($user->lang['UPLOAD_NOT_DIR'], $upload_dir); return; } if (!is_writable($phpbb_root_path . $upload_dir)) { $error[] = sprintf($user->lang['NO_WRITE_UPLOAD'], $upload_dir); return; } } function perform_site_list() { global $db, $user; if (isset($_REQUEST['securesubmit'])) { // Grab the list of entries $ips = request_var('ips', ''); $ip_list = array_unique(explode("\n", $ips)); $ip_list_log = implode(', ', $ip_list); $ip_exclude = (!empty($_POST['ipexclude'])) ? 1 : 0; $iplist = array(); $hostlist = array(); foreach ($ip_list as $item) { if (preg_match('#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})[ ]*\-[ ]*([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#', trim($item), $ip_range_explode)) { // Don't ask about all this, just don't ask ... ! $ip_1_counter = $ip_range_explode[1]; $ip_1_end = $ip_range_explode[5]; while ($ip_1_counter <= $ip_1_end) { $ip_2_counter = ($ip_1_counter == $ip_range_explode[1]) ? $ip_range_explode[2] : 0; $ip_2_end = ($ip_1_counter < $ip_1_end) ? 254 : $ip_range_explode[6]; if($ip_2_counter == 0 && $ip_2_end == 254) { $ip_2_counter = 256; $ip_2_fragment = 256; $iplist[] = "'$ip_1_counter.*'"; } while ($ip_2_counter <= $ip_2_end) { $ip_3_counter = ($ip_2_counter == $ip_range_explode[2] && $ip_1_counter == $ip_range_explode[1]) ? $ip_range_explode[3] : 0; $ip_3_end = ($ip_2_counter < $ip_2_end || $ip_1_counter < $ip_1_end) ? 254 : $ip_range_explode[7]; if ($ip_3_counter == 0 && $ip_3_end == 254) { $ip_3_counter = 256; $ip_3_fragment = 256; $iplist[] = "'$ip_1_counter.$ip_2_counter.*'"; } while ($ip_3_counter <= $ip_3_end) { $ip_4_counter = ($ip_3_counter == $ip_range_explode[3] && $ip_2_counter == $ip_range_explode[2] && $ip_1_counter == $ip_range_explode[1]) ? $ip_range_explode[4] : 0; $ip_4_end = ($ip_3_counter < $ip_3_end || $ip_2_counter < $ip_2_end) ? 254 : $ip_range_explode[8]; if ($ip_4_counter == 0 && $ip_4_end == 254) { $ip_4_counter = 256; $ip_4_fragment = 256; $iplist[] = "'$ip_1_counter.$ip_2_counter.$ip_3_counter.*'"; } while ($ip_4_counter <= $ip_4_end) { $iplist[] = "'$ip_1_counter.$ip_2_counter.$ip_3_counter.$ip_4_counter'"; $ip_4_counter++; } $ip_3_counter++; } $ip_2_counter++; } $ip_1_counter++; } } else if (preg_match('#^([0-9]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})$#', trim($item)) || preg_match('#^[a-f0-9:]+\*?$#i', trim($item))) { $iplist[] = "'" . trim($item) . "'"; } else if (preg_match('#^([\w\-_]\.?){2,}$#is', trim($item))) { $hostlist[] = "'" . trim($item) . "'"; } else if (preg_match("#^([a-z0-9\-\*\._/]+?)$#is", trim($item))) { $hostlist[] = "'" . trim($item) . "'"; } } $sql = 'SELECT site_ip, site_hostname FROM ' . SITELIST_TABLE . " WHERE ip_exclude = $ip_exclude"; $result = $db->sql_query($sql); if ($row = $db->sql_fetchrow($result)) { $iplist_tmp = array(); $hostlist_tmp = array(); do { if ($row['site_ip']) { $iplist_tmp[] = "'" . $row['site_ip'] . "'"; } else if ($row['site_hostname']) { $hostlist_tmp[] = "'" . $row['site_hostname'] . "'"; } break; } while ($row = $db->sql_fetchrow($result)); $iplist = array_unique(array_diff($iplist, $iplist_tmp)); $hostlist = array_unique(array_diff($hostlist, $hostlist_tmp)); unset($iplist_tmp); unset($hostlist_tmp); } if (sizeof($iplist)) { foreach ($iplist as $ip_entry) { $sql = 'INSERT INTO ' . SITELIST_TABLE . " (site_ip, ip_exclude) VALUES ($ip_entry, $ip_exclude)"; $db->sql_query($sql); } } if (sizeof($hostlist)) { foreach ($hostlist as $host_entry) { $sql = 'INSERT INTO ' . SITELIST_TABLE . " (site_hostname, ip_exclude) VALUES ($host_entry, $ip_exclude)"; $db->sql_query($sql); } } if (!empty($ip_list_log)) { // Update log $log_entry = ($ip_exclude) ? 'LOG_DOWNLOAD_EXCLUDE_IP' : 'LOG_DOWNLOAD_IP'; add_log('admin', $log_entry, $ip_list_log); } trigger_error($user->lang['SECURE_DOWNLOAD_UPDATE_SUCCESS']); } else if (isset($_POST['unsecuresubmit'])) { $unip_sql = implode(', ', array_map('intval', $_POST['unip'])); if ($unip_sql != '') { $l_unip_list = ''; // Grab details of ips for logging information later $sql = 'SELECT site_ip, site_hostname FROM ' . SITELIST_TABLE . " WHERE site_id IN ($unip_sql)"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $l_unip_list .= (($l_unip_list != '') ? ', ' : '') . (($row['site_ip']) ? $row['site_ip'] : $row['site_hostname']); } $sql = 'DELETE FROM ' . SITELIST_TABLE . " WHERE site_id IN ($unip_sql)"; $db->sql_query($sql); add_log('admin', 'LOG_DOWNLOAD_REMOVE_IP', $l_unip_list); } trigger_error($user->lang['SECURE_DOWNLOAD_UPDATE_SUCCESS']); } } // Re-Write extensions cache file function rewrite_extensions() { global $db, $cache; $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[$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']; $allowed_forums = ($row['allowed_forums']) ? unserialize(trim($row['allowed_forums'])) : array(); if ($row['allow_in_pm']) { $allowed_forums = array_merge($allowed_forums, array(0)); } // Store allowed extensions forum wise $extensions['_allowed_'][$extension] = (!sizeof($allowed_forums)) ? 0 : $allowed_forums; } $db->sql_freeresult($result); $cache->destroy('extensions'); $cache->put('extensions', $extensions); } ?>