неактуально Нужен мод видео вконтакте

Lange

Пользователь
Gemini_13, вот. Дим, проще html сделать, вставил хтмл тег и вуаля всё работает, без базы.
Код:
#-----[ SQL ]-------------------------------------------------
#
#
INSERT INTO bb_config (config_name, config_value) VALUES ('bbcode_html_group', '-1');
#
#-----[ OPEN ]------------------------------------------------
#
config.php
#
#-----[ FIND ]------------------------------------------------
#
define('TRIGGERS_DIR',  BB_PATH .'/triggers/' );
#
#-----[ AFTER, ADD ]------------------------------------------
#
 
//+MOD: HTML BBCode MOD
define('FOUNDER', 2);  // If needed, you can change 2 to the user_id of your main board admin.
//-MOD: HTML BBCode MOD
#
#-----[ OPEN ]------------------------------------------------
#
includes/functions.php
#
#-----[ FIND ]------------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]-----------------------------------------
#
//+MOD: HTML BBCode MOD
function bbcode_html_allowed()
{
  global $db, $userdata, $board_config;
  static $first_execution = true, $is_allowed = false;
 
  // This is a must: HTML BBCode is NOT allowed for guests!
  if( !$userdata['session_logged_in'] )
  {
    return false;
  }
 
  // Is HTML BBCode disabled?
  if( intval($board_config['bbcode_html_group']) < 0 && $userdata['user_id'] != FOUNDER )
  {
    // The HTML BBCode is still allowed for the main board administrator!
    return false;
  }
 
  // Being done above check, HTML BBCode IS now allowed for ALL Admins!
  if( $userdata['user_level'] == ADMIN )
  {
    return true;
  }
 
  // If a usergroup has been allowed to use the HTML BBCode,
  // $board_config['bbcode_html_group'] must be greater than 0.
  // Otherwise, deny it! :-P
  if( intval($board_config['bbcode_html_group']) <= 0 )
  {
    return false;
  }
 
  // Is group information about current user cached on local static storage?
  // Useful to optimize DB usage when several instances of the HTML BBCode
  // are used in viewtopic, etc. :-)
  if( $first_execution )
  {
    // Prevent from doing the same job more than once in a single page execution.
    $first_execution = false;
 
    // Let's see if the user is connected to the group with permissions to use the HTML BBCode.
    $sql = "SELECT COUNT(*) AS total
      FROM " . USER_GROUP_TABLE . "
      WHERE user_pending = 0
      AND group_id = ".$board_config['bbcode_html_group']."
      AND user_id = ".$userdata['user_id'];
    if( !($result = $db->sql_query($sql)) || !($row = $db->sql_fetchrow($result)) )
    {
      message_die(GENERAL_ERROR, 'Could not obtain access control list', '', __LINE__, __FILE__, $sql);
    }
    // Yet another funny way to check it. Got it? :-)
//    $is_allowed = ( ( is_numeric($row['total']) && $row['total'] > 0 ) ? true : false );
    $is_allowed = ( intval($row['total']) > 0 ? true : false );    // PHP 3 compatible!
  }
 
  return $is_allowed;
}
 
function bbcode_html_get_select($select_name, $selected_id = -1)
{
  global $db, $lang;
 
  switch($select_name)
  {
  case 'bbcode_html_group':
    $sql = "SELECT group_id, group_name
      FROM " . GROUPS_TABLE . "
      WHERE group_single_user <> " . TRUE . "
      ORDER BY group_name";
    if( !($result = $db->sql_query($sql)) )
    {
      message_die(GENERAL_ERROR, 'Could not obtain group list', '', __LINE__, __FILE__, $sql);
    }
    $groups_count = (!($rowset = $db->sql_fetchrowset($result)) ? 0 : count($rowset));
 
    $select_list = '<select name="'.$select_name.'">';
    $selected = ( $selected_id < 0 ? 'selected="selected"' : '' );
    $select_list .= '<option value="-1" '.$selected.'>'.$lang['HTML_BBCode_disabled'].'</option>';
    $selected = ( $selected_id == 0 ? 'selected="selected"' : '' );
    $select_list .= '<option value="0" '.$selected.'>'.$lang['HTML_BBCode_admins'].'</option>';
    for( $i = 0; $i < $groups_count; $i++ )
    {
      $selected = ( $selected_id == $rowset[$i]['group_id'] ? 'selected="selected"' : '' );
      $select_list .= '<option value="'.$rowset[$i]['group_id'].'" '.$selected.'>'.$rowset[$i]['group_name'].'</option>';
    }
    $select_list .= '</select>';
    break;
  default:
    $select_list = '';
    break;
  }
  return $select_list;
}
//-MOD: HTML BBCode MOD
 
