Diff
checker
文本
文本
图像
文档
Excel
文件夹
Legal
Enterprise
桌面版
定价
登录
下载 Diffchecker 桌面版
比较文本
查找两个文本文件之间的差异
工具
历史
实时编辑器
折叠未更改行
关闭换行
视图
拆分
统一
比对精度
智能
单词
字符
语法高亮
选择语法
忽略
文本转换
转到第一个差异
编辑输入
Diffchecker Desktop
运行Diffchecker最安全的方式。获取Diffchecker桌面应用:您的差异永远不会离开您的电脑!
获取桌面版
Untitled diff
创建于
11年前
差异永不过期
清除
导出
分享
解释
11 删除
行
总计
删除
字符
总计
删除
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
519 行
全部复制
33 添加
行
总计
添加
字符
总计
添加
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
535 行
全部复制
<?php
<?php
/**
/**
*
*
* @package phpBB3
* @package phpBB3
* @version $Id$
* @version $Id$
* @copyright (c) 2011 Ariaswari
* @copyright (c) 2011 Ariaswari
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*
*/
*/
/**
/**
* @ignore
* @ignore
*/
*/
if (!defined('IN_PHPBB'))
if (!defined('IN_PHPBB'))
{
{
exit;
exit;
}
}
// include standard classes of form generator
// include standard classes of form generator
require_once $phpbb_root_path . 'includes/form/form.' . $phpEx;
require_once $phpbb_root_path . 'includes/form/form.' . $phpEx;
require_once $phpbb_root_path . 'includes/form/field.' . $phpEx;
require_once $phpbb_root_path . 'includes/form/field.' . $phpEx;
require_once $phpbb_root_path . 'includes/form/form_tpl.' . $phpEx;
require_once $phpbb_root_path . 'includes/form/form_tpl.' . $phpEx;
/**
/**
* regroups general functions concerning forms generator mod
* regroups general functions concerning forms generator mod
* this class can not be instanced, only static methods/properties
* this class can not be instanced, only static methods/properties
*/
*/
abstract class form_generator
abstract class form_generator
{
{
/**
/**
* return all existing forms into an array of form
* return all existing forms into an array of form
*/
*/
public static function get_forms()
public static function get_forms()
{
{
global $db;
global $db;
$sql = 'SELECT *
$sql = 'SELECT *
FROM ' . FORMS_TABLE;
FROM ' . FORMS_TABLE;
$result = $db->sql_query($sql);
$result = $db->sql_query($sql);
$forms = array();
$forms = array();
while ($row = $db->sql_fetchrow($result))
while ($row = $db->sql_fetchrow($result))
{
{
$forms[] = new form($row);
$forms[] = new form($row);
}
}
return $forms;
return $forms;
}
}
/**
/**
* return a specific form
* return a specific form
*/
*/
public static function get_form($form_id, $check_disable = false, $check_reply = false)
public static function get_form($form_id, $check_disable = false, $check_reply = false)
{
{
global $db;
global $db;
if (!$form_id)
if (!$form_id)
{
{
return false;
return false;
}
}
$sql = 'SELECT *
$sql = 'SELECT *
FROM ' . FORMS_TABLE . "
FROM ' . FORMS_TABLE . "
WHERE form_id = $form_id";
WHERE form_id = $form_id";
$sql .= ($check_disable) ? ' AND form_enabled = 1' : '';
$sql .= ($check_disable) ? ' AND form_enabled = 1' : '';
$sql .= ($check_reply) ? ' AND form_reply = 1' : '';
$sql .= ($check_reply) ? ' AND form_reply = 1' : '';
$result = $db->sql_query($sql);
$result = $db->sql_query($sql);
if (!$row = $db->sql_fetchrow($result))
if (!$row = $db->sql_fetchrow($result))
{
{
return false;
return false;
}
}
return new form($row);
return new form($row);
}
}
/**
/**
* return a specific field
* return a specific field
*/
*/
public static function get_field($field_id)
public static function get_field($field_id)
{
{
global $db;
global $db;
if (!$field_id)
if (!$field_id)
{
{
return false;
return false;
}
}
$sql = 'SELECT *
$sql = 'SELECT *
FROM ' . FORMS_FIELDS_TABLE . "
FROM ' . FORMS_FIELDS_TABLE . "
WHERE field_id = $field_id";
WHERE field_id = $field_id";
$result = $db->sql_query($sql);
$result = $db->sql_query($sql);
if (!$row = $db->sql_fetchrow($result))
if (!$row = $db->sql_fetchrow($result))
{
{
return false;
return false;
}
}
return self::new_field($row);
return self::new_field($row);
}
}
/**
/**
* created a new field (depending on its type)
* created a new field (depending on its type)
*/
*/
public static function new_field($field_data)
public static function new_field($field_data)
{
{
// if the type and the class exists, create new field
// if the type and the class exists, create new field
if (!empty($field_data['field_type']) && class_exists($field_data['field_type']))
if (!empty($field_data['field_type']) && class_exists($field_data['field_type']))
{
{
return new $field_data['field_type']($field_data);
return new $field_data['field_type']($field_data);
}
}
return false;
return false;
}
}
/**
/**
* generate list of field types
* generate list of field types
*/
*/
public static function select_fields($selected = false, $disabled = false)
public static function select_fields($selected = false, $disabled = false)
{
{
$s_fields = '<select name="field_type" id="field_type"' . (($disabled) ? ' disabled="disabled"' : '') . '>';
$s_fields = '<select name="field_type" id="field_type"' . (($disabled) ? ' disabled="disabled"' : '') . '>';
// generate html
// generate html
foreach (get_declared_classes() as $class)
foreach (get_declared_classes() as $class)
{
{
// create a field of each type
// create a field of each type
if (is_subclass_of($class, 'field'))
if (is_subclass_of($class, 'field'))
{
{
$field = new $class();
$field = new $class();
$select = ($selected && $class == $selected) ? ' selected="selected"' : '';
$select = ($selected && $class == $selected) ? ' selected="selected"' : '';
$s_fields .= '<option value="' . $class . '"' . $select . '>' . $field->get_name() . '</option>';
$s_fields .= '<option value="' . $class . '"' . $select . '>' . $field->get_name() . '</option>';
}
}
}
}
$s_fields .= '</select>';
$s_fields .= '</select>';
return $s_fields;
return $s_fields;
}
}
/**
/**
* generate list of form template
* generate list of form template
*/
*/
public static function select_form_tpl($selected = false)
public static function select_form_tpl($selected = false)
{
{
$s_tpl = '<select name="form_template" id="form_template">';
$s_tpl = '<select name="form_template" id="form_template">';
// generate html
// generate html
foreach (get_declared_classes() as $class)
foreach (get_declared_classes() as $class)
{
{
// create a field of each type
// create a field of each type
if (is_subclass_of($class, 'form_tpl'))
if (is_subclass_of($class, 'form_tpl'))
{
{
$tpl = new $class();
$tpl = new $class();
$select = ($selected && $class == $selected) ? ' selected="selected"' : '';
$select = ($selected && $class == $selected) ? ' selected="selected"' : '';
$s_tpl .= '<option value="' . $class . '"' . $select . '>' . $tpl->get_name() . '</option>';
$s_tpl .= '<option value="' . $class . '"' . $select . '>' . $tpl->get_name() . '</option>';
}
}
}
}
$s_tpl .= '</select>';
$s_tpl .= '</select>';
return $s_tpl;
return $s_tpl;
}
}
/**
/**
* generate list of groups
* generate list of groups
* function copied from includes/functions_admin.php which manages multiple selections
* function copied from includes/functions_admin.php which manages multiple selections
*/
*/
public static function group_select_options($group_id, $exclude_ids = false, $manage_founder = false)
public static function group_select_options($group_id, $exclude_ids = false, $manage_founder = false)
{
{
global $db, $user, $config;
global $db, $user, $config;
$exclude_sql = ($exclude_ids !== false && sizeof($exclude_ids)) ? 'WHERE ' . $db->sql_in_set('group_id', array_map('intval', $exclude_ids), true) : '';
$exclude_sql = ($exclude_ids !== false && sizeof($exclude_ids)) ? 'WHERE ' . $db->sql_in_set('group_id', array_map('intval', $exclude_ids), true) : '';
$sql_and = (!$config['coppa_enable']) ? (($exclude_sql) ? ' AND ' : ' WHERE ') . "group_name <> 'REGISTERED_COPPA'" : '';
$sql_and = (!$config['coppa_enable']) ? (($exclude_sql) ? ' AND ' : ' WHERE ') . "group_name <> 'REGISTERED_COPPA'" : '';
$sql_founder = ($manage_founder !== false) ? (($exclude_sql || $sql_and) ? ' AND ' : ' WHERE ') . 'group_founder_manage = ' . (int) $manage_founder : '';
$sql_founder = ($manage_founder !== false) ? (($exclude_sql || $sql_and) ? ' AND ' : ' WHERE ') . 'group_founder_manage = ' . (int) $manage_founder : '';
$sql = 'SELECT group_id, group_name, group_type
$sql = 'SELECT group_id, group_name, group_type
FROM ' . GROUPS_TABLE . "
FROM ' . GROUPS_TABLE . "
$exclude_sql
$exclude_sql
$sql_and
$sql_and
$sql_founder
$sql_founder
ORDER BY group_type DESC, group_name ASC";
ORDER BY group_type DESC, group_name ASC";
$result = $db->sql_query($sql);
$result = $db->sql_query($sql);
$s_group_options = '';
$s_group_options = '';
while ($row = $db->sql_fetchrow($result))
while ($row = $db->sql_fetchrow($result))
{
{
$selected = ((is_array($group_id) && in_array($row['group_id'], $group_id)) || $row['group_id'] == $group_id) ? ' selected="selected"' : '';
$selected = ((is_array($group_id) && in_array($row['group_id'], $group_id)) || $row['group_id'] == $group_id) ? ' selected="selected"' : '';
$s_group_options .= '<option' . (($row['group_type'] == GROUP_SPECIAL) ? ' class="sep"' : '') . ' value="' . $row['group_id'] . '"' . $selected . '>' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</option>';
$s_group_options .= '<option' . (($row['group_type'] == GROUP_SPECIAL) ? ' class="sep"' : '') . ' value="' . $row['group_id'] . '"' . $selected . '>' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</option>';
}
}
$db->sql_freeresult($result);
$db->sql_freeresult($result);
return $s_group_options;
return $s_group_options;
}
}
/**
/**
* return the list of forums which use a form
* return the list of forums which use a form
*/
*/
public static function get_forums_used()
public static function get_forums_used()
{
{
global $db;
global $db;
$sql = 'SELECT forum_id
$sql = 'SELECT forum_id
FROM ' . FORUMS_TABLE . '
FROM ' . FORUMS_TABLE . '
WHERE form_id <> 0';
WHERE form_id <> 0';
$result = $db->sql_query($sql);
$result = $db->sql_query($sql);
$forums = array();
$forums = array();
while ($row = $db->sql_fetchrow($result))
while ($row = $db->sql_fetchrow($result))
{
{
$forums[] = $row['forum_id'];
$forums[] = $row['forum_id'];
}
}
return $forums;
return $forums;
}
}
/**
/**
* display a form in posting and manages submit/preview
* display a form in posting and manages submit/preview
*/
*/
public static function display_form($data, $mode)
public static function display_form($data, $mode)
{
{
global $config, $user, $template, $auth, $phpbb_root_path, $phpEx;
global $config, $user, $template, $auth, $phpbb_root_path, $phpEx;
//-- mod : quick title edition -------------------------------------------------
//-- mod : quick title edition -------------------------------------------------
//-- add
//-- add
global $qte;
global $qte;
//-- fin mod : quick title edition ---------------------------------------------
//-- fin mod : quick title edition ---------------------------------------------
// setup lang and functions
// setup lang and functions
$user->setup('mods/info_acp_form');
$user->setup('mods/info_acp_form');
require_once $phpbb_root_path . 'includes/functions_user.' . $phpEx;
require_once $phpbb_root_path . 'includes/functions_user.' . $phpEx;
// setup data
// setup data
$errors = $fields_submit = array();
$errors = $fields_submit = array();
$submit = (isset($_POST['submit'])) ? true : false;
$submit = (isset($_POST['submit'])) ? true : false;
$preview = (isset($_POST['preview'])) ? true : false;
$preview = (isset($_POST['preview'])) ? true : false;
$subject = utf8_normalize_nfc(request_var('subject', '', true));
$subject = utf8_normalize_nfc(request_var('subject', '', true));
$username = utf8_normalize_nfc(request_var('username', '', true));
$username = utf8_normalize_nfc(request_var('username', '', true));
$message_flag = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS;
$message_flag = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS;
// Mod browser, os & screen ---
// Mod browser, os & screen ---
$screen = request_var('screen', '');
$screen = request_var('screen', '');
// End Mod browser, os & screen
// End Mod browser, os & screen
//-- mod : quick title edition -------------------------------------------------
//-- mod : quick title edition -------------------------------------------------
//-- add
//-- add
$data['attr_id'] = request_var('attr_id', 0);
$data['attr_id'] = request_var('attr_id', 0);
if ( !empty($data['topic_attr_id']) )
if ( !empty($data['topic_attr_id']) )
{
{
复制
已复制
复制
已复制
$data['attr_id'] = $data['topic_attr_id'];
if ( empty($data['attr_id']) || ($data['attr_id'] == -2) )
{
$data['attr_id'] = $data['topic_attr_id'];
}
}
}
//-- fin mod : quick title edition ---------------------------------------------
//-- fin mod : quick title edition ---------------------------------------------
// get form to display
// get form to display
if (!$form = self::get_form($data['form_id'], true, ($mode == 'reply') ? true : false))
if (!$form = self::get_form($data['form_id'], true, ($mode == 'reply') ? true : false))
{
{
return;
return;
}
}
// get fields of the form
// get fields of the form
if (!$fields = $form->get_fields($form->get_id()))
if (!$fields = $form->get_fields($form->get_id()))
{
{
return;
return;
}
}
// check if current user can view the form
// check if current user can view the form
if (!group_memberships(explode(',', $form->get('form_groups')), $user->data['user_id'], true))
if (!group_memberships(explode(',', $form->get('form_groups')), $user->data['user_id'], true))
{
{
return;
return;
}
}
// set default subject in replies
// set default subject in replies
if ($mode == 'reply' && !$subject && !$preview && !$submit)
if ($mode == 'reply' && !$subject && !$preview && !$submit)
{
{
$subject = ((strpos($data['topic_title'], 'Re: ') !== 0) ? 'Re: ' : '') . censor_text($data['topic_title']);
$subject = ((strpos($data['topic_title'], 'Re: ') !== 0) ? 'Re: ' : '') . censor_text($data['topic_title']);
}
}
// if anonymous user and visual confirmation needed, setup captcha here
// if anonymous user and visual confirmation needed, setup captcha here
if ($config['enable_post_confirm'] && !$user->data['is_registered'])
if ($config['enable_post_confirm'] && !$user->data['is_registered'])
{
{
include_once($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx);
include_once($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx);
$captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']);
$captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']);
$captcha->init(CONFIRM_POST);
$captcha->init(CONFIRM_POST);
}
}
// if form submitted/previewed
// if form submitted/previewed
if ($submit || $preview)
if ($submit || $preview)
{
{
// if new topic, subject cannot be empty
// if new topic, subject cannot be empty
if ($mode == 'post' && !$subject)
if ($mode == 'post' && !$subject)
{
{
$errors[] = $user->lang['EMPTY_SUBJECT'];
$errors[] = $user->lang['EMPTY_SUBJECT'];
}
}
//-- mod : quick title edition -------------------------------------------------
//-- mod : quick title edition -------------------------------------------------
//-- add
//-- add
if ( $data['force_attr'] )
if ( $data['force_attr'] )
{
{
复制
已复制
复制
已复制
if ( !$preview &&
($data['attr_id'] == -1) && ($mode == 'post'
) )
if ( !$preview &&
!$refresh &&
($data['attr_id'] == -1) && ($mode == 'post'
|| ($mode == 'edit' && $data['topic_first_post_id'] == $post_id)
) )
{
{
$user->add_lang('mods/attributes');
$user->add_lang('mods/attributes');
复制
已复制
复制
已复制
$error
s
[] = $user->lang['QTE_ATTRIBUTE_UNSELECTED'];
$error
[] = $user->lang['QTE_ATTRIBUTE_UNSELECTED'];
// init the value
// init the value
$data['attr_id'] = 0;
$data['attr_id'] = 0;
}
}
}
}
//-- fin mod : quick title edition ---------------------------------------------
//-- fin mod : quick title edition ---------------------------------------------
// if poster is anonymous, check username
// if poster is anonymous, check username
if (!$user->data['is_registered'])
if (!$user->data['is_registered'])
{
{
$user->add_lang('ucp');
$user->add_lang('ucp');
if (($result = validate_username($username)) !== false)
if (($result = validate_username($username)) !== false)
{
{
$error[] = $user->lang[$result . '_USERNAME'];
$error[] = $user->lang[$result . '_USERNAME'];
}
}
if (($result = validate_string($username, false, $config['min_name_chars'], $config['max_name_chars'])) !== false)
if (($result = validate_string($username, false, $config['min_name_chars'], $config['max_name_chars'])) !== false)
{
{
$min_max_amount = ($result == 'TOO_SHORT') ? $config['min_name_chars'] : $config['max_name_chars'];
$min_max_amount = ($result == 'TOO_SHORT') ? $config['min_name_chars'] : $config['max_name_chars'];
$error[] = sprintf($user->lang['FIELD_' . $result], $user->lang['USERNAME'], $min_max_amount);
$error[] = sprintf($user->lang['FIELD_' . $result], $user->lang['USERNAME'], $min_max_amount);
}
}
}
}
// if there is a captcha, check it
// if there is a captcha, check it
if (isset($captcha))
if (isset($captcha))
{
{
$captcha_data = array(
$captcha_data = array(
'message' => '',
'message' => '',
'subject' => $subject,
'subject' => $subject,
'username' => $username,
'username' => $username,
);
);
$vc_response = $captcha->validate($captcha_data);
$vc_response = $captcha->validate($captcha_data);
if ($vc_response)
if ($vc_response)
{
{
$errors[] = $vc_response;
$errors[] = $vc_response;
}
}
}
}
// check each fields
// check each fields
foreach ($fields as $field)
foreach ($fields as $field)
{
{
// get field submitted value
// get field submitted value
$field->set_input(utf8_normalize_nfc(request_var($field->get_html_name(), $field->get_default(), true)));
$field->set_input(utf8_normalize_nfc(request_var($field->get_html_name(), $field->get_default(), true)));
// check if a value is required
// check if a value is required
if ($field->get('field_required') && !$field->get_input())
if ($field->get('field_required') && !$field->get_input())
{
{
$errors[] = sprintf($user->lang['ERROR_REQUIRED'], $field->get('field_name'));
$errors[] = sprintf($user->lang['ERROR_REQUIRED'], $field->get('field_name'));
}
}
}
}
// if no errors, create and save the post
// if no errors, create and save the post
if (!sizeof($errors))
if (!sizeof($errors))
{
{
// create a new object template
// create a new object template
$class_tpl = $form->get('form_template');
$class_tpl = $form->get('form_template');
$form_tpl = new $class_tpl();
$form_tpl = new $class_tpl();
// generate the post based on fields data
// generate the post based on fields data
$message = $form_tpl->generate_message($fields);
$message = $form_tpl->generate_message($fields);
// parse the message for DB storage
// parse the message for DB storage
generate_text_for_storage($message, $bbcode_uid, $bbcode_bitfield, $message_flag, true, true, true);
generate_text_for_storage($message, $bbcode_uid, $bbcode_bitfield, $message_flag, true, true, true);
// preview ?
// preview ?
if ($preview)
if ($preview)
{
{
$template->assign_vars(array(
$template->assign_vars(array(
'PREVIEW_MESSAGE' => generate_text_for_display($message, $bbcode_uid, $bbcode_bitfield, $message_flag),
'PREVIEW_MESSAGE' => generate_text_for_display($message, $bbcode_uid, $bbcode_bitfield, $message_flag),
'PREVIEW_SUBJECT' => $subject,
'PREVIEW_SUBJECT' => $subject,
));
));
//-- mod : quick title edition -------------------------------------------------
//-- mod : quick title edition -------------------------------------------------
//-- add
//-- add
复制
已复制
复制
已复制
if ( !empty($data['attr_id']
) )
if ( !empty($data['attr_id']
) && ($data['attr_id'] != -1
) )
{
{
复制
已复制
复制
已复制
$qte->get_users_by_user_id($user->data['user_id']);
$template->assign_vars(array(
$template->assign_vars(array(
'S_TOPIC_ATTR' => true,
'S_TOPIC_ATTR' => true,
复制
已复制
复制
已复制
'TOPIC_ATTRIBUTE' => $qte->attr_display($data['attr_id'], $user->data['user_id'],
time
()
),
'TOPIC_ATTRIBUTE' => $qte->attr_display($data['attr_id'], $user->data['user_id'],
$current_
time
),
));
));
}
}
复制
已复制
复制
已复制
//-- fin mod : quick title edition ---------------------------------------------
//-- fin mod : quick title edition ---------------------------------------------
}
}
// submit ? save the post
// submit ? save the post
else
else
{
{
$form_data = array(
$form_data = array(
'forum_id' => $data['forum_id'],
'forum_id' => $data['forum_id'],
'topic_id' => ($mode == 'reply') ? $data['topic_id'] : 0,
'topic_id' => ($mode == 'reply') ? $data['topic_id'] : 0,
'icon_id' => false,
'icon_id' => false,
'enable_bbcode' => true,
'enable_bbcode' => true,
'enable_smilies' => true,
'enable_smilies' => true,
'enable_urls' => true,
'enable_urls' => true,
'enable_sig' => true,
'enable_sig' => true,
'message' => $message,
'message' => $message,
'message_md5' => md5($message),
'message_md5' => md5($message),
'bbcode_bitfield' => $bbcode_bitfield,
'bbcode_bitfield' => $bbcode_bitfield,
'bbcode_uid' => $bbcode_uid,
'bbcode_uid' => $bbcode_uid,
'post_edit_locked' => 0,
'post_edit_locked' => 0,
'topic_title' => $subject,
'topic_title' => $subject,
'notify_set' => false,
'notify_set' => false,
'notify' => false,
'notify' => false,
'post_time' => 0,
'post_time' => 0,
'forum_name' => $data['forum_name'], // should be defined for email notifications
'forum_name' => $data['forum_name'], // should be defined for email notifications
'enable_indexing' => true,
'enable_indexing' => true,
'screen' => $screen,
'screen' => $screen,
// start mod save full drafts
// start mod save full drafts
'save_as_draft' => false,
'save_as_draft' => false,
'was_draft' => false,
'was_draft' => false,
// end mod save full drafts
// end mod save full drafts
'topic_status' => 0,
'topic_status' => 0,
);
);
//-- mod : quick title edition -------------------------------------------------
//-- mod : quick title edition -------------------------------------------------
//-- add
//-- add
$form_data += array('attr_id' => $data['attr_id']);
$form_data += array('attr_id' => $data['attr_id']);
//-- fin mod : quick title edition ---------------------------------------------
//-- fin mod : quick title edition ---------------------------------------------
$poll_data = array();
$poll_data = array();
$url = submit_post($mode, $subject, $username, POST_NORMAL, $poll_data, $form_data);
$url = submit_post($mode, $subject, $username, POST_NORMAL, $poll_data, $form_data);
if (isset($captcha) && $captcha->is_solved() === true)
if (isset($captcha) && $captcha->is_solved() === true)
{
{
$captcha->reset();
$captcha->reset();
}
}
$message = $user->lang['POST_STORED'] . '<br /><br />' . sprintf($user->lang['VIEW_MESSAGE'], '<a href="' . $url . '">', '</a>');
$message = $user->lang['POST_STORED'] . '<br /><br />' . sprintf($user->lang['VIEW_MESSAGE'], '<a href="' . $url . '">', '</a>');
$message .= '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $data['forum_id']) . '">', '</a>');
$message .= '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $data['forum_id']) . '">', '</a>');
meta_refresh(5, $url);
meta_refresh(5, $url);
trigger_error($message);
trigger_error($message);
}
}
}
}
}
}
// display each field of the form
// display each field of the form
foreach ($fields as $field)
foreach ($fields as $field)
{
{
$template->assign_block_vars('fields', array(
$template->assign_block_vars('fields', array(
'NAME' => $field->get_html_label(),
'NAME' => $field->get_html_label(),
'DESC' => generate_text_for_display($field->get('field_desc'), $field->get('field_bbcode_uid'), $field->get('field_bbcode_bitfield'), $message_flag),
'DESC' => generate_text_for_display($field->get('field_desc'), $field->get('field_bbcode_uid'), $field->get('field_bbcode_bitfield'), $message_flag),
'HTML' => $field->get_html_code(),
'HTML' => $field->get_html_code(),
));
));
}
}
// display captcha
// display captcha
if (isset($captcha) && $captcha->is_solved() === false)
if (isset($captcha) && $captcha->is_solved() === false)
{
{
$template->assign_vars(array(
$template->assign_vars(array(
'S_CONFIRM_CODE' => true,
'S_CONFIRM_CODE' => true,
'CAPTCHA_TEMPLATE' => $captcha->get_template(),
'CAPTCHA_TEMPLATE' => $captcha->get_template(),
));
));
}
}
// display captcha hidden fields
// display captcha hidden fields
if (isset($captcha) && $captcha->is_solved() !== false)
if (isset($captcha) && $captcha->is_solved() !== false)
{
{
$template->assign_var('S_HIDDEN_FIELDS', build_hidden_fields($captcha->get_hidden_fields()));
$template->assign_var('S_HIDDEN_FIELDS', build_hidden_fields($captcha->get_hidden_fields()));
}
}
// display topic review in replies
// display topic review in replies
if ($mode == 'reply' && topic_review($data['topic_id'], $data['forum_id']))
if ($mode == 'reply' && topic_review($data['topic_id'], $data['forum_id']))
{
{
$template->assign_vars(array(
$template->assign_vars(array(
'S_DISPLAY_REVIEW' => true,
'S_DISPLAY_REVIEW' => true,
'TOPIC_TITLE' => $data['topic_title'],
'TOPIC_TITLE' => $data['topic_title'],
));
));
}
}
// display navigation links and forum rules
// display navigation links and forum rules
generate_forum_nav($data);
generate_forum_nav($data);
generate_forum_rules($data);
generate_forum_rules($data);
// template vars
// template vars
$template->assign_vars(array(
$template->assign_vars(array(
'ERRORS' => ($errors) ? implode('<br />', $errors) : '',
'ERRORS' => ($errors) ? implode('<br />', $errors) : '',
'FORM_NAME' => $form->get('form_name'),
'FORM_NAME' => $form->get('form_name'),
'FORM_DESC' => generate_text_for_display($form->get('form_desc'), $form->get('form_bbcode_uid'), $form->get('form_bbcode_bitfield'), $message_flag),
'FORM_DESC' => generate_text_for_display($form->get('form_desc'), $form->get('form_bbcode_uid'), $form->get('form_bbcode_bitfield'), $message_flag),
'SUBJECT' => $subject,
'SUBJECT' => $subject,
'USERNAME' => $username,
'USERNAME' => $username,
'S_POST_ACTION' => append_sid("{$phpbb_root_path}posting.$phpEx", "mode=$mode&f=" . $data['forum_id']) . (($mode == 'reply') ? '&t=' . $data['topic_id'] : ''),
'S_POST_ACTION' => append_sid("{$phpbb_root_path}posting.$phpEx", "mode=$mode&f=" . $data['forum_id']) . (($mode == 'reply') ? '&t=' . $data['topic_id'] : ''),
'S_DISPLAY_USERNAME' => (!$user->data['is_registered']) ? true : false,
'S_DISPLAY_USERNAME' => (!$user->data['is_registered']) ? true : false,
));
));
//-- mod : quick title edition -------------------------------------------------
//-- mod : quick title edition -------------------------------------------------
//-- add
//-- add
复制
已复制
复制
已复制
if ( $mode == 'post'
)
if ( $mode == 'post'
|| ($mode == 'edit' && $post_id == $data['topic_first_post_id'])
)
{
{
$topic_attribute = 0;
$topic_attribute = 0;
复制
已复制
复制
已复制
if ( !
empty($data['topic_attr_id'])
)
if ( !
$preview
)
{
{
复制
已复制
复制
已复制
$topic_attribute = $data['topic_attr_id'];
if ( !empty($data['topic_attr_id']) )
{
$topic_attribute = $data['topic_attr_id'];
}
else if ( $data['attr_id'] )
{
$topic_attribute = $data['attr_id'];
}
}
}
复制
已复制
复制
已复制
else
if ( $data['attr_id'] )
else
{
{
$topic_attribute = $data['attr_id'];
$topic_attribute = $data['attr_id'];
}
}
复制
已复制
复制
已复制
$qte->attr_select($data['forum_id'], $user->data['user_id'], $topic_attribute, $data['hide_attr']);
复制
已复制
复制
已复制
$template->assign_var
s(array(
$data['hide_attr'] = unserialize(trim($data['hide_attr']));
'S_PRIVMSGS' => false,
if ( $data['hide_attr'] === false )
'S_POSTING'
=>
true
,
{
)
);
$data['hide_attr'] = array();
}
$qte->attr_select($data['forum_id'], $user->data['user_id'], (int) $topic_attribute, $data['hide_attr']);
$template->assign_var
(
'S_POSTING'
,
true
);
}
}
//-- fin mod : quick title edition ---------------------------------------------
//-- fin mod : quick title edition ---------------------------------------------
// display page
// display page
page_header($form->get('form_name'));
page_header($form->get('form_name'));
$template->set_filenames(array(
$template->set_filenames(array(
'body' => 'form_body.html',
'body' => 'form_body.html',
));
));
page_footer();
page_footer();
// page is loaded
// page is loaded
}
}
}
}
?>
?>
已保存差异
原始文本
打开文件
<?php /** * * @package phpBB3 * @version $Id$ * @copyright (c) 2011 Ariaswari * @license http://opensource.org/licenses/gpl-license.php GNU Public License * */ /** * @ignore */ if (!defined('IN_PHPBB')) { exit; } // include standard classes of form generator require_once $phpbb_root_path . 'includes/form/form.' . $phpEx; require_once $phpbb_root_path . 'includes/form/field.' . $phpEx; require_once $phpbb_root_path . 'includes/form/form_tpl.' . $phpEx; /** * regroups general functions concerning forms generator mod * this class can not be instanced, only static methods/properties */ abstract class form_generator { /** * return all existing forms into an array of form */ public static function get_forms() { global $db; $sql = 'SELECT * FROM ' . FORMS_TABLE; $result = $db->sql_query($sql); $forms = array(); while ($row = $db->sql_fetchrow($result)) { $forms[] = new form($row); } return $forms; } /** * return a specific form */ public static function get_form($form_id, $check_disable = false, $check_reply = false) { global $db; if (!$form_id) { return false; } $sql = 'SELECT * FROM ' . FORMS_TABLE . " WHERE form_id = $form_id"; $sql .= ($check_disable) ? ' AND form_enabled = 1' : ''; $sql .= ($check_reply) ? ' AND form_reply = 1' : ''; $result = $db->sql_query($sql); if (!$row = $db->sql_fetchrow($result)) { return false; } return new form($row); } /** * return a specific field */ public static function get_field($field_id) { global $db; if (!$field_id) { return false; } $sql = 'SELECT * FROM ' . FORMS_FIELDS_TABLE . " WHERE field_id = $field_id"; $result = $db->sql_query($sql); if (!$row = $db->sql_fetchrow($result)) { return false; } return self::new_field($row); } /** * created a new field (depending on its type) */ public static function new_field($field_data) { // if the type and the class exists, create new field if (!empty($field_data['field_type']) && class_exists($field_data['field_type'])) { return new $field_data['field_type']($field_data); } return false; } /** * generate list of field types */ public static function select_fields($selected = false, $disabled = false) { $s_fields = '<select name="field_type" id="field_type"' . (($disabled) ? ' disabled="disabled"' : '') . '>'; // generate html foreach (get_declared_classes() as $class) { // create a field of each type if (is_subclass_of($class, 'field')) { $field = new $class(); $select = ($selected && $class == $selected) ? ' selected="selected"' : ''; $s_fields .= '<option value="' . $class . '"' . $select . '>' . $field->get_name() . '</option>'; } } $s_fields .= '</select>'; return $s_fields; } /** * generate list of form template */ public static function select_form_tpl($selected = false) { $s_tpl = '<select name="form_template" id="form_template">'; // generate html foreach (get_declared_classes() as $class) { // create a field of each type if (is_subclass_of($class, 'form_tpl')) { $tpl = new $class(); $select = ($selected && $class == $selected) ? ' selected="selected"' : ''; $s_tpl .= '<option value="' . $class . '"' . $select . '>' . $tpl->get_name() . '</option>'; } } $s_tpl .= '</select>'; return $s_tpl; } /** * generate list of groups * function copied from includes/functions_admin.php which manages multiple selections */ public static function group_select_options($group_id, $exclude_ids = false, $manage_founder = false) { global $db, $user, $config; $exclude_sql = ($exclude_ids !== false && sizeof($exclude_ids)) ? 'WHERE ' . $db->sql_in_set('group_id', array_map('intval', $exclude_ids), true) : ''; $sql_and = (!$config['coppa_enable']) ? (($exclude_sql) ? ' AND ' : ' WHERE ') . "group_name <> 'REGISTERED_COPPA'" : ''; $sql_founder = ($manage_founder !== false) ? (($exclude_sql || $sql_and) ? ' AND ' : ' WHERE ') . 'group_founder_manage = ' . (int) $manage_founder : ''; $sql = 'SELECT group_id, group_name, group_type FROM ' . GROUPS_TABLE . " $exclude_sql $sql_and $sql_founder ORDER BY group_type DESC, group_name ASC"; $result = $db->sql_query($sql); $s_group_options = ''; while ($row = $db->sql_fetchrow($result)) { $selected = ((is_array($group_id) && in_array($row['group_id'], $group_id)) || $row['group_id'] == $group_id) ? ' selected="selected"' : ''; $s_group_options .= '<option' . (($row['group_type'] == GROUP_SPECIAL) ? ' class="sep"' : '') . ' value="' . $row['group_id'] . '"' . $selected . '>' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</option>'; } $db->sql_freeresult($result); return $s_group_options; } /** * return the list of forums which use a form */ public static function get_forums_used() { global $db; $sql = 'SELECT forum_id FROM ' . FORUMS_TABLE . ' WHERE form_id <> 0'; $result = $db->sql_query($sql); $forums = array(); while ($row = $db->sql_fetchrow($result)) { $forums[] = $row['forum_id']; } return $forums; } /** * display a form in posting and manages submit/preview */ public static function display_form($data, $mode) { global $config, $user, $template, $auth, $phpbb_root_path, $phpEx; //-- mod : quick title edition ------------------------------------------------- //-- add global $qte; //-- fin mod : quick title edition --------------------------------------------- // setup lang and functions $user->setup('mods/info_acp_form'); require_once $phpbb_root_path . 'includes/functions_user.' . $phpEx; // setup data $errors = $fields_submit = array(); $submit = (isset($_POST['submit'])) ? true : false; $preview = (isset($_POST['preview'])) ? true : false; $subject = utf8_normalize_nfc(request_var('subject', '', true)); $username = utf8_normalize_nfc(request_var('username', '', true)); $message_flag = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS; // Mod browser, os & screen --- $screen = request_var('screen', ''); // End Mod browser, os & screen //-- mod : quick title edition ------------------------------------------------- //-- add $data['attr_id'] = request_var('attr_id', 0); if ( !empty($data['topic_attr_id']) ) { $data['attr_id'] = $data['topic_attr_id']; } //-- fin mod : quick title edition --------------------------------------------- // get form to display if (!$form = self::get_form($data['form_id'], true, ($mode == 'reply') ? true : false)) { return; } // get fields of the form if (!$fields = $form->get_fields($form->get_id())) { return; } // check if current user can view the form if (!group_memberships(explode(',', $form->get('form_groups')), $user->data['user_id'], true)) { return; } // set default subject in replies if ($mode == 'reply' && !$subject && !$preview && !$submit) { $subject = ((strpos($data['topic_title'], 'Re: ') !== 0) ? 'Re: ' : '') . censor_text($data['topic_title']); } // if anonymous user and visual confirmation needed, setup captcha here if ($config['enable_post_confirm'] && !$user->data['is_registered']) { include_once($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); $captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']); $captcha->init(CONFIRM_POST); } // if form submitted/previewed if ($submit || $preview) { // if new topic, subject cannot be empty if ($mode == 'post' && !$subject) { $errors[] = $user->lang['EMPTY_SUBJECT']; } //-- mod : quick title edition ------------------------------------------------- //-- add if ( $data['force_attr'] ) { if ( !$preview && ($data['attr_id'] == -1) && ($mode == 'post') ) { $user->add_lang('mods/attributes'); $errors[] = $user->lang['QTE_ATTRIBUTE_UNSELECTED']; // init the value $data['attr_id'] = 0; } } //-- fin mod : quick title edition --------------------------------------------- // if poster is anonymous, check username if (!$user->data['is_registered']) { $user->add_lang('ucp'); if (($result = validate_username($username)) !== false) { $error[] = $user->lang[$result . '_USERNAME']; } if (($result = validate_string($username, false, $config['min_name_chars'], $config['max_name_chars'])) !== false) { $min_max_amount = ($result == 'TOO_SHORT') ? $config['min_name_chars'] : $config['max_name_chars']; $error[] = sprintf($user->lang['FIELD_' . $result], $user->lang['USERNAME'], $min_max_amount); } } // if there is a captcha, check it if (isset($captcha)) { $captcha_data = array( 'message' => '', 'subject' => $subject, 'username' => $username, ); $vc_response = $captcha->validate($captcha_data); if ($vc_response) { $errors[] = $vc_response; } } // check each fields foreach ($fields as $field) { // get field submitted value $field->set_input(utf8_normalize_nfc(request_var($field->get_html_name(), $field->get_default(), true))); // check if a value is required if ($field->get('field_required') && !$field->get_input()) { $errors[] = sprintf($user->lang['ERROR_REQUIRED'], $field->get('field_name')); } } // if no errors, create and save the post if (!sizeof($errors)) { // create a new object template $class_tpl = $form->get('form_template'); $form_tpl = new $class_tpl(); // generate the post based on fields data $message = $form_tpl->generate_message($fields); // parse the message for DB storage generate_text_for_storage($message, $bbcode_uid, $bbcode_bitfield, $message_flag, true, true, true); // preview ? if ($preview) { $template->assign_vars(array( 'PREVIEW_MESSAGE' => generate_text_for_display($message, $bbcode_uid, $bbcode_bitfield, $message_flag), 'PREVIEW_SUBJECT' => $subject, )); //-- mod : quick title edition ------------------------------------------------- //-- add if ( !empty($data['attr_id']) ) { $template->assign_vars(array( 'S_TOPIC_ATTR' => true, 'TOPIC_ATTRIBUTE' => $qte->attr_display($data['attr_id'], $user->data['user_id'], time()), )); } //-- fin mod : quick title edition --------------------------------------------- } // submit ? save the post else { $form_data = array( 'forum_id' => $data['forum_id'], 'topic_id' => ($mode == 'reply') ? $data['topic_id'] : 0, 'icon_id' => false, 'enable_bbcode' => true, 'enable_smilies' => true, 'enable_urls' => true, 'enable_sig' => true, 'message' => $message, 'message_md5' => md5($message), 'bbcode_bitfield' => $bbcode_bitfield, 'bbcode_uid' => $bbcode_uid, 'post_edit_locked' => 0, 'topic_title' => $subject, 'notify_set' => false, 'notify' => false, 'post_time' => 0, 'forum_name' => $data['forum_name'], // should be defined for email notifications 'enable_indexing' => true, 'screen' => $screen, // start mod save full drafts 'save_as_draft' => false, 'was_draft' => false, // end mod save full drafts 'topic_status' => 0, ); //-- mod : quick title edition ------------------------------------------------- //-- add $form_data += array('attr_id' => $data['attr_id']); //-- fin mod : quick title edition --------------------------------------------- $poll_data = array(); $url = submit_post($mode, $subject, $username, POST_NORMAL, $poll_data, $form_data); if (isset($captcha) && $captcha->is_solved() === true) { $captcha->reset(); } $message = $user->lang['POST_STORED'] . '<br /><br />' . sprintf($user->lang['VIEW_MESSAGE'], '<a href="' . $url . '">', '</a>'); $message .= '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $data['forum_id']) . '">', '</a>'); meta_refresh(5, $url); trigger_error($message); } } } // display each field of the form foreach ($fields as $field) { $template->assign_block_vars('fields', array( 'NAME' => $field->get_html_label(), 'DESC' => generate_text_for_display($field->get('field_desc'), $field->get('field_bbcode_uid'), $field->get('field_bbcode_bitfield'), $message_flag), 'HTML' => $field->get_html_code(), )); } // display captcha if (isset($captcha) && $captcha->is_solved() === false) { $template->assign_vars(array( 'S_CONFIRM_CODE' => true, 'CAPTCHA_TEMPLATE' => $captcha->get_template(), )); } // display captcha hidden fields if (isset($captcha) && $captcha->is_solved() !== false) { $template->assign_var('S_HIDDEN_FIELDS', build_hidden_fields($captcha->get_hidden_fields())); } // display topic review in replies if ($mode == 'reply' && topic_review($data['topic_id'], $data['forum_id'])) { $template->assign_vars(array( 'S_DISPLAY_REVIEW' => true, 'TOPIC_TITLE' => $data['topic_title'], )); } // display navigation links and forum rules generate_forum_nav($data); generate_forum_rules($data); // template vars $template->assign_vars(array( 'ERRORS' => ($errors) ? implode('<br />', $errors) : '', 'FORM_NAME' => $form->get('form_name'), 'FORM_DESC' => generate_text_for_display($form->get('form_desc'), $form->get('form_bbcode_uid'), $form->get('form_bbcode_bitfield'), $message_flag), 'SUBJECT' => $subject, 'USERNAME' => $username, 'S_POST_ACTION' => append_sid("{$phpbb_root_path}posting.$phpEx", "mode=$mode&f=" . $data['forum_id']) . (($mode == 'reply') ? '&t=' . $data['topic_id'] : ''), 'S_DISPLAY_USERNAME' => (!$user->data['is_registered']) ? true : false, )); //-- mod : quick title edition ------------------------------------------------- //-- add if ( $mode == 'post' ) { $topic_attribute = 0; if ( !empty($data['topic_attr_id']) ) { $topic_attribute = $data['topic_attr_id']; } else if ( $data['attr_id'] ) { $topic_attribute = $data['attr_id']; } $qte->attr_select($data['forum_id'], $user->data['user_id'], $topic_attribute, $data['hide_attr']); $template->assign_vars(array( 'S_PRIVMSGS' => false, 'S_POSTING' => true, )); } //-- fin mod : quick title edition --------------------------------------------- // display page page_header($form->get('form_name')); $template->set_filenames(array( 'body' => 'form_body.html', )); page_footer(); // page is loaded } } ?>
更改后文本
打开文件
<?php /** * * @package phpBB3 * @version $Id$ * @copyright (c) 2011 Ariaswari * @license http://opensource.org/licenses/gpl-license.php GNU Public License * */ /** * @ignore */ if (!defined('IN_PHPBB')) { exit; } // include standard classes of form generator require_once $phpbb_root_path . 'includes/form/form.' . $phpEx; require_once $phpbb_root_path . 'includes/form/field.' . $phpEx; require_once $phpbb_root_path . 'includes/form/form_tpl.' . $phpEx; /** * regroups general functions concerning forms generator mod * this class can not be instanced, only static methods/properties */ abstract class form_generator { /** * return all existing forms into an array of form */ public static function get_forms() { global $db; $sql = 'SELECT * FROM ' . FORMS_TABLE; $result = $db->sql_query($sql); $forms = array(); while ($row = $db->sql_fetchrow($result)) { $forms[] = new form($row); } return $forms; } /** * return a specific form */ public static function get_form($form_id, $check_disable = false, $check_reply = false) { global $db; if (!$form_id) { return false; } $sql = 'SELECT * FROM ' . FORMS_TABLE . " WHERE form_id = $form_id"; $sql .= ($check_disable) ? ' AND form_enabled = 1' : ''; $sql .= ($check_reply) ? ' AND form_reply = 1' : ''; $result = $db->sql_query($sql); if (!$row = $db->sql_fetchrow($result)) { return false; } return new form($row); } /** * return a specific field */ public static function get_field($field_id) { global $db; if (!$field_id) { return false; } $sql = 'SELECT * FROM ' . FORMS_FIELDS_TABLE . " WHERE field_id = $field_id"; $result = $db->sql_query($sql); if (!$row = $db->sql_fetchrow($result)) { return false; } return self::new_field($row); } /** * created a new field (depending on its type) */ public static function new_field($field_data) { // if the type and the class exists, create new field if (!empty($field_data['field_type']) && class_exists($field_data['field_type'])) { return new $field_data['field_type']($field_data); } return false; } /** * generate list of field types */ public static function select_fields($selected = false, $disabled = false) { $s_fields = '<select name="field_type" id="field_type"' . (($disabled) ? ' disabled="disabled"' : '') . '>'; // generate html foreach (get_declared_classes() as $class) { // create a field of each type if (is_subclass_of($class, 'field')) { $field = new $class(); $select = ($selected && $class == $selected) ? ' selected="selected"' : ''; $s_fields .= '<option value="' . $class . '"' . $select . '>' . $field->get_name() . '</option>'; } } $s_fields .= '</select>'; return $s_fields; } /** * generate list of form template */ public static function select_form_tpl($selected = false) { $s_tpl = '<select name="form_template" id="form_template">'; // generate html foreach (get_declared_classes() as $class) { // create a field of each type if (is_subclass_of($class, 'form_tpl')) { $tpl = new $class(); $select = ($selected && $class == $selected) ? ' selected="selected"' : ''; $s_tpl .= '<option value="' . $class . '"' . $select . '>' . $tpl->get_name() . '</option>'; } } $s_tpl .= '</select>'; return $s_tpl; } /** * generate list of groups * function copied from includes/functions_admin.php which manages multiple selections */ public static function group_select_options($group_id, $exclude_ids = false, $manage_founder = false) { global $db, $user, $config; $exclude_sql = ($exclude_ids !== false && sizeof($exclude_ids)) ? 'WHERE ' . $db->sql_in_set('group_id', array_map('intval', $exclude_ids), true) : ''; $sql_and = (!$config['coppa_enable']) ? (($exclude_sql) ? ' AND ' : ' WHERE ') . "group_name <> 'REGISTERED_COPPA'" : ''; $sql_founder = ($manage_founder !== false) ? (($exclude_sql || $sql_and) ? ' AND ' : ' WHERE ') . 'group_founder_manage = ' . (int) $manage_founder : ''; $sql = 'SELECT group_id, group_name, group_type FROM ' . GROUPS_TABLE . " $exclude_sql $sql_and $sql_founder ORDER BY group_type DESC, group_name ASC"; $result = $db->sql_query($sql); $s_group_options = ''; while ($row = $db->sql_fetchrow($result)) { $selected = ((is_array($group_id) && in_array($row['group_id'], $group_id)) || $row['group_id'] == $group_id) ? ' selected="selected"' : ''; $s_group_options .= '<option' . (($row['group_type'] == GROUP_SPECIAL) ? ' class="sep"' : '') . ' value="' . $row['group_id'] . '"' . $selected . '>' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</option>'; } $db->sql_freeresult($result); return $s_group_options; } /** * return the list of forums which use a form */ public static function get_forums_used() { global $db; $sql = 'SELECT forum_id FROM ' . FORUMS_TABLE . ' WHERE form_id <> 0'; $result = $db->sql_query($sql); $forums = array(); while ($row = $db->sql_fetchrow($result)) { $forums[] = $row['forum_id']; } return $forums; } /** * display a form in posting and manages submit/preview */ public static function display_form($data, $mode) { global $config, $user, $template, $auth, $phpbb_root_path, $phpEx; //-- mod : quick title edition ------------------------------------------------- //-- add global $qte; //-- fin mod : quick title edition --------------------------------------------- // setup lang and functions $user->setup('mods/info_acp_form'); require_once $phpbb_root_path . 'includes/functions_user.' . $phpEx; // setup data $errors = $fields_submit = array(); $submit = (isset($_POST['submit'])) ? true : false; $preview = (isset($_POST['preview'])) ? true : false; $subject = utf8_normalize_nfc(request_var('subject', '', true)); $username = utf8_normalize_nfc(request_var('username', '', true)); $message_flag = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS; // Mod browser, os & screen --- $screen = request_var('screen', ''); // End Mod browser, os & screen //-- mod : quick title edition ------------------------------------------------- //-- add $data['attr_id'] = request_var('attr_id', 0); if ( !empty($data['topic_attr_id']) ) { if ( empty($data['attr_id']) || ($data['attr_id'] == -2) ) { $data['attr_id'] = $data['topic_attr_id']; } } //-- fin mod : quick title edition --------------------------------------------- // get form to display if (!$form = self::get_form($data['form_id'], true, ($mode == 'reply') ? true : false)) { return; } // get fields of the form if (!$fields = $form->get_fields($form->get_id())) { return; } // check if current user can view the form if (!group_memberships(explode(',', $form->get('form_groups')), $user->data['user_id'], true)) { return; } // set default subject in replies if ($mode == 'reply' && !$subject && !$preview && !$submit) { $subject = ((strpos($data['topic_title'], 'Re: ') !== 0) ? 'Re: ' : '') . censor_text($data['topic_title']); } // if anonymous user and visual confirmation needed, setup captcha here if ($config['enable_post_confirm'] && !$user->data['is_registered']) { include_once($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); $captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']); $captcha->init(CONFIRM_POST); } // if form submitted/previewed if ($submit || $preview) { // if new topic, subject cannot be empty if ($mode == 'post' && !$subject) { $errors[] = $user->lang['EMPTY_SUBJECT']; } //-- mod : quick title edition ------------------------------------------------- //-- add if ( $data['force_attr'] ) { if ( !$preview && !$refresh && ($data['attr_id'] == -1) && ($mode == 'post' || ($mode == 'edit' && $data['topic_first_post_id'] == $post_id)) ) { $user->add_lang('mods/attributes'); $error[] = $user->lang['QTE_ATTRIBUTE_UNSELECTED']; // init the value $data['attr_id'] = 0; } } //-- fin mod : quick title edition --------------------------------------------- // if poster is anonymous, check username if (!$user->data['is_registered']) { $user->add_lang('ucp'); if (($result = validate_username($username)) !== false) { $error[] = $user->lang[$result . '_USERNAME']; } if (($result = validate_string($username, false, $config['min_name_chars'], $config['max_name_chars'])) !== false) { $min_max_amount = ($result == 'TOO_SHORT') ? $config['min_name_chars'] : $config['max_name_chars']; $error[] = sprintf($user->lang['FIELD_' . $result], $user->lang['USERNAME'], $min_max_amount); } } // if there is a captcha, check it if (isset($captcha)) { $captcha_data = array( 'message' => '', 'subject' => $subject, 'username' => $username, ); $vc_response = $captcha->validate($captcha_data); if ($vc_response) { $errors[] = $vc_response; } } // check each fields foreach ($fields as $field) { // get field submitted value $field->set_input(utf8_normalize_nfc(request_var($field->get_html_name(), $field->get_default(), true))); // check if a value is required if ($field->get('field_required') && !$field->get_input()) { $errors[] = sprintf($user->lang['ERROR_REQUIRED'], $field->get('field_name')); } } // if no errors, create and save the post if (!sizeof($errors)) { // create a new object template $class_tpl = $form->get('form_template'); $form_tpl = new $class_tpl(); // generate the post based on fields data $message = $form_tpl->generate_message($fields); // parse the message for DB storage generate_text_for_storage($message, $bbcode_uid, $bbcode_bitfield, $message_flag, true, true, true); // preview ? if ($preview) { $template->assign_vars(array( 'PREVIEW_MESSAGE' => generate_text_for_display($message, $bbcode_uid, $bbcode_bitfield, $message_flag), 'PREVIEW_SUBJECT' => $subject, )); //-- mod : quick title edition ------------------------------------------------- //-- add if ( !empty($data['attr_id']) && ($data['attr_id'] != -1) ) { $qte->get_users_by_user_id($user->data['user_id']); $template->assign_vars(array( 'S_TOPIC_ATTR' => true, 'TOPIC_ATTRIBUTE' => $qte->attr_display($data['attr_id'], $user->data['user_id'], $current_time), )); } //-- fin mod : quick title edition --------------------------------------------- } // submit ? save the post else { $form_data = array( 'forum_id' => $data['forum_id'], 'topic_id' => ($mode == 'reply') ? $data['topic_id'] : 0, 'icon_id' => false, 'enable_bbcode' => true, 'enable_smilies' => true, 'enable_urls' => true, 'enable_sig' => true, 'message' => $message, 'message_md5' => md5($message), 'bbcode_bitfield' => $bbcode_bitfield, 'bbcode_uid' => $bbcode_uid, 'post_edit_locked' => 0, 'topic_title' => $subject, 'notify_set' => false, 'notify' => false, 'post_time' => 0, 'forum_name' => $data['forum_name'], // should be defined for email notifications 'enable_indexing' => true, 'screen' => $screen, // start mod save full drafts 'save_as_draft' => false, 'was_draft' => false, // end mod save full drafts 'topic_status' => 0, ); //-- mod : quick title edition ------------------------------------------------- //-- add $form_data += array('attr_id' => $data['attr_id']); //-- fin mod : quick title edition --------------------------------------------- $poll_data = array(); $url = submit_post($mode, $subject, $username, POST_NORMAL, $poll_data, $form_data); if (isset($captcha) && $captcha->is_solved() === true) { $captcha->reset(); } $message = $user->lang['POST_STORED'] . '<br /><br />' . sprintf($user->lang['VIEW_MESSAGE'], '<a href="' . $url . '">', '</a>'); $message .= '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $data['forum_id']) . '">', '</a>'); meta_refresh(5, $url); trigger_error($message); } } } // display each field of the form foreach ($fields as $field) { $template->assign_block_vars('fields', array( 'NAME' => $field->get_html_label(), 'DESC' => generate_text_for_display($field->get('field_desc'), $field->get('field_bbcode_uid'), $field->get('field_bbcode_bitfield'), $message_flag), 'HTML' => $field->get_html_code(), )); } // display captcha if (isset($captcha) && $captcha->is_solved() === false) { $template->assign_vars(array( 'S_CONFIRM_CODE' => true, 'CAPTCHA_TEMPLATE' => $captcha->get_template(), )); } // display captcha hidden fields if (isset($captcha) && $captcha->is_solved() !== false) { $template->assign_var('S_HIDDEN_FIELDS', build_hidden_fields($captcha->get_hidden_fields())); } // display topic review in replies if ($mode == 'reply' && topic_review($data['topic_id'], $data['forum_id'])) { $template->assign_vars(array( 'S_DISPLAY_REVIEW' => true, 'TOPIC_TITLE' => $data['topic_title'], )); } // display navigation links and forum rules generate_forum_nav($data); generate_forum_rules($data); // template vars $template->assign_vars(array( 'ERRORS' => ($errors) ? implode('<br />', $errors) : '', 'FORM_NAME' => $form->get('form_name'), 'FORM_DESC' => generate_text_for_display($form->get('form_desc'), $form->get('form_bbcode_uid'), $form->get('form_bbcode_bitfield'), $message_flag), 'SUBJECT' => $subject, 'USERNAME' => $username, 'S_POST_ACTION' => append_sid("{$phpbb_root_path}posting.$phpEx", "mode=$mode&f=" . $data['forum_id']) . (($mode == 'reply') ? '&t=' . $data['topic_id'] : ''), 'S_DISPLAY_USERNAME' => (!$user->data['is_registered']) ? true : false, )); //-- mod : quick title edition ------------------------------------------------- //-- add if ( $mode == 'post' || ($mode == 'edit' && $post_id == $data['topic_first_post_id']) ) { $topic_attribute = 0; if ( !$preview ) { if ( !empty($data['topic_attr_id']) ) { $topic_attribute = $data['topic_attr_id']; } else if ( $data['attr_id'] ) { $topic_attribute = $data['attr_id']; } } else { $topic_attribute = $data['attr_id']; } $data['hide_attr'] = unserialize(trim($data['hide_attr'])); if ( $data['hide_attr'] === false ) { $data['hide_attr'] = array(); } $qte->attr_select($data['forum_id'], $user->data['user_id'], (int) $topic_attribute, $data['hide_attr']); $template->assign_var('S_POSTING', true); } //-- fin mod : quick title edition --------------------------------------------- // display page page_header($form->get('form_name')); $template->set_filenames(array( 'body' => 'form_body.html', )); page_footer(); // page is loaded } } ?>
查找差异