1. В phpmyadmin выполнить (если префикс таблиц не phpbb_ - заменить на свой)
Код: Выделить всё
INSERT INTO `phpbb_acl_options` (`auth_option_id`, `auth_option`, `is_global`, `is_local`, `founder_only`) VALUES (NULL, 'u_pm_createposts', '1', '0', '0');
includes/functions_privmsgs.php заменить
Код: Выделить всё
function handle_mark_actions($user_id, $mark_action)
{
global $db, $user, $phpbb_root_path, $phpEx;
Код: Выделить всё
function handle_mark_actions($user_id, $mark_action)
{
global $db, $user, $phpbb_root_path, $phpEx, $template;
Код: Выделить всё
confirm_box(false, 'DELETE_MARKED_PM', build_hidden_fields($s_hidden_fields));
}
break;
Код: Выделить всё
case 'create_posts':
global $auth;
if (!$auth->acl_get('u_pm_createposts'))
{
trigger_error('NO_AUTH_CREATE_POSTS');
}
if (confirm_box(true))
{
$user_save=array(
'user_id' => $user->data['user_id'],
'user_ip' => $user->ip,
'username' => $user->data['username'],
'is_registered' => $user->data['is_registered'],
'user_colour' => $user->data['user_colour'],
);
$forum_id=request_var('forum_id', 0);
create_posts_pm($user_id, $msg_ids, $cur_folder_id, $forum_id);
$user->data['user_id']=$user_save['user_id'];
$user->ip=$user_save['user_ip'];
$user->data['username']=$user_save['username'];
$user->data['is_registered']=$user_save['is_registered'];
$user->data['user_colour']=$user_save['user_colour'];
$success_msg = (sizeof($msg_ids) == 1) ? 'MESSAGE_CREATED' : 'MESSAGES_CREATED';
$redirect = append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&folder=' . $cur_folder_id);
$redirect2 = append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id);
meta_refresh(3, $redirect);
trigger_error($user->lang[$success_msg]. '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . $redirect2 . '">', '</a>') . '<br /><br />' . sprintf($user->lang['RETURN_FOLDER'], '<a href="' . $redirect . '">', '</a>'));
}
else
{
$template->assign_vars(array(
'MESSAGE_TEXT_EXPLAIN' => select_forums('forum_id'),
)
);
$s_hidden_fields = array(
'cur_folder_id' => $cur_folder_id,
'mark_option' => 'create_posts',
'submit_mark' => true,
'marked_msg_id' => $msg_ids
);
confirm_box(false, 'CREATE_POSTS_PM', build_hidden_fields($s_hidden_fields));
}
break;
Код: Выделить всё
}
return $address_list;
}
Код: Выделить всё
function select_forums($key)
{
global $user, $config, $config, $phpbb_root_path, $phpEx;
include_once("{$phpbb_root_path}includes/functions_admin.{$phpEx}");
$forum_list = make_forum_select(false, false, true, true, true, false, true);
// Build forum options
$s_forum_options = '<select id="' . $key . '" name="' . $key . '">';
foreach ($forum_list as $f_id => $f_row)
{
$s_forum_options .= '<option value="' . $f_id . '"' . (($f_row['disabled']) ? ' disabled="disabled" class="disabled-option"' : '') . '>' . $f_row['padding'] . $f_row['forum_name'] . '</option>';
}
$s_forum_options .= '</select>';
return $s_forum_options;
}
function create_posts_pm($user_id, $msg_ids, $folder_id, $forum_id)
{
global $db, $user, $phpbb_root_path, $phpEx;
$user_id = (int) $user_id;
$folder_id = (int) $folder_id;
if (!$user_id)
{
return false;
}
if (!is_array($msg_ids))
{
if (!$msg_ids)
{
return false;
}
$msg_ids = array($msg_ids);
}
if (!sizeof($msg_ids))
{
return false;
}
$sql="SELECT forum_id, forum_name, enable_indexing FROM ".FORUMS_TABLE." WHERE forum_id='{$forum_id}'";
$result=$db->sql_query($sql);
$forum_data=$db->sql_fetchrow($result);
$db->sql_freeresult($result);
if(!sizeof($forum_data))
{
return false;
}
// Get PM Information for later deleting
$sql = 'SELECT msg_id
FROM ' . PRIVMSGS_TO_TABLE . '
WHERE ' . $db->sql_in_set('msg_id', array_map('intval', $msg_ids)) . "
AND folder_id = $folder_id
AND user_id = $user_id";
$result = $db->sql_query($sql);
$create_posts_rows = array();
$num_created = 0;
while ($row = $db->sql_fetchrow($result))
{
$create_posts_rows[$row['msg_id']] = $row['msg_id'];
}
$db->sql_freeresult($result);
unset($msg_ids);
if (!sizeof($create_posts_rows))
{
return false;
}
include_once("{$phpbb_root_path}includes/functions_posting.{$phpEx}");
$sql = 'SELECT pm.*, u.user_id, u.username, u.user_colour
FROM ' . PRIVMSGS_TABLE . ' pm LEFT JOIN '.USERS_TABLE.' u ON (pm.author_id=u.user_id)
WHERE ' . $db->sql_in_set('pm.msg_id', array_map('intval', $create_posts_rows)) . "";
$result = $db->sql_query($sql);
while($row=$db->sql_fetchrow($result))
{
$user->data['user_id']=$row['user_id'];
$user->ip=$row['author_ip'];
$user->data['username']=$row['username'];
$user->data['is_registered']=true;
$user->data['user_colour']=$row['user_colour'];
$subject=$row['message_subject'];
$username='';
$topic_type=0;
$poll=array();
$data=array(
'forum_name' => $forum_data['forum_name'],
'topic_title' => $subject,
'forum_id' => $forum_id,
'icon_id' => $row['icon_id'],
'topic_time_limit' => 0,
//'topic_attachment' => $row['message_attachment'] ? 1 : 0,
'attachment_data' => array(),
'topic_desc' => '',
'post_langvars' => 0,
//'post_attachment' => $row['message_attachment'] ? 1 : 0,
'enable_bbcode' => $row['enable_bbcode'],
'enable_smilies' => $row['enable_smilies'],
'enable_urls' => $row['enable_magic_url'],
'enable_sig' => $row['enable_sig'],
'bbcode_bitfield' => $row['bbcode_bitfield'],
'bbcode_uid' => $row['bbcode_uid'],
'post_edit_locked' => 0,
'message' => $row['message_text'],
'message_md5' => md5($row['message_text']),
'enable_indexing' => $forum_data['enable_indexing'] ? true : false,
'notify_set' => false,
'notify' => false,
);
$update_message = false;
$update_search_index = $forum_data['enable_indexing'] ? true : false;
submit_post('post', $subject, $username, $topic_type, $poll, $data, $update_message, $update_search_index);
}
$db->sql_freeresult($result);
/*$sql = 'DELETE
FROM ' . ATTACHMENTS_TABLE . '
WHERE ' . $db->sql_in_set('post_msg_id', array_map('intval', $create_posts_rows)) . " AND in_message='1'";
$result = $db->sql_query($sql);*/
/*$sql = 'UPDATE ' . ATTACHMENTS_TABLE . " SET in_message='0'
WHERE " . $db->sql_in_set('post_msg_id', array_map('intval', $create_posts_rows)) . " AND in_message='1'";
$result = $db->sql_query($sql);*/
return true;
}
Код: Выделить всё
// Is moving PM triggered through mark options?
if (!in_array($mark_option, array('mark_important', 'delete_marked')) && $submit_mark)
Код: Выделить всё
// Is moving PM triggered through mark options?
if (!in_array($mark_option, array('mark_important', 'delete_marked', 'create_posts')) && $submit_mark)
Код: Выделить всё
$icons = $cache->obtain_icons();
$color_rows = array('marked', 'replied');
Код: Выделить всё
$icons = $cache->obtain_icons();
$color_rows = array('marked', 'replied', 'new');
Код: Выделить всё
// Minimise edits
if (!$auth->acl_get('u_pm_delete') && $key = array_search('delete_marked', $mark_options))
Код: Выделить всё
$auth->acl_get('u_pm_createposts') ? $mark_options[]='create_posts' : '';
Код: Выделить всё
'acl_u_viewonline' => array('lang' => 'Может видеть статус присутствия', 'cat' => 'misc'),
'acl_u_search' => array('lang' => 'Может использовать поиск', 'cat' => 'misc'),
Код: Выделить всё
'acl_u_pm_createposts' => array('lang' => 'Может создавать сообщения из ЛС', 'cat' => 'pm'),
Код: Выделить всё
'NO_PENDING' => 'Нет кандидатов в члены группы',
'NO_NONMEMBER' => 'Нет пустых групп',
Код: Выделить всё
'NO_AUTH_CREATE_POSTS' => 'У вас нет доступа к функции создания сообщений.',
'CREATE_POSTS_PM' => 'Создать из отмеченных сообщения на форуме',
'CREATE_POSTS_PM_CONFIRM' => '<span style="color:#FF0000;">Пожалуйста убедитесь, что в указанных ЛС нет никаких личных данных</span>, выберите форум в который данные ЛС будут перемещены (вложения перемещены не будут), также необходимо учитывать права доступа авторов ЛС в выбранном форуме.',
'CREATE_POSTS' => 'Создать из отмеченных сообщения на форуме',
'MESSAGES_CREATED' => 'Сообщения успешно созданы',
'MESSAGE_CREATED' => 'Сообщение успешно создано',
Код: Выделить всё
<h2>{MESSAGE_TITLE}</h2>
<p>{MESSAGE_TEXT}</p>
Код: Выделить всё
<!-- IF MESSAGE_TEXT_EXPLAIN --><div style="text-align:center;padding-bottom:20px;">{MESSAGE_TEXT_EXPLAIN}</div><!-- ENDIF -->
Код: Выделить всё
<td class="row1" align="center"><br /><p class="gen">{MESSAGE_TEXT}</p><br />{S_HIDDEN_FIELDS}<input type="submit" name="confirm" value="{YES_VALUE}" class="btnmain" /> <input type="submit" name="cancel" value="{L_NO}" class="btnlite" /></td>
Код: Выделить всё
<td class="row1" align="center"><!-- IF MESSAGE_TEXT_EXPLAIN --><div style="text-align:center;padding-bottom:20px;">{MESSAGE_TEXT_EXPLAIN}</div><!-- ENDIF --><br /><p class="gen">{MESSAGE_TEXT}</p><br />{S_HIDDEN_FIELDS}<input type="submit" name="confirm" value="{YES_VALUE}" class="btnmain" /> <input type="submit" name="cancel" value="{L_NO}" class="btnlite" /></td>
Скриншоты:
Права в администраторском разделе
Личное сообщение
Опции для создания сообщения из ЛС
Сообщение из ЛС на форуме