#
#-----[ OPEN ]------------------------------------------------
#
includes/bbcode.php
#
#
#-----[ FIND ]------------------------------------------------
#
// colours
#
#-----[ BEFORE, ADD ]-----------------------------------------
#
//+MOD: HTML BBCode MOD
  // [html]HTML goes here[/html]
  $text = bbencode_second_pass_html($text, $uid, $bbcode_tpl);
//-MOD: HTML BBCode MOD
 
#
#-----[ FIND ]------------------------------------------------
#
// [color] and [/color] for setting text color
#
#-----[ BEFORE, ADD ]-----------------------------------------
#
//+MOD: HTML BBCode MOD
  // [html] and [/html] for inserting HTML code
  $text = bbencode_first_pass_html($text, $uid);
//-MOD: HTML BBCode MOD
 
#
#-----[ FIND ]------------------------------------------------
#
// #############################################################################
/**
* Strips away bbcode from a given string, leaving plain text
*
* @param  string  Text to be stripped of bbcode tags
* @param  boolean  If true, strip away quote tags AND their contents
* @param  boolean  If true, use the fast-and-dirty method rather than the shiny and nice method
*
* @return  string
*/
#
#-----[ BEFORE, ADD ]------------------------------------------
#
 
//+MOD: HTML BBCode MOD
function bbencode_second_pass_html($text, $uid, $bbcode_tpl)
{
  global $lang;
 
  $unhtml_specialchars_match = array('#&gt;#', '#&lt;#', '#&quot;#', '#&amp;#');
  $unhtml_specialchars_replace = array('>', '<', '"', '&');
 
  $code_start_html = $bbcode_tpl['html_open'];
  $code_end_html =  $bbcode_tpl['html_close'];
 
  // First, do all the 1st-level matches. These need an htmlspecialchars() run,
  // so they have to be handled differently.
  $match_count = preg_match_all("#\[html:$uid\](.*?)\[/html:$uid\]#si", $text, $matches);
 
  for ($i = 0; $i < $match_count; $i++)
  {
    $before_replace = $matches[1][$i];
    $after_replace = $matches[1][$i];
 
    $after_replace = preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, $after_replace);
    $after_replace = str_replace("\n", "", $after_replace);
 
    $str_to_match = "[html:$uid]" . $before_replace . "[/html:$uid]";
 
    $replacement = $code_start_html;
    $replacement .= $after_replace;
    $replacement .= $code_end_html;
 
    $text = str_replace($str_to_match, $replacement, $text);
  }
 
  // Now, do all the non-first-level matches. These are simple.
  $text = str_replace("[html:$uid]", $code_start_html, $text);
  $text = str_replace("[/html:$uid]", $code_end_html, $text);
 
  return $text;
 
} // bbencode_second_pass_html()
 
function bbencode_first_pass_html($text, $uid)
{
  if( bbcode_html_allowed() )
  {
    $text = preg_replace("#\[html\](.*?)\[/html\]#si", "[html:$uid]\\1[/html:$uid]", $text);
  }
  return $text;
 
} // bbencode_first_pass_html()
//-MOD: HTML BBCode MOD
#
#-----[ OPEN ]------------------------------------------------
#
#
templates/default/bbcode.tpl
#
#-----[ FIND ]------------------------------------------------
#
<!-- BEGIN b_open --><span style="font-weight: bold;"><!-- END b_open -->
<!-- BEGIN b_close --></span><!-- END b_close -->
#
#-----[ BEFORE, ADD ]-----------------------------------------
#
<!-- BEGIN html_open --><!-- END html_open -->
<!-- BEGIN html_close --><!-- END html_close -->
 
#
#-----[ OPEN ]------------------------------------------------
#
#  NOTE --- You need to do this for all your installed languages
#
language/lang_russian/lang_main.php
#
#-----[ FIND ]------------------------------------------------
$lang['bbcode_f_help'] =
#
#-----[ AFTER, ADD ]------------------------------------------
#
$lang['bbcode_help']['html'] = 'HTML: [html]text[/html] (alt+%s)';
#
#-----[ OPEN ]------------------------------------------------
#
#
language/lang_russian/lang_bbcode.php
#
#-----[ FIND ]------------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]-----------------------------------------
#
//+MOD: HTML BBCode MOD
if( bbcode_html_allowed() )
{
  $faq[] = array("Использование HTML BBCode "," HTML BBCode позволяет вводить HTML теги себя при отправке сообщения. Возможно также, чтобы получить возможность отправлять JavaScript, Flash или Java-объектов, форм и т.д. и т.п. Вы даже можете использовать другие теги BBCode в блок HTML!<br /><br />Синтаксис HTML BBCode довольно прост. Все, что вам нужно сделать, это разграничить ваш HTML текст между<span style=\"color:darkblue\">[html]</span> and <span style=\"color:darkblue\">[/html]</span>.<br />");
}
//-MOD: HTML BBCode MOD
#
#-----[ OPEN ]------------------------------------------------
#
language/lang_russian/lang_admin.php
#
#-----[ FIND ]------------------------------------------------
#
$lang['TEMPLATE'] =
#
#-----[ AFTER, ADD ]------------------------------------------
#
  //+MOD: HTML BBCode MOD
