admin_attachments.php
来自「这是php编的论坛的原代码」· PHP 代码 · 共 1,428 行 · 第 1/3 页
PHP
1,428 行
'L_ATTACHMENT_FILESIZE_SETTINGS' => $lang['Attach_filesize_settings'],
'L_ATTACHMENT_NUMBER_SETTINGS' => $lang['Attach_number_settings'],
'L_ATTACHMENT_OPTIONS_SETTINGS' => $lang['Attach_options_settings'],
'L_ATTACHMENT_FTP_SETTINGS' => $lang['ftp_info'],
'L_NO_FTP_EXTENSIONS' => $lang['No_ftp_extensions_installed'],
'L_UPLOAD_DIR' => $lang['Upload_directory'],
'L_UPLOAD_DIR_EXPLAIN' => $lang['Upload_directory_explain'],
'L_ATTACHMENT_IMG_PATH' => $lang['Attach_img_path'],
'L_IMG_PATH_EXPLAIN' => $lang['Attach_img_path_explain'],
'L_ATTACHMENT_TOPIC_ICON' => $lang['Attach_topic_icon'],
'L_TOPIC_ICON_EXPLAIN' => $lang['Attach_topic_icon_explain'],
'L_DISPLAY_ORDER' => $lang['Attach_display_order'],
'L_DISPLAY_ORDER_EXPLAIN' => $lang['Attach_display_order_explain'],
'L_YES' => $lang['Yes'],
'L_NO' => $lang['No'],
'L_DESC' => $lang['Sort_Descending'],
'L_ASC' => $lang['Sort_Ascending'],
'L_SUBMIT' => $lang['Submit'],
'L_RESET' => $lang['Reset'],
'L_MAX_FILESIZE' => $lang['Max_filesize_attach'],
'L_MAX_FILESIZE_EXPLAIN' => $lang['Max_filesize_attach_explain'],
'L_ATTACH_QUOTA' => $lang['Attach_quota'],
'L_ATTACH_QUOTA_EXPLAIN' => $lang['Attach_quota_explain'],
'L_DEFAULT_QUOTA_LIMIT' => $lang['Default_quota_limit'],
'L_DEFAULT_QUOTA_LIMIT_EXPLAIN' => $lang['Default_quota_limit_explain'],
'L_MAX_FILESIZE_PM' => $lang['Max_filesize_pm'],
'L_MAX_FILESIZE_PM_EXPLAIN' => $lang['Max_filesize_pm_explain'],
'L_MAX_ATTACHMENTS' => $lang['Max_attachments'],
'L_MAX_ATTACHMENTS_EXPLAIN' => $lang['Max_attachments_explain'],
'L_MAX_ATTACHMENTS_PM' => $lang['Max_attachments_pm'],
'L_MAX_ATTACHMENTS_PM_EXPLAIN' => $lang['Max_attachments_pm_explain'],
'L_DISABLE_MOD' => $lang['Disable_mod'],
'L_DISABLE_MOD_EXPLAIN' => $lang['Disable_mod_explain'],
'L_PM_ATTACH' => $lang['PM_Attachments'],
'L_PM_ATTACH_EXPLAIN' => $lang['PM_Attachments_explain'],
'L_FTP_UPLOAD' => $lang['Ftp_upload'],
'L_FTP_UPLOAD_EXPLAIN' => $lang['Ftp_upload_explain'],
'L_ATTACHMENT_TOPIC_REVIEW' => $lang['Attachment_topic_review'],
'L_ATTACHMENT_TOPIC_REVIEW_EXPLAIN' => $lang['Attachment_topic_review_explain'],
'L_ATTACHMENT_FTP_PATH' => $lang['Attach_ftp_path'],
'L_ATTACHMENT_FTP_USER' => $lang['ftp_username'],
'L_ATTACHMENT_FTP_PASS' => $lang['ftp_password'],
'L_ATTACHMENT_FTP_PATH_EXPLAIN' => $lang['Attach_ftp_path_explain'],
'L_ATTACHMENT_FTP_SERVER' => $lang['Ftp_server'],
'L_ATTACHMENT_FTP_SERVER_EXPLAIN' => $lang['Ftp_server_explain'],
'L_FTP_PASSIVE_MODE' => $lang['Ftp_passive_mode'],
'L_FTP_PASSIVE_MODE_EXPLAIN' => $lang['Ftp_passive_mode_explain'],
'L_DOWNLOAD_PATH' => $lang['Ftp_download_path'],
'L_DOWNLOAD_PATH_EXPLAIN' => $lang['Ftp_download_path_explain'],
'L_SHOW_APCP' => $lang['Show_apcp'],
'L_SHOW_APCP_EXPLAIN' => $lang['Show_apcp_explain'],
'L_TEST_SETTINGS' => $lang['Test_settings'],
'S_ATTACH_ACTION' => append_sid('admin_attachments.' . $phpEx . '?mode=manage'),
'S_FILESIZE' => $select_size_mode,
'S_FILESIZE_QUOTA' => $select_quota_size_mode,
'S_FILESIZE_PM' => $select_pm_size_mode,
'S_DEFAULT_UPLOAD_LIMIT' => default_quota_limit_select('default_upload_quota', intval(trim($new_attach['default_upload_quota']))),
'S_DEFAULT_PM_LIMIT' => default_quota_limit_select('default_pm_quota', intval(trim($new_attach['default_pm_quota']))),
'L_UPLOAD_QUOTA' => $lang['Upload_quota'],
'L_PM_QUOTA' => $lang['Pm_quota'],
'UPLOAD_DIR' => $new_attach['upload_dir'],
'ATTACHMENT_IMG_PATH' => $new_attach['upload_img'],
'TOPIC_ICON' => $new_attach['topic_icon'],
'MAX_FILESIZE' => $new_attach['max_filesize'],
'ATTACHMENT_QUOTA' => $new_attach['attachment_quota'],
'MAX_FILESIZE_PM' => $new_attach['max_filesize_pm'],
'MAX_ATTACHMENTS' => $new_attach['max_attachments'],
'MAX_ATTACHMENTS_PM' => $new_attach['max_attachments_pm'],
'FTP_SERVER' => $new_attach['ftp_server'],
'FTP_PATH' => $new_attach['ftp_path'],
'FTP_USER' => $new_attach['ftp_user'],
'FTP_PASS' => $new_attach['ftp_pass'],
'DOWNLOAD_PATH' => $new_attach['download_path'],
'DISABLE_MOD_YES' => $disable_mod_yes,
'DISABLE_MOD_NO' => $disable_mod_no,
'PM_ATTACH_YES' => $allow_pm_attach_yes,
'PM_ATTACH_NO' => $allow_pm_attach_no,
'FTP_UPLOAD_YES' => $allow_ftp_upload_yes,
'FTP_UPLOAD_NO' => $allow_ftp_upload_no,
'FTP_PASV_MODE_YES' => $ftp_pasv_mode_yes,
'FTP_PASV_MODE_NO' => $ftp_pasv_mode_no,
'TOPIC_REVIEW_YES' => $attachment_topic_review_yes,
'TOPIC_REVIEW_NO' => $attachment_topic_review_no,
'DISPLAY_ORDER_ASC' => $display_order_yes,
'DISPLAY_ORDER_DESC' => $display_order_no,
'SHOW_APCP_YES' => $show_apcp_yes,
'SHOW_APCP_NO' => $show_apcp_no)
);
}
//
// Shadow Attachments
//
if ($submit && $mode == 'shadow')
{
//
// Delete Attachments from file system...
//
$attach_file_list = ( isset($HTTP_POST_VARS['attach_file_list']) ) ? $HTTP_POST_VARS['attach_file_list'] : array();
for ($i = 0; $i < count($attach_file_list); $i++)
{
unlink_attach($attach_file_list[$i]);
}
//
// Delete Attachments from table...
//
$attach_id_list = ( isset($HTTP_POST_VARS['attach_id_list']) ) ? $HTTP_POST_VARS['attach_id_list'] : array();
$attach_id_sql = implode(', ', $attach_id_list);
if( $attach_id_sql != '' )
{
$sql = 'DELETE
FROM ' . ATTACHMENTS_DESC_TABLE . '
WHERE attach_id IN (' . $attach_id_sql . ')';
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete attachment entries', '', __LINE__, __FILE__, $sql);
}
$sql = 'DELETE
FROM ' . ATTACHMENTS_TABLE . '
WHERE attach_id IN (' . $attach_id_sql . ')';
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not delete attachment entries', '', __LINE__, __FILE__, $sql);
}
}
$message = $lang['Attach_config_updated'] . '<br /><br />' . sprintf($lang['Click_return_attach_config'], '<a href="' . append_sid("admin_attachments.$phpEx?mode=shadow") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
message_die(GENERAL_MESSAGE, $message);
}
if ($mode == 'shadow')
{
@set_time_limit(0);
//
// Shadow Attachments
//
$template->set_filenames(array(
'body' => 'admin/attach_shadow.tpl')
);
$shadow_attachments = array();
$shadow_row = array();
$template->assign_vars(array(
'L_SHADOW_TITLE' => $lang['Shadow_attachments'],
'L_SHADOW_EXPLAIN' => $lang['Shadow_attachments_explain'],
'L_EXPLAIN_FILE' => $lang['Shadow_attachments_file_explain'],
'L_EXPLAIN_ROW' => $lang['Shadow_attachments_row_explain'],
'L_ATTACHMENT' => $lang['Attachment'],
'L_COMMENT' => $lang['File_comment'],
'L_DELETE' => $lang['Delete'],
'L_DELETE_MARKED' => $lang['Delete_marked'],
'L_MARK_ALL' => $lang['Mark_all'],
'L_UNMARK_ALL' => $lang['Unmark_all'],
'S_HIDDEN' => $hidden,
'S_ATTACH_ACTION' => append_sid('admin_attachments.' . $phpEx . '?mode=shadow'))
);
$table_attachments = array();
$assign_attachments = array();
$file_attachments = array();
//
// collect all attachments in attach-table
//
$sql = "SELECT attach_id, physical_filename, comment
FROM " . ATTACHMENTS_DESC_TABLE . "
ORDER BY attach_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get attachment informations', '', __LINE__, __FILE__, $sql);
}
$i = 0;
while ($row = $db->sql_fetchrow($result))
{
$table_attachments['attach_id'][$i] = $row['attach_id'];
$table_attachments['physical_filename'][$i] = trim($row['physical_filename']);
$table_attachments['comment'][$i] = $row['comment'];
$i++;
}
$sql = "SELECT attach_id
FROM " . ATTACHMENTS_TABLE . "
GROUP BY attach_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get attachment informations', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$assign_attachments[] = intval($row['attach_id']);
}
//
// collect all attachments on file-system
//
$file_attachments = collect_attachments();
$shadow_attachments = array();
$shadow_row = array();
//
// Now determine the needed Informations
//
// Go through all Files on the filespace and see if all are stored within the DB
for ($i = 0; $i < count($file_attachments); $i++)
{
if (count($table_attachments['attach_id']) > 0)
{
if ($file_attachments[$i] != '')
{
if (!in_array(trim($file_attachments[$i]), $table_attachments['physical_filename']) )
{
$shadow_attachments[] = trim($file_attachments[$i]);
// Delete this file from the file_attachments to not have double assignments in next steps
$file_attachments[$i] = '';
}
}
}
else
{
if ($file_attachments[$i] != '')
{
$shadow_attachments[] = trim($file_attachments[$i]);
// Delete this file from the file_attachments to not have double assignments in next steps
$file_attachments[$i] = '';
}
}
}
// Go through the Database and get those Files not stored at the Filespace
for ($i = 0; $i < count($table_attachments['attach_id']); $i++)
{
if ($table_attachments['physical_filename'][$i] != '')
{
if ( !in_array(trim($table_attachments['physical_filename'][$i]), $file_attachments))
{
$shadow_row['attach_id'][] = $table_attachments['attach_id'][$i];
$shadow_row['physical_filename'][] = trim($table_attachments['physical_filename'][$i]);
$shadow_row['comment'][] = $table_attachments['comment'][$i];
// Delete this entry from the table_attachments, to not interfere with the next step
$table_attachments['attach_id'][$i] = -1;
$table_attachments['physical_filename'][$i] = '';
$table_attachments['comment'][$i] = '';
}
}
}
// Now look at the missing posts and PM's
for ($i = 0; $i < count($table_attachments['attach_id']); $i++)
{
if ($table_attachments['attach_id'][$i] != -1)
{
if (!entry_exists($table_attachments['attach_id'][$i]))
{
$shadow_row['attach_id'][] = $table_attachments['attach_id'][$i];
$shadow_row['physical_filename'][] = trim($table_attachments['physical_filename'][$i]);
$shadow_row['comment'][] = $table_attachments['comment'][$i];
}
}
}
// Now look for Attachment ID's defined for posts or topics but not defined at the Attachments Description Table
for ($i = 0; $i < count($assign_attachments); $i++)
{
if (!in_array($assign_attachments[$i], $table_attachments['attach_id']))
{
$shadow_row['attach_id'][] = $assign_attachments[$i];
$shadow_row['physical_filename'][] = $lang['Empty_file_entry'];
$shadow_row['comment'][] = $lang['Empty_file_entry'];
}
}
for ($i = 0; $i < count($shadow_attachments); $i++)
{
$template->assign_block_vars('file_shadow_row', array(
'ATTACH_ID' => $shadow_attachments[$i],
'ATTACH_FILENAME' => $shadow_attachments[$i],
'ATTACH_COMMENT' => $lang['No_file_comment_available'],
'U_ATTACHMENT' => $upload_dir . '/' . $shadow_attachments[$i])
);
}
for ($i = 0; $i < count($shadow_row['attach_id']); $i++)
{
$template->assign_block_vars('table_shadow_row', array(
'ATTACH_ID' => $shadow_row['attach_id'][$i],
'ATTACH_FILENAME' => $shadow_row['physical_filename'][$i],
'ATTACH_COMMENT' => ( trim($shadow_row['comment'][$i]) == '' ) ? $lang['No_file_comment_available'] : trim($shadow_row['comment'][$i]))
);
}
}
if ($submit && $mode == 'cats')
{
if (!$error)
{
message_die(GENERAL_MESSAGE, $lang['Attach_config_updated'] . '<br /><br />' . sprintf($lang['Click_return_attach_config'], '<a href="' . append_sid("admin_attachments.$phpEx?mode=cats") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>'));
}
}
if ($mode == 'cats')
{
$template->set_filenames(array(
'body' => 'admin/attach_cat_body.tpl')
);
$s_assigned_group_images = $lang['None'];
$s_assigned_group_streams = $lang['None'];
$s_assigned_group_flash = $lang['None'];
$sql = "SELECT group_name, cat_id
FROM " . EXTENSION_GROUPS_TABLE . "
WHERE cat_id > 0
ORDER BY cat_id";
$s_assigned_group_images = array();
$s_assigned_group_streams = array();
$s_assigned_group_flash = array();
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get Group Names from ' . EXTENSION_GROUPS_TABLE, '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrowset($result);
for ($i = 0; $i < count($row); $i++)
{
if ($row[$i]['cat_id'] == IMAGE_CAT)
{
$s_assigned_group_images[] = $row[$i]['group_name'];
}
else if ($row[$i]['cat_id'] == STREAM_CAT)
{
$s_assigned_group_streams[] = $row[$i]['group_name'];
}
else if ($row[$i]['cat_id'] == SWF_CAT)
{
$s_assigned_group_flash[] = $row[$i]['group_name'];
}
}
$display_inlined_yes = ( $new_attach['img_display_inlined'] != '0' ) ? 'checked="checked"' : '';
$display_inlined_no = ( $new_attach['img_display_inlined'] == '0' ) ? 'checked="checked"' : '';
$create_thumbnail_yes = ( $new_attach['img_create_thumbnail'] != '0' ) ? 'checked="checked"' : '';
$create_thumbnail_no = ( $new_attach['img_create_thumbnail'] == '0' ) ? 'checked="checked"' : '';
//
// Check Thumbnail Support
//
if ( (!is_imagick()) && (count(get_supported_image_types()) == 0) )
{
$new_attach['img_create_thumbnail'] = '0';
}
else
{
$template->assign_block_vars('switch_thumbnail_support', array());
}
$template->assign_vars(array(
'L_MANAGE_CAT_TITLE' => $lang['Manage_categories'],
'L_MANAGE_CAT_EXPLAIN' => $lang['Manage_categories_explain'],
'L_SETTINGS_CAT_IMAGES' => $lang['Settings_cat_images'],
'L_SETTINGS_CAT_STREAM' => $lang['Settings_cat_streams'],
'L_SETTINGS_CAT_FLASH' => $lang['Settings_cat_flash'],
'L_ASSIGNED_GROUP' => $lang['Assigned_group'],
'L_DISPLAY_INLINED' => $lang['Display_inlined'],
'L_DISPLAY_INLINED_EXPLAIN' => $lang['Display_inlined_explain'],
'L_MAX_IMAGE_SIZE' => $lang['Max_image_size'],
'L_MAX_IMAGE_SIZE_EXPLAIN' => $lang['Max_image_size_explain'],
'L_IMAGE_LINK_SIZE' => $lang['Image_link_size'],
'L_IMAGE_LINK_SIZE_EXPLAIN' => $lang['Image_link_size_explain'],
'L_CREATE_THUMBNAIL' => $lang['Image_create_thumbnail'],
'L_CREATE_THUMBNAIL_EXPLAIN' => $lang['Image_create_thumbnail_explain'],
'L_MIN_THUMB_FILESIZE' => $lang['Image_min_thumb_filesize'],
'L_MIN_THUMB_FILESIZE_EXPLAIN' => $lang['Image_min_thumb_filesize_explain'],
'L_IMAGICK_PATH' => $lang['Image_imagick_path'],
'L_IMAGICK_PATH_EXPLAIN' => $lang['Image_imagick_path_explain'],
'L_SEARCH_IMAGICK' => $lang['Image_search_imagick'],
'L_BYTES' => $lang['Bytes'],
'L_TEST_SETTINGS' => $lang['Test_settings'],
'L_YES' => $lang['Yes'],
'L_NO' => $lang['No'],
'L_SUBMIT' => $lang['Submit'],
'L_RESET' => $lang['Reset'],
'IMAGE_MAX_HEIGHT' => $new_attach['img_max_height'],
'IMAGE_MAX_WIDTH' => $new_attach['img_max_width'],
'IMAGE_LINK_HEIGHT' => $new_attach['img_link_height'],
'IMAGE_LINK_WIDTH' => $new_attach['img_link_width'],
'IMAGE_MIN_THUMB_FILESIZE' => $new_attach['img_min_thumb_filesize'],
'IMAGE_IMAGICK_PATH' => $new_attach['img_imagick'],
'DISPLAY_INLINED_YES' => $display_inlined_yes,
'DISPLAY_INLINED_NO' => $display_inlined_no,
'CREATE_THUMBNAIL_YES' => $create_thumbnail_yes,
'CREATE_THUMBNAIL_NO' => $create_thumbnail_no,
'S_ASSIGNED_GROUP_IMAGES' => implode(', ', $s_assigned_group_images),
'S_ATTACH_ACTION' => append_sid('admin_attachments.' . $phpEx . '?mode=cats'))
);
}
//
// Check Cat Settings
//
if ($check_image_cat)
{
//
// Some tests...
//
$attach_config = array();
$sql = 'SELECT *
FROM ' . ATTACH_CONFIG_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not find Attachment Config Table', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrowset($result);
$num_rows = $db->sql_numrows($result);
for ($i = 0; $i < $num_rows; $i++)
{
$attach_config[$row[$i]['config_name']] = trim($row[$i]['config_value']);
}
if ( ($attach_config['upload_dir'][0] == '/') || ( ($attach_config['upload_dir'][0] != '/') && ($attach_config['upload_dir'][1] == ':') ) )
{
$upload_dir = $attach_config['upload_dir'];
}
else
{
$upload_dir = '../' . $attach_config['upload_dir'];
}
$upload_dir = $upload_dir . '/' . THUMB_DIR;
$error = FALSE;
//
// Does the target directory exist, is it a directory and writeable. (only test if ftp upload is disabled)
//
if ( (intval($attach_config['allow_ftp_upload']) == 0) && (intval($attach_config['img_create_thumbnail']) == 1) )
{
if ( !@file_exists(@amod_realpath($upload_dir)) )
{
@mkdir($upload_dir, 0755);
@chmod($upload_dir, 0777);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?