Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
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 } } ?>
違いを見つける