Diff
checker
Texte
Texte
Images
Documents
Excel
Dossiers
Legal
Enterprise
Application de bureau
Prix
Se connecter
Télécharger Diffchecker Desktop
Comparer le texte
Trouver la différence entre deux fichiers texte
Outils
Historique
Éditeur live
Cacher identiques
Sans retour à la ligne
Vue
Divisé
Unifié
Niveau de précision
Intelligent
Mot
Caractère
Coloration syntaxique
Choisir la syntaxe
Ignorer
Transformer le texte
Aller au premier écart
Modifier l'entrée
Diffchecker Desktop
La façon la plus sécurisée d'utiliser Diffchecker. Obtenez l'application Diffchecker Desktop : vos diffs ne quittent jamais votre ordinateur !
Obtenir Desktop
Untitled diff
Créé
il y a 11 ans
Le diff n'expire jamais
Effacer
Exporter
Partager
Expliquer
11 suppressions
Lignes
Total
Supprimé
Caractères
Total
Supprimé
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
519 lignes
Copier tout
33 ajouts
Lignes
Total
Ajouté
Caractères
Total
Ajouté
Pour continuer à utiliser cette fonctionnalité, passez à
Diff
checker
Pro
Voir les prix
535 lignes
Copier tout
<?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']) )
{
{
Copier
Copié
Copier
Copié
$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'] )
{
{
Copier
Copié
Copier
Copié
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');
Copier
Copié
Copier
Copié
$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
Copier
Copié
Copier
Copié
if ( !empty($data['attr_id']
) )
if ( !empty($data['attr_id']
) && ($data['attr_id'] != -1
) )
{
{
Copier
Copié
Copier
Copié
$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,
Copier
Copié
Copier
Copié
'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
),
));
));
}
}
Copier
Copié
Copier
Copié
//-- 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
Copier
Copié
Copier
Copié
if ( $mode == 'post'
)
if ( $mode == 'post'
|| ($mode == 'edit' && $post_id == $data['topic_first_post_id'])
)
{
{
$topic_attribute = 0;
$topic_attribute = 0;
Copier
Copié
Copier
Copié
if ( !
empty($data['topic_attr_id'])
)
if ( !
$preview
)
{
{
Copier
Copié
Copier
Copié
$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'];
}
}
}
Copier
Copié
Copier
Copié
else
if ( $data['attr_id'] )
else
{
{
$topic_attribute = $data['attr_id'];
$topic_attribute = $data['attr_id'];
}
}
Copier
Copié
Copier
Copié
$qte->attr_select($data['forum_id'], $user->data['user_id'], $topic_attribute, $data['hide_attr']);
Copier
Copié
Copier
Copié
$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
}
}
}
}
?>
?>
Différences enregistrées
Texte d'origine
Ouvrir un fichier
<?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 } } ?>
Texte modifié
Ouvrir un fichier
<?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 } } ?>
Trouver la différence