- <?php
- abstract class bbcode {
- /*
- * Класс для обработки текста
- * @authot: Shamsik
- * @var bbcode
- */
- public function process($text) {
- $process = array(' '=>'_');
- if( $type == 'link' ) {
- $process[' '] = '_';
- }
- $process = strtr( $text, $process);
-
- return $process;
- }
- /*
- * Обработка ссылки
- */
- public function link($link) {
-
- return'<a target="_blank" href="http://'.$_SERVER['HTTP_HOST'].'/go.php?url='.@base64_encode(''.$link[1].'').'">'.$link[2].'</a>';
- }
- /*
- * Обработка Спойлера
- */
- public function link_spoiler($spoiler) {
-
- return '<div class="spoiler"><b><a href="#" onclick="show_hide(\'#'.bbcode::process($spoiler[1]).'\');">'.$spoiler[1].'</a></b>
- <div id="'.bbcode::process($spoiler[1]).'" style="display: none; overflow: hidden; vertical-align: top;">'.$spoiler[2].'</div></div>';
- }
- /*
- * Подвеска PHP кода
- */
- public function printCode($code) {
- $code = strtr($code,array('|'=>'|','<'=>'<','>'=>'>','&'=>'&','$'=>'$','"'=>'"','''=>"'", '\'=>'`',
- '%'=>'%','^'=>'^',':'=>':','<br />'=>"\r\n"));
-
- if(!strpos($code,'<?') && substr($code,0,2)!='<?') {
- $code="<?php\r\n".trim($code).'?>';
- }
- $code = highlight_string($code, true);
- $code = strtr($code,array("\r\n"=>'<br />','|'=>'|', '$'=>'$', "'"=>''', '`'=>'\', '%'=>'%','^'=>'^', ':'=>':'));
- $code = $code;
-
- return '<div class="SHCMS_code">'.$code.'</div>';
- }
- /*
- * Скрывает текст от неавторизованных
- */
- public function hidden_text($hide) {
- global $user_id;
- if(isset($user_id)){
- $hide = '<div class="hide"><b>Скрытый текст </b><br/> '.$hide.'</div>';
- }else {
- $hide = '<div class="hide"><b>Скрытый текст</b> <br/>Для отображения текста необходимо пройти авторизацию на сайте.</div>';
- }
-
- return $hide;
- }
- /*
- * Обработка тэгов
- */
- public function bb_codes($message) {
- $message = preg_replace('#\[small\](.*?)\[/small\]#si', '<div style="font-size: smaller;">\1</div>', $message);
- $message = preg_replace(array ('#\[php\](.*?)\[\/php\]#se'), array ("''.bbcode::printCode('$1').''"), str_replace("]\n", "]", $message));
- $message= preg_replace_callback('/\[url=(.+)\](.+)\[\/url\]/isU', 'bbcode::link', $message);
- $message= preg_replace_callback('/\[spoiler=(.+)\](.+)\[\/spoiler\]/isU', 'bbcode::link_spoiler', $message);
- $message = preg_replace('#\[img\](.*?)\[/img\]#si', '<img src="\1"/>', $message);
- $message = preg_replace('#\[left\](.*?)\[/left\]#si', '<div align="left">\1</div>', $message);
- $message = preg_replace('#\[right\](.*?)\[/right\]#si', '<div align="right">\1</div>', $message);
- $message = preg_replace('#\[center\](.*?)\[/center\]#si', '<div align="center">\1</div>', $message);
- $message = preg_replace('#\[post\](.*?)\[/post\]#si', '<div class="posts">\1</div>', $message);
- $message = preg_replace('#\[fontred\](.*?)\[/fontred\]#si', '<font color="red">\1</font>', $message);
- $message = preg_replace('#\[hide\](.*?)\[/hide\]#ie', 'bbcode::hidden_text("\1")', $message);
- $message = nl2br($message);
-
- return $message;
- }
-
- }
- ?>