$lang['Allow_HTML_BBCode'] = "Разрешить HTML BBCode";
$lang['Allow_HTML_BBCode_explain'] = "Вы можете установить HTML BBCode как <b>disabled</b> для всех (рекомендуется). Только главный Администратор может изменять эту настройку.<br />Выберите, 'Администраторы'  чтобы позволить другим Администраторам использовать HTML BBCode.<br />Выберите группу пользователей, чтобы ее члены (и другие администраторы), могли использовать HTML BBCode.<br /><b>ВНИМАНИЕ:</b> Разрешайте использование этого BBCode с осторожностью, только если вы доверяете им 100%!";
$lang['HTML_BBCode_disabled'] = "Disabled";
$lang['HTML_BBCode_admins'] = "Администраторы";
//-MOD: HTML BBCode MOD
#
#-----[ OPEN ]------------------------------------------------
#
admin/admin_board.php
#
#-----[ FIND ]------------------------------------------------
#
$prune_no = ( !$new['prune_enable'] ) ? "checked=\"checked\"" : "";
#
#-----[ AFTER, ADD ]------------------------------------------
#
//+MOD: HTML BBCode MOD
$html_bbcode_select = bbcode_html_get_select('bbcode_html_group', $new['bbcode_html_group']);
//-MOD: HTML BBCode MOD
#
#-----[ FIND ]------------------------------------------------
#
  "L_ENABLE_GZIP" => $lang['Enable_gzip'],
  "L_ENABLE_PRUNE" => $lang['Enable_prune'],
#
#-----[ AFTER, ADD ]------------------------------------------
#
//+MOD: HTML BBCode MOD
  "L_ALLOW_HTML_BBCODE" => $lang['Allow_HTML_BBCode'],
  "L_ALLOW_HTML_BBCODE_EXPLAIN" => $lang['Allow_HTML_BBCode_explain'],
//-MOD: HTML BBCode MOD
#
#-----[ FIND ]------------------------------------------------
#
  "PRUNE_YES" => $prune_yes,
  "PRUNE_NO" => $prune_no,
#
#-----[ AFTER, ADD ]------------------------------------------
#
//+MOD: HTML BBCode MOD
  "HTML_BBCODE_SELECT" => $html_bbcode_select,
//-MOD: HTML BBCode MOD
#
#-----[ FIND ]------------------------------------------------
#
    message_die(GENERAL_MESSAGE, $message);
  }
#
#-----[ AFTER, ADD ]-----------------------------------------
#
//+MOD: HTML BBCode MOD
if( $userdata['user_id'] == FOUNDER )
{
  $template->assign_block_vars('bbcode_html_allowed', array());
}
//-MOD: HTML BBCode MOD
 
#
#-----[ OPEN ]------------------------------------------------
#
#
templates/admin/admin_board.tpl
#
#-----[ FIND ]------------------------------------------------
#
<tr>
  <td><h4>{L_ENABLE_PRUNE}</h4></td>
  <td><input type="radio" name="prune_enable" value="1" {PRUNE_YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="prune_enable" value="0" {PRUNE_NO} /> {L_NO}</td>
</tr>
#
#-----[ AFTER, ADD ]------------------------------------------
#
<!-- BEGIN bbcode_html_allowed -->
  <tr>
    <td class="row1">{L_ALLOW_HTML_BBCODE}<br /><span class="gensmall">{L_ALLOW_HTML_BBCODE_EXPLAIN}</span></td>
    <td class="row2">{HTML_BBCODE_SELECT}</td>
  </tr>
<!-- END bbcode_html_allowed -->
#
#-----[ SAVE/CLOSE ALL FILES ]--------------------------------
#
# EoM

Please Login or Register to view hidden text.

 
G

Gemini_13

Гость
Lange, а... не так понял, подумал, что был готовый вк, почему же и попросил, удивился)
с хтмл посидеть чуток надо... сроки и результаты обещать не буду
 

drew

Пользователь
Вот и все. На стиль не обращайте внимания спер его с бетрепака )))
 

Вложения

  • Безымянный.png
    Безымянный.png
    214.7 KB · Просмотры: 72
G

Gemini_13

Гость
dimka3210, вставляет ссыль с хешем судя по скрину :)
так то сделать можно, но не козырно, имхо
 
G

Gemini_13

Гость
dimka3210, ну то да.. на примере любого ббкода сделать:
1. код до ссылки
2. ссылка
3. код после ссылки
4. кнопка в 2 файла

а что если во время отправки сообщения в котором есть ббкод вк видео переходить на страницу видео, парсить хеш и сразу менять его в сообщении, которое летит в базу? идея через анус, но хз-хз...
 
Сверху