function parser_simple_post_edit($text = '') { // глюк FireFox исправлем замену абсолютного пути src на абсолютный $text = str_replace('src="../../', 'src="' . getinfo('site_url'), $text); $text = str_replace('src="../', 'src="' . getinfo('site_url'), $text); return $text; }
/** * Get the number of pos block in the last @param hours * * @param int $hours * * @return int */ function get_num_pos($hours) { $network_info = getinfo(); $currentblock = $network_info["blocks"]; $iblock = intval($currentblock) - 6 * $hours; $POScoins = 0; $POWcoins = 0; $POS = 0; $POW = 0; $avgPOScoins = 0; $avgPOWcoins = 0; while ($iblock != intval($currentblock)) { $flag = block_flag($iblock); $coins = block_mint($iblock); if (strpos($flag, "proof-of-stake") !== false) { $POS++; $POScoins += $coins; } else { $POW++; $POWcoins += $coins; } $iblock++; } if ($POS > 0) { $avgPOScoins = $POScoins / $POS; } if ($POW > 0) { $avgPOWcoins = $POWcoins / $POW; } return array($POS, $POW, $POScoins, $POWcoins, $avgPOScoins, $avgPOWcoins); }
function smiles_custom($content) { $CI =& get_instance(); $CI->load->helper('smiley'); $content = parse_smileys($content, getinfo('uploads_url') . 'smiles/'); return $content; }
function login_form_widget($num = 1) { $out = ''; $widget = 'login_form_widget_' . $num; // имя для опций = виджет + номер $options = mso_get_option($widget, 'plugins', array()); // получаем опции if (is_login()) { $out = '<p><strong>' . t('Привет,') . ' ' . getinfo('users_nik') . '!</strong><br> [<a href="' . getinfo('siteurl') . 'admin">' . t('управление') . '</a>] [<a href="' . getinfo('siteurl') . 'logout' . '">' . t('выйти') . '</a>] </p>'; } elseif ($comuser = is_login_comuser()) { if (!$comuser['comusers_nik']) { $cun = t('Привет!'); } else { $cun = t('Привет,') . ' ' . $comuser['comusers_nik'] . '!'; } $out = '<p><strong>' . $cun . '</strong><br> [<a href="' . getinfo('siteurl') . 'users/' . $comuser['comusers_id'] . '">' . t('своя страница') . '</a>] [<a href="' . getinfo('siteurl') . 'logout' . '">' . t('выйти') . '</a>] </p>'; } else { $after_form = isset($options['after_form']) ? $options['after_form'] : ''; $out = mso_login_form(array('login' => t('Логин (email):') . ' ', 'password' => t('Пароль:') . ' ', 'submit' => '', 'form_end' => $after_form), getinfo('siteurl') . mso_current_url(), false); } if ($out) { if (isset($options['header']) and $options['header']) { $out = mso_get_val('widget_header_start', '<h2 class="box"><span>') . $options['header'] . mso_get_val('widget_header_end', '</span></h2>') . $out; } } return $out; }
function audioplayer_content_callback($matches) { $url = $matches[1]; $id = md5($url); $out = '<p id="' . $id . '" class="audioplayer"></p><script>AudioPlayer.setup("' . getinfo('plugins_url') . 'audioplayer/player.swf", {width: 350}); AudioPlayer.embed("' . $id . '", {soundFile: "' . $url . '"}); </script>'; return $out; }
function editor_digraph($args = array()) { $editor_config['url'] = getinfo('plugins_url') . 'editor_digraph/'; $editor_config['dir'] = getinfo('plugins_dir') . 'editor_digraph/'; if (isset($args['content'])) { $editor_config['content'] = $args['content']; } else { $editor_config['content'] = ''; } if (isset($args['do'])) { $editor_config['do'] = $args['do']; } else { $editor_config['do'] = ''; } if (isset($args['posle'])) { $editor_config['posle'] = $args['posle']; } else { $editor_config['posle'] = ''; } if (isset($args['action'])) { $editor_config['action'] = ' action="' . $args['action'] . '"'; } else { $editor_config['action'] = ''; } if (isset($args['height'])) { $editor_config['height'] = (int) $args['height']; } else { $editor_config['height'] = (int) mso_get_option('editor_height', 'general', 400); if ($editor_config['height'] < 100) { $editor_config['height'] = 400; } } require $editor_config['dir'] . 'digraph.php'; }
function bbcode_custom($text = '') { $text = preg_replace_callback('~\\[pre(.*?)\\](.*?)\\[\\/pre\\]~si', 'bbcode_pre_callback', $text); $preg = array('~\\[b (.*?)\\](.*?)\\[\\/b\\]~si' => '<strong $1>$2</strong>', '~\\[b\\](.*?)\\[\\/b\\]~si' => '<strong>$1</strong>', '~\\[bold (.*?)\\](.*?)\\[\\/bold\\]~si' => '<b $1>$2</b>', '~\\[bold\\](.*?)\\[\\/bold\\]~si' => '<b>$1</b>', '~\\[i (.*?)\\](.*?)\\[\\/i\\]~si' => '<em$1>$2</em>', '~\\[i\\](.*?)\\[\\/i\\]~si' => '<em>$1</em>', '~\\[italic (.*?)\\](.*?)\\[\\/italic\\]~si' => '<i$1>$2</i>', '~\\[italic\\](.*?)\\[\\/italic\\]~si' => '<i>$1</i>', '~\\[del (.*?)\\](.*?)\\[\\/del\\]~si' => '<del $1>$2</del>', '~\\[del\\](.*?)\\[\\/del\\]~si' => '<del>$1</del>', '~\\[s (.*?)\\](.*?)\\[\\/s\\]~si' => '<s $1>$2</s>', '~\\[s\\](.*?)\\[\\/s\\]~si' => '<s>$1</s>', '~\\[u (.*?)\\](.*?)\\[\\/u\\]~si' => '<u $1>$2</u>', '~\\[u\\](.*?)\\[\\/u\\]~si' => '<u>$1</u>', '~\\[sub\\](.*?)\\[\\/sub\\]~si' => '<sub>$1</sub>', '~\\[sup\\](.*?)\\[\\/sup\\]~si' => '<sup>$1</sup>', '~\\[small\\](.*?)\\[\\/small\\]~si' => '<small>$1</small>', '~\\[color=(.*?)\\](.*?)\\[\\/color\\]~si' => '<span style="color:$1">$2</span>', '~\\[size=(.*?)\\](.*?)\\[\\/size\\]~si' => '<span style="font-size:$1">$2</span>', '~\\[div=(.*?)\\](.*?)\\[\\/div\\]~si' => '<div style="$1">$2</div>', '~\\[span=(.*?)\\](.*?)\\[\\/span\\]~si' => '<span style="$1">$2</span>', '~\\[left (.*?)\\](.*?)\\[\\/left\\]~si' => '<div style="text-align: left; $1">$2</div>', '~\\[left\\](.*?)\\[\\/left\\]~si' => '<div style="text-align: left;">$1</div>', '~\\[right (.*?)\\](.*?)\\[\\/right\\]~si' => '<div style="text-align: right; $1">$2</div>', '~\\[right\\](.*?)\\[\\/right\\]~si' => '<div style="text-align: right;">$1</div>', '~\\[center (.*?)\\](.*?)\\[\\/center\\]~si' => '<div style="text-align: center; $1">$2</div>', '~\\[center\\](.*?)\\[\\/center\\]~si' => '<div style="text-align: center;">$1</div>', '~\\[justify (.*?)\\](.*?)\\[\\/justify\\]~si' => '<div style="text-align: justify; $1">$2</div>', '~\\[justify\\](.*?)\\[\\/justify\\]~si' => '<div style="text-align: justify;">$1</div>', '~\\[p\\](.*?)\\[\\/p\\]~si' => '<p>$1</p>', '~\\[p=(.*?)\\](.*?)\\[\\/p\\]~si' => '<p style="$1">$2</p>', '~\\[p (.*?)\\](.*?)\\[\\/p\\]~si' => '<p $1>$2</p>', '~\\[p\\((.*?)\\)\\](.*?)\\[\\/p\\]~si' => '<p class="$1">$2</p>', '~\\[pleft\\](.*?)\\[\\/pleft\\]~si' => '<p style="text-align: left;">$1</p>', '~\\[pright\\](.*?)\\[\\/pright\\]~si' => '<p style="text-align: right;">$1</p>', '~\\[pcenter\\](.*?)\\[\\/pcenter\\]~si' => '<p style="text-align: center;">$1</p>', '~\\[pjustify\\](.*?)\\[\\/pjustify\\]~si' => '<p style="text-align: justify;">$1</p>', '~\\[abbr\\](.*?)\\[\\/abbr\\]~si' => '<abbr>$1</abbr>', '~\\[abbr (.*?)\\](.*?)\\[\\/abbr\\]~si' => '<abbr title="$1">$2</abbr>', '~\\[q\\](.*?)\\[\\/q\\]~si' => '<q>$1</q>', '~\\[q (.*?)\\](.*?)\\[\\/q\\]~si' => '<q $1">$2</q>', '~\\[cite\\](.*?)\\[\\/cite\\]~si' => '<cite>$1</cite>', '~\\[cite (.*?)\\](.*?)\\[\\/cite\\]~si' => '<cite $1">$2</cite>', '~\\[address\\](.*?)\\[\\/address\\]~si' => '<address>$1</address>', '~\\[address (.*?)\\](.*?)\\[\\/address\\]~si' => '<address $1">$2</address>', '~\\[dfn\\](.*?)\\[\\/dfn\\]~si' => '<dfn>$1</dfn>', '~\\[dfn (.*?)\\](.*?)\\[\\/dfn\\]~si' => '<dfn $1">$2</dfn>', '~\\[dl\\](.*?)\\[\\/dl\\]~si' => '<dl>$1</dl>', '~\\[dl (.*?)\\](.*?)\\[\\/dl\\]~si' => '<dl $1">$2</dl>', '~\\[dt\\](.*?)\\[\\/dt\\]~si' => '<dt>$1</dt>', '~\\[dt (.*?)\\](.*?)\\[\\/dt\\]~si' => '<dt $1">$2</dt>', '~\\[dd\\](.*?)\\[\\/dd\\]~si' => '<dd>$1</dd>', '~\\[dd (.*?)\\](.*?)\\[\\/dd\\]~si' => '<dd $1">$2</dd>', '~\\[ins\\](.*?)\\[\\/ins\\]~si' => '<ins>$1</ins>', '~\\[ins (.*?)\\](.*?)\\[\\/ins\\]~si' => '<ins $1">$2</ins>', '~\\[hr\\]~si' => '<hr>', '~\\[line\\]~si' => '<hr>', '~\\[table\\]~si' => '<table>', '~\\[table (.*?)\\]~si' => '<table $1>', '~\\[\\/table\\]~si' => '</table>', '~\\[tr\\]~si' => '<tr>', '~\\[tr (.*?)\\]~si' => '<tr $1>', '~\\[\\/tr\\]~si' => '</tr>', '~\\[td\\]~si' => '<td>', '~\\[td (.*?)\\]~si' => '<td $1>', '~\\[\\/td\\]~si' => '</td>', '~\\[th\\]~si' => '<th>', '~\\[th (.*?)\\]~si' => '<th $1>', '~\\[\\/th\\]~si' => '</th>', '~\\[\\*\\](.*?)\\[\\/\\*\\]~si' => '<li>$1</li>', '~\\[\\*\\]~si' => '<li>', '~\\[ul\\](.*?)\\[\\/ul\\]~si' => "<ul>\$1</li></ul>", '~\\[list\\](.*?)\\[\\/list\\]~si' => "<ul>\$1</li></ul>", '~\\[ol\\](.*?)\\[\\/ol\\]~si' => '<ol>$1</li></ol>', '~\\[li\\]~si' => '<li>', '~\\[li (.*?)\\]~si' => '<li $1>', '~\\[\\/li\\]~si' => '</li>', '~\\[h1\\](.*?)\\[\\/h1\\]~si' => '<h1>$1</h1>', '~\\[h1\\((.[^ ]*?)\\)\\](.*?)\\[\\/h1\\]~si' => '<h1 class="$1">$2</h1>', '~\\[h1 (.*?)\\](.*?)\\[\\/h1\\]~si' => '<h1 $1>$2</h1>', '~\\[h2\\](.*?)\\[\\/h2\\]~si' => '<h2>$1</h2>', '~\\[h2\\((.[^ ]*?)\\)\\](.*?)\\[\\/h2\\]~si' => '<h2 class="$1">$2</h2>', '~\\[h2 (.*?)\\](.*?)\\[\\/h2\\]~si' => '<h2 $1>$2</h2>', '~\\[h3\\](.*?)\\[\\/h3\\]~si' => '<h3>$1</h3>', '~\\[h3\\((.[^ ]*?)\\)\\](.*?)\\[\\/h3\\]~si' => '<h3 class="$1">$2</h3>', '~\\[h3 (.*?)\\](.*?)\\[\\/h3\\]~si' => '<h3 $1>$2</h3>', '~\\[h4\\](.*?)\\[\\/h4\\]~si' => '<h4>$1</h4>', '~\\[h4\\((.[^ ]*?)\\)\\](.*?)\\[\\/h4\\]~si' => '<h4 class="$1">$2</h4>', '~\\[h4 (.*?)\\](.*?)\\[\\/h4\\]~si' => '<h4 $1>$2</h4>', '~\\[h5\\](.*?)\\[\\/h5\\]~si' => '<h5>$1</h5>', '~\\[h5\\((.[^ ]*?)\\)\\](.*?)\\[\\/h5\\]~si' => '<h5 class="$1">$2</h5>', '~\\[h5 (.*?)\\](.*?)\\[\\/h5\\]~si' => '<h5 $1>$2</h5>', '~\\[h6\\](.*?)\\[\\/h6\\]~si' => '<h6>$1</h6>', '~\\[h6\\((.[^ ]*?)\\)\\](.*?)\\[\\/h6\\]~si' => '<h6 class="$1">$2</h6>', '~\\[h6 (.*?)\\](.*?)\\[\\/h6\\]~si' => '<h6 $1>$2</h6>', '~\\[code\\](.*?)\\[\\/code\\]~si' => '<code>$1</code>', '~\\[url\\](.*?)\\[\\/url\\]~si' => '<a href="$1">$1</a>', '~\\[url=(.[^ ]*?)\\](.*?)\\[\\/url\\]~si' => '<a href="$1">$2</a>', '~\\[url=(.[^\\s]*?) (.*?)\\](.*?)\\[\\/url\\]~si' => '<a href="$1" $2>$3</a>', '~\\[url (.*?)\\](.*?)\\[\\/url\\]~si' => '<a href="$2" $1>$2</a>', '~\\[imgleft=(.*?)x(.*?)\\](.*?)\\[\\/imgleft\\]~si' => '<img src="$3" style="float: left; margin: 0 10px 0 0; width: $1px; height: $2px">', '~\\[imgleft\\](.*?)\\[\\/imgleft\\]~si' => '<img src="$1" style="float: left; margin: 0 10px 0 0;">', '~\\[imgleft (.*?)\\](.*?)\\[\\/imgleft\\]~si' => '<img src="$2" title="$1" alt="$1" style="float: left; margin: 0 10px 0 0;">', '~\\[imgright=(.*?)x(.*?)\\](.*?)\\[\\/imgright\\]~si' => '<img src="$3" style="float: right; margin: 0 0 0 10px; width: $1px; height: $2px">', '~\\[imgright\\](.*?)\\[\\/imgright\\]~si' => '<img src="$1" style="float: right; margin: 0 0 0 10px;">', '~\\[imgright (.*?)\\](.*?)\\[\\/imgright\\]~si' => '<img src="$2" title="$1" alt="$1" style="float: right; margin: 0 0 0 10px;">', '~\\[imgcenter\\](.*?)\\[\\/imgcenter\\]~si' => '<div style="text-align: center"><img src="$1"></div>', '~\\[imgcenter (.*?)\\](.*?)\\[\\/imgcenter\\]~si' => '<div style="text-align: center"><img src="$2" title="$1" alt="$1"></div>', '~\\[imgmini=_(.*?)\\](.*?)\\[\\/imgmini\\]~si' => '<a href="$2" target="_blank" class="lightbox"><img src="$1"></a>', '~\\[imgmini=(.*?)\\](.*?)\\[\\/imgmini\\]~si' => '<a href="$2"><img src="$1" class="lightbox"></a>', '~\\[img=(.*?)x(.*?)\\](.*?)\\[\\/img\\]~si' => '<img src="$3" style="width: $1px; height: $2px">', '~\\[img (.*?)\\](.*?)\\[\\/img\\]~si' => '<img src="$2" title="$1" alt="$1">', '~\\[img\\](.*?)\\[\\/img\\]~si' => '<img src="$1" title="" alt="">', '~\\[img\\((.[^ ]*?)\\)\\](.*?)\\[\\/img\\]~si' => '<img src="$2" alt="" class="$1">', '~\\[img\\((.[^ ]*?)\\) (.*?)\\](.*?)\\[\\/img\\]~si' => '<img src="$3" alt="$2" title="$2" class="$1">', '~\\[quote\\](.*?)\\[\\/quote\\]~si' => '<blockquote>$1</blockquote>', '~\\[quote=(?:"|"|\')?(.*?)["\']?(?:"|"|\')?\\](.*?)\\[\\/quote\\]~si' => '<blockquote><strong class="src">$1:</strong>$2</blockquote>', '~\\[div\\((.*?)\\)\\](.*?)\\[\\/div\\]~si' => '<div class="$1">$2</div>', '~\\[div (.*?)\\](.*?)\\[\\/div\\]~si' => '<div $1>$2</div>', '~\\[div\\((.*?)\\) (.*?)\\](.*?)\\[\\/div\\]~si' => '<div class="$1" $2>$3</div>', '~\\[span\\((.*?)\\)\\](.*?)\\[\\/span\\]~si' => '<span class="$1">$2</span>', '~\\[span (.*?)\\](.*?)\\[\\/span\\]~si' => '<span $1>$2</span>', '~\\[span\\((.*?)\\) (.*?)\\](.*?)\\[\\/span\\]~si' => '<span class="$1" $2>$3</span>', '~\\[getinfo siteurl\\]~si' => getinfo('siteurl'), '~\\[getinfo template_url\\]~si' => getinfo('template_url'), '~\\[getinfo uploads_url\\]~si' => getinfo('uploads_url'), '~\\[getinfo shared_url\\]~si' => getinfo('shared_url')); if (strpos($text, '[text-demo]') !== false) { if (file_exists(getinfo('plugins_dir') . 'bbcode/text-demo.txt')) { $text_demo = file_get_contents(getinfo('plugins_dir') . 'bbcode/text-demo.txt'); $text = str_replace('[text-demo]', $text_demo, $text); } } if (strpos($text, '[text-normalize]') !== false) { if (file_exists(getinfo('plugins_dir') . 'bbcode/text-normalize.txt')) { $text_normalize = file_get_contents(getinfo('plugins_dir') . 'bbcode/text-normalize.txt'); $text = str_replace('[text-normalize]', $text_normalize, $text); } } $text = preg_replace(array_keys($preg), array_values($preg), $text); # другие сложные патерны и замены // создание ul/li списка по принципу меню $pattern = '~\\[create_list\\((.*?)\\)\\](.*?)\\[/create_list\\]~si'; // с указаным css-классом $text = preg_replace_callback($pattern, 'bbcode_create_list_callback', $text); $pattern = '~\\[create_list\\](.*?)\\[/create_list\\]~si'; // без класса $text = preg_replace_callback($pattern, 'bbcode_create_list_callback', $text); // [show Вопрос] текст [/show] $pattern = '~\\[show (.*?)\\](.*?)\\[\\/show\\]~si'; $text = preg_replace_callback($pattern, 'bbcode_show_callback', $text); // по хуку bbcode можно выполнить свои замены $text = mso_hook('bbcode', $text); // pr($text, 1); return $text; }
function lightbox_content($text = '') { $url = getinfo('plugins_url') . 'lightbox/images/'; $preg = array('~<p>\\[gal=(.*?)\\[\\/gal\\]</p>~si' => '[gal=$1[/gal]', '~<p>\\[gallery(.*?)\\](\\s)*</p>~si' => '[gallery$1]', '~<p>\\[\\/gallery\\](\\s)*</p>~si' => '[/gallery]', '~<p>\\[gallery(.*?)\\](\\s)*~si' => '[gallery$1]', '~\\[\\/gallery\\](\\s)*</p>~si' => '[/gallery]', '~\\[gallery=(.*?)\\](.*?)\\[\\/gallery\\]~si' => '<div class="gallery$1">$2</div><script>\\$(function() { lburl = \'' . $url . '\'; \\$(\'div.gallery$1 a\').lightBox({imageLoading: lburl+\'lightbox-ico-loading.gif\', imageBtnClose: lburl+\'lightbox-btn-close.gif\', imageBtnPrev: lburl+\'lightbox-btn-prev.gif\', imageBtnNext: lburl+\'lightbox-btn-next.gif\'});});</script> ', '~\\[gallery\\](.*?)\\[\\/gallery\\]~si' => '<div class="gallery">$1</div>', '~\\[gal=(.[^\\s]*?) (.*?)\\](.*?)\\[\\/gal\\]~si' => '<a href="$3" title="$2"><img src="$1" alt="$2"></a>', '~\\[gal=(.*?)\\](.*?)\\[\\/gal\\]~si' => '<a href="$2"><img src="$1" alt=""></a>', '~\\[image\\](.*?)\\[\\/image\\]~si' => '<a href="$1" class="lightbox"><img src="$1" alt=""></a>', '~\\[image=(.[^\\s]*?) (.*?)\\](.*?)\\[\\/image\\]~si' => '<a href="$3" class="lightbox" title="$2"><img src="$1" alt="$2"></a>', '~\\[image=(.[^ ]*?)\\](.*?)\\[\\/image\\]~si' => '<a href="$2" class="lightbox"><img src="$1" alt=""></a>', '~\\[image\\((.[^\\s]*?)\\)=(.[^\\s]*?) (.*?)\\](.*?)\\[\\/image\\]~si' => '<a href="$4" class="lightbox" title="$3"><img src="$2" alt="$3" class="$1"></a>', '~\\[image\\((.[^ ]*?)\\)=(.[^ ]*?)\\](.*?)\\[\\/image\\]~si' => '<a href="$3" class="lightbox"><img src="$2" alt="" class="$1"></a>', '~\\[image\\((.[^ ]*?)\\)\\](.*?)\\[\\/image\\]~si' => '<a href="$2" class="lightbox"><img src="$2" alt="" class="$1"></a>', '~\\[galname\\](.*?)\\[\\/galname\\]~si' => '<div>$1</div>'); return preg_replace(array_keys($preg), array_values($preg), $text); }
function auth_content_head($args = array()) { # стили пользователя if (file_exists(getinfo('plugins_dir') . basename(dirname(__FILE__)) . '/custom.css')) { echo '<link rel="stylesheet" href="' . getinfo('plugins_url') . basename(dirname(__FILE__)) . '/custom.css" type="text/css" media="screen">' . NR; } return $args; }
function colorbox_head_css($args = array()) { $url = getinfo('plugins_url') . 'colorbox/'; $options = mso_get_option('plugin_colorbox', 'plugins', array()); if (!isset($options['style'])) { $options['style'] = '1'; } echo '<link rel="stylesheet" href="' . $url . 'style/' . $options['style'] . '/colorbox.css">'; }
function admin_files_admin_head($args = array()) { #echo mso_load_jquery('ui/ui.core.packed.js'); #echo mso_load_jquery('ui/ui.draggable.packed.js'); echo mso_load_jquery('alerts/jquery.alerts.js'); //echo mso_load_jquery('cornerz.js'); echo ' <link href="' . getinfo('common_url') . 'jquery/alerts/jquery.alerts.css" rel="stylesheet" type="text/css" media="screen">'; return $args; }
function antispam_log($file = '', $msg = '') { if ($file) { $fn = getinfo('uploads_dir') . $file; $fp = fopen($fn, "a+"); fwrite($fp, '====================' . "\n" . $msg . "\n\n"); fclose($fp); } }
function guestbook_css($a = array()) { if (file_exists(getinfo('template_dir') . 'guestbook.css')) { $css = getinfo('stylesheet_url') . 'guestbook.css'; } else { $css = getinfo('plugins_url') . 'guestbook/guestbook.css'; } echo '<link rel="stylesheet" href="' . $css . '" type="text/css" media="screen">' . NR; return $a; }
function default_profiles() { $all = mso_get_path_files(getinfo('template_dir') . 'assets/css/profiles/', getinfo('template_url') . 'assets/css/profiles/', false, array('css')); if ($all) { $all = ' ||Нет #' . implode($all, '#'); } else { $all = ' ||Нет'; } return $all; }
function captcha_go($args = array()) { global $MSO; # сама картинка формируется в img.php # в ней мы передаем сессию, текущую страницу и время (против кэширования) echo ' <div class="captcha"><label for="comments_captha">' . tf('Введите нижние символы') . '</label> <input type="text" name="comments_captha" id="comments_captha" value="" maxlength="4" class="comments_captha"> <img src="' . getinfo('plugins_url') . 'captcha/img.php?image=' . $MSO->data['session']['session_id'] . '&page=' . mso_slug(mso_current_url()) . '&code=' . time() . '" alt="" title="' . tf('Защита от спама: введите только нижние символы') . '"> <span>' . t('(обязательно)') . '</span><br><br></div> '; }
function latest($u) { $info = getinfo($u); //$n=$info->total -1; $n = -1; foreach ($info->videos as $video) { $n = $n + 1; } return $info->videos[$n]->id; }
function parse_ini_string($ini, $process_sections = false, $scanner_mode = null) { $tempname = getinfo('cache_dir') . mso_md5($ini); $fp = fopen($tempname, 'w'); fwrite($fp, $ini); $ini = parse_ini_file($tempname, !empty($process_sections)); fclose($fp); @unlink($tempname); return $ini; }
function range_url_mso_options() { if (!mso_check_allow('range_url_edit')) { echo t('Доступ запрещен'); return; } # ключ, тип, ключи массива mso_admin_plugin_options('plugin_range_url', 'plugins', array('default-templates' => array('type' => 'checkbox', 'name' => t('Использовать стандартные шаблоны URL.'), 'description' => t('В этом случае они будут использоваться автоматически. Если опция не активна, то будут использоваться только указанные вами шаблоны URL.'), 'default' => '1'), 'page_404_redirect' => array('type' => 'checkbox', 'name' => t('В случае неверной страницы осуществлять автоматический редирект на 404-страницу'), 'description' => t('Если опция не отмечена, то будет только выставляться тип данных «page_404» для дальнейшей обработки.'), 'default' => '0'), 'page_404_header' => array('type' => 'checkbox', 'name' => t('Отправлять 404-заголовок (header) браузеру'), 'description' => '', 'default' => '1'), 'templates' => array('type' => 'textarea', 'rows' => 10, 'name' => t('Шаблоны URL'), 'description' => t('Каждый сегмент URL представляет собой часть адреса (исключая адрес сайта) ограниченную символами «/». Сегменты в шаблоне следует указывать в скобках. Если какой-то сегмент может быть произвольным, то он указывается как «(*)». В сегментах шаблона можно использовать регулярные выражения.<br>Например: <br>(page)(*)<br> (page)(*)(next)(*)'), 'default' => ''), 'min-count-segment' => array('type' => 'text', 'name' => t('Минимальное количество сегментов URL которые будут разрешены автоматически'), 'description' => t('Например, если нужно разрешить все адреса, состоящие из одного сегмента, то укажите «1»: адреса вида «http://сайт/about» будут одобряться автоматически, но «http://сайт/about/slug» будут уже проверяться по указанным шаблонам. Если указать «2», то автоматически будут одобрены и «http://сайт/about», и «http://сайт/about/slug», но не «http://сайт/about/slug/slug2».'), 'default' => '1'), 'siteurl_enable' => array('type' => 'checkbox', 'name' => t('Включить определение главного зеркала сайта'), 'description' => '', 'default' => '0', 'group_start' => '<hr>'), 'siteurl' => array('type' => 'text', 'name' => t('Укажите адрес главного зеркала сайта'), 'description' => t('Если входящий адрес не будет принадлежать указанному, то будет осуществлён редирект на главное зеркало сайта. Адрес следует указывать в полном формате, например: <b>http://site.com/</b> или <b>http://www.site.com/</b>'), 'default' => getinfo('siteurl'), 'group_end' => '<hr>')), t('Настройки плагина Range URL'), t('Плагин позволяет задавать шаблоны URL, которые будут считаться правильными для сайта. Все остальные адреса будут отдаваться как 404-страница. Если вы используете какие-то свои типы данных, то укажите соответствующий шаблон.')); }
function samborsky_polls_admin_page($args = array()) { # выносим админские функции отдельно в файл if (!mso_check_allow('samborsky_polls_edit')) { echo t('Доступ запрещен'); return $args; } mso_hook_add_dinamic('mso_admin_header', ' return $args . "' . t('Голосования') . '"; '); mso_hook_add_dinamic('admin_title', ' return "' . t('Голосования') . ' - " . $args; '); require getinfo('plugins_dir') . 'samborsky_polls/admin.php'; }
function feedburner_admin_page($args = array()) { # выносим админские функции отдельно в файл if (!mso_check_allow('feedburner_admin_page')) { echo 'Доступ запрещен'; return $args; } mso_hook_add_dinamic('mso_admin_header', ' return $args . "FeedBurner"; '); mso_hook_add_dinamic('admin_title', ' return "FeedBurner - " . $args; '); require getinfo('plugins_dir') . 'feedburner/admin.php'; }
function wpconvert_admin_page($args = array()) { # выносим админские функции отдельно в файл if (!mso_check_allow('wpconvert_admin_page')) { echo 'Доступ запрещен'; return $args; } mso_hook_add_dinamic('mso_admin_header', ' return $args . "WordPress convert "; '); mso_hook_add_dinamic('admin_title', ' return "WordPress convert - " . $args; '); require getinfo('plugins_dir') . 'wpconvert/admin.php'; }
function ushki_admin_page($args = array()) { # выносим админские функции отдельно в файл if (!mso_check_allow('plugin_ushki')) { echo t('Доступ запрещен'); return $args; } mso_hook_add_dinamic('mso_admin_header', ' return $args . t("Настройки ушек", "plugins"); '); mso_hook_add_dinamic('admin_title', ' return t("Настройки ушек", "plugins") . " - " . $args; '); require getinfo('plugins_dir') . 'ushki/admin.php'; }
function mail_send_admin_page($args = array()) { # выносим админские функции отдельно в файл if (!mso_check_allow('mail_send_edit')) { echo t('Доступ запрещен'); return $args; } mso_hook_add_dinamic('mso_admin_header', ' return $args . "' . t('Mail Send') . '"; '); mso_hook_add_dinamic('admin_title', ' return "' . t('Mail Send') . ' - " . $args; '); require getinfo('plugins_dir') . 'mail_send/admin.php'; }
function admin_menu_menu($args = array()) { global $admin_menu, $MSO; $admin_url = getinfo('site_admin_url'); $nr = "\n"; $out = ''; if (count($MSO->data['uri_segment']) > 1) { $cur_url2 = $MSO->data['uri_segment'][2]; // второй сегмент # текущий урл строится из сегментов от второго до последнего $cur_url = $MSO->data['uri_segment']; $cur_url = array_slice($cur_url, 1); $cur_url = implode('/', $cur_url); if (!$cur_url) { $cur_url = 'home'; } } else { $cur_url = 'home'; $cur_url2 = 'home'; } // если меню не содержит подменю, то не выводим его $admin_menu1 = $admin_menu; foreach ($admin_menu1 as $key => $value) { if (count($admin_menu1[$key]) < 2) { unset($admin_menu1[$key]); } } // pr($admin_menu1); foreach ($admin_menu1 as $key => $value) { $out .= $nr . '<ul class="admin-menu admin-menu-' . ($key ? $key : 'beginning') . '">'; $out .= $nr . '<li class="admin-menu-top"><a href="#" class="admin-menu-section">' . _mso_del_menu_pod($value['']) . '</a>'; if (count($value) > 1) { $out .= $nr . ' <ul class="admin-submenu">'; foreach ($value as $url => $name) { if ($value[''] == $name) { continue; } if ($url == $cur_url or $url == $cur_url2) { $selected = ' class="admin-menu-selected admin-menu-' . mso_slug($url) . '"'; } else { $selected = ' class="admin-menu-' . mso_slug($url) . '"'; } $out .= $nr . ' <li' . $selected . ' title="' . _mso_del_menu_pod($name) . '"><a href="' . $admin_url . $url . '">' . _mso_del_menu_pod($name) . '</a></li>'; } $out .= $nr . ' </ul>'; } $out .= $nr . ' </li>' . $nr . '</ul>' . $nr; } return $out; }
function parser_default_post_edit($text = '') { $text = trim($text); $text = str_replace(chr(10), "<br>", $text); $text = str_replace(chr(13), "", $text); // глюк FireFox исправлем замену абсолютного пути src на абсолютный $text = str_replace('src="../../', 'src="' . getinfo('site_url'), $text); $text = str_replace('src="../', 'src="' . getinfo('site_url'), $text); // замены из-за мусора FireFox $text = str_replace('-moz-background-clip: -moz-initial;', '', $text); $text = str_replace('-moz-background-origin: -moz-initial;', '', $text); $text = str_replace('-moz-background-inline-policy: -moz-initial;', '', $text); return $text; }
function admin_options_admin_template() { $CI =& get_instance(); $CI->load->helper('directory'); $dirs = directory_map(getinfo('admin_dir') . 'template', true); // только в admin_dir $out = ''; foreach ($dirs as $dir) { if (is_dir(getinfo('admin_dir') . 'template/' . $dir)) { $out .= $out ? ' # ' . $dir : $dir; } } return $out; }
function cron_mso_options() { $options = mso_get_option('plugin_cron', 'plugins', array()); if (!isset($options['slug'])) { $options['slug'] = 'cron'; } # ключ, тип, ключи массива mso_admin_plugin_options('plugin_cron', 'plugins', array('slug' => array('type' => 'text', 'name' => t('Адрес крона'), 'description' => t('Укажите адрес по которому будет вызываться крон. Например: «cron» - адрес') . ' ' . getinfo('siteurl') . '<strong>cron</strong>', 'default' => 'cron')), t('Настройки плагина cron'), 'Данный плагин предназначен для выполнения периодических задач. Вначале задайте адрес, по которому будет вызываться крон. После этого на сервере задайте период для своих задач и укажите в качестве программы: <pre> GET ' . getinfo('siteurl') . $options['slug'] . ' </pre> <p class="info">После этого те функции, которые определены для хука «cron» (плагины), будут выполняться в момент срабатывания крона на сервере. '); }
public function getAll() { $prodArray = array(); $db = getDB(); $result = $db->query("SELECT title, id, content, featured_image, price FROM posts WHERE type='product' ORDER BY id DESC"); if ($result) { while ($row = $result->fetch_array()) { //Modify content for easier use $row['image'] = getinfo('site_url') . '/uploads/' . $row['featured_image']; $prodArray[] = $row; } return $prodArray; $result->close(); } }
function bbcode_custom($text = '') { $text = preg_replace_callback('~\\[pre(.*?)\\](.*?)\\[\\/pre\\]~si', 'bbcode_pre_callback', $text); $preg = array('~\\[b (.*?)\\](.*?)\\[\\/b\\]~si' => '<strong $1>$2</strong>', '~\\[b\\](.*?)\\[\\/b\\]~si' => '<strong>$1</strong>', '~\\[bold (.*?)\\](.*?)\\[\\/bold\\]~si' => '<b $1>$2</b>', '~\\[bold\\](.*?)\\[\\/bold\\]~si' => '<b>$1</b>', '~\\[i (.*?)\\](.*?)\\[\\/i\\]~si' => '<em$1>$2</em>', '~\\[i\\](.*?)\\[\\/i\\]~si' => '<em>$1</em>', '~\\[italic (.*?)\\](.*?)\\[\\/italic\\]~si' => '<i$1>$2</i>', '~\\[italic\\](.*?)\\[\\/italic\\]~si' => '<i>$1</i>', '~\\[del (.*?)\\](.*?)\\[\\/del\\]~si' => '<del $1>$2</del>', '~\\[del\\](.*?)\\[\\/del\\]~si' => '<del>$1</del>', '~\\[s (.*?)\\](.*?)\\[\\/s\\]~si' => '<s $1>$2</s>', '~\\[s\\](.*?)\\[\\/s\\]~si' => '<s>$1</s>', '~\\[u (.*?)\\](.*?)\\[\\/u\\]~si' => '<u $1>$2</u>', '~\\[u\\](.*?)\\[\\/u\\]~si' => '<u>$1</u>', '~\\[sub\\](.*?)\\[\\/sub\\]~si' => '<sub>$1</sub>', '~\\[sup\\](.*?)\\[\\/sup\\]~si' => '<sup>$1</sup>', '~\\[small\\](.*?)\\[\\/small\\]~si' => '<small>$1</small>', '~\\[color=(.*?)\\](.*?)\\[\\/color\\]~si' => '<span style="color:$1">$2</span>', '~\\[size=(.*?)\\](.*?)\\[\\/size\\]~si' => '<span style="font-size:$1">$2</span>', '~\\[div=(.*?)\\](.*?)\\[\\/div\\]~si' => '<div style="$1">$2</div>', '~\\[span=(.*?)\\](.*?)\\[\\/span\\]~si' => '<span style="$1">$2</span>', '~\\[left (.*?)\\](.*?)\\[\\/left\\]~si' => '<div style="text-align: left; $1">$2</div>', '~\\[left\\](.*?)\\[\\/left\\]~si' => '<div style="text-align: left;">$1</div>', '~\\[right (.*?)\\](.*?)\\[\\/right\\]~si' => '<div style="text-align: right; $1">$2</div>', '~\\[right\\](.*?)\\[\\/right\\]~si' => '<div style="text-align: right;">$1</div>', '~\\[center (.*?)\\](.*?)\\[\\/center\\]~si' => '<div style="text-align: center; $1">$2</div>', '~\\[center\\](.*?)\\[\\/center\\]~si' => '<div style="text-align: center;">$1</div>', '~\\[justify (.*?)\\](.*?)\\[\\/justify\\]~si' => '<div style="text-align: justify; $1">$2</div>', '~\\[justify\\](.*?)\\[\\/justify\\]~si' => '<div style="text-align: justify;">$1</div>', '~\\[p\\](.*?)\\[\\/p\\]~si' => '<p>$1</p>', '~\\[p=(.*?)\\](.*?)\\[\\/p\\]~si' => '<p style="$1">$2</p>', '~\\[p (.*?)\\](.*?)\\[\\/p\\]~si' => '<p $1>$2</p>', '~\\[pleft\\](.*?)\\[\\/pleft\\]~si' => '<p style="text-align: left;">$1</p>', '~\\[pright\\](.*?)\\[\\/pright\\]~si' => '<p style="text-align: right;">$1</p>', '~\\[pcenter\\](.*?)\\[\\/pcenter\\]~si' => '<p style="text-align: center;">$1</p>', '~\\[pjustify\\](.*?)\\[\\/pjustify\\]~si' => '<p style="text-align: justify;">$1</p>', '~\\[abbr\\](.*?)\\[\\/abbr\\]~si' => '<abbr>$1</abbr>', '~\\[abbr (.*?)\\](.*?)\\[\\/abbr\\]~si' => '<abbr title="$1">$2</abbr>', '~\\[q\\](.*?)\\[\\/q\\]~si' => '<q>$1</q>', '~\\[q (.*?)\\](.*?)\\[\\/q\\]~si' => '<q $1">$2</q>', '~\\[cite\\](.*?)\\[\\/cite\\]~si' => '<cite>$1</cite>', '~\\[cite (.*?)\\](.*?)\\[\\/cite\\]~si' => '<cite $1">$2</cite>', '~\\[address\\](.*?)\\[\\/address\\]~si' => '<address>$1</address>', '~\\[address (.*?)\\](.*?)\\[\\/address\\]~si' => '<address $1">$2</address>', '~\\[dfn\\](.*?)\\[\\/dfn\\]~si' => '<dfn>$1</dfn>', '~\\[dfn (.*?)\\](.*?)\\[\\/dfn\\]~si' => '<dfn $1">$2</dfn>', '~\\[dl\\](.*?)\\[\\/dl\\]~si' => '<dl>$1</dl>', '~\\[dl (.*?)\\](.*?)\\[\\/dl\\]~si' => '<dl $1">$2</dl>', '~\\[dt\\](.*?)\\[\\/dt\\]~si' => '<dt>$1</dt>', '~\\[dt (.*?)\\](.*?)\\[\\/dt\\]~si' => '<dt $1">$2</dt>', '~\\[dd\\](.*?)\\[\\/dd\\]~si' => '<dd>$1</dd>', '~\\[dd (.*?)\\](.*?)\\[\\/dd\\]~si' => '<dd $1">$2</dd>', '~\\[ins\\](.*?)\\[\\/ins\\]~si' => '<ins>$1</ins>', '~\\[ins (.*?)\\](.*?)\\[\\/ins\\]~si' => '<ins $1">$2</ins>', '~\\[hr\\]~si' => '<hr>', '~\\[line\\]~si' => '<hr>', '~\\[table\\]~si' => '<table>', '~\\[table (.*?)\\]~si' => '<table $1>', '~\\[\\/table\\]~si' => '</table>', '~\\[tr\\]~si' => '<tr>', '~\\[tr (.*?)\\]~si' => '<tr $1>', '~\\[\\/tr\\]~si' => '</tr>', '~\\[td\\]~si' => '<td>', '~\\[td (.*?)\\]~si' => '<td $1>', '~\\[\\/td\\]~si' => '</td>', '~\\[th\\]~si' => '<th>', '~\\[th (.*?)\\]~si' => '<th $1>', '~\\[\\/th\\]~si' => '</th>', '~\\[\\*\\](.*?)\\[\\/\\*\\]~si' => '<li>$1</li>', '~\\[\\*\\]~si' => '<li>', '~\\[ul\\](.*?)\\[\\/ul\\]~si' => "<ul>\$1</li></ul>", '~\\[list\\](.*?)\\[\\/list\\]~si' => "<ul>\$1</li></ul>", '~\\[ol\\](.*?)\\[\\/ol\\]~si' => '<ol>$1</li></ol>', '~\\[li\\]~si' => '<li>', '~\\[li (.*?)\\]~si' => '<li $1>', '~\\[\\/li\\]~si' => '</li>', '~\\[h1\\](.*?)\\[\\/h1\\]~si' => '<h1>$1</h1>', '~\\[h1\\((.[^ ]*?)\\)\\](.*?)\\[\\/h1\\]~si' => '<h1 class="$1">$2</h1>', '~\\[h1 (.*?)\\](.*?)\\[\\/h1\\]~si' => '<h1 $1>$2</h1>', '~\\[h2\\](.*?)\\[\\/h2\\]~si' => '<h2>$1</h2>', '~\\[h2\\((.[^ ]*?)\\)\\](.*?)\\[\\/h2\\]~si' => '<h2 class="$1">$2</h2>', '~\\[h2 (.*?)\\](.*?)\\[\\/h2\\]~si' => '<h2 $1>$2</h2>', '~\\[h3\\](.*?)\\[\\/h3\\]~si' => '<h3>$1</h3>', '~\\[h3\\((.[^ ]*?)\\)\\](.*?)\\[\\/h3\\]~si' => '<h3 class="$1">$2</h3>', '~\\[h3 (.*?)\\](.*?)\\[\\/h3\\]~si' => '<h3 $1>$2</h3>', '~\\[h4\\](.*?)\\[\\/h4\\]~si' => '<h4>$1</h4>', '~\\[h4\\((.[^ ]*?)\\)\\](.*?)\\[\\/h4\\]~si' => '<h4 class="$1">$2</h4>', '~\\[h4 (.*?)\\](.*?)\\[\\/h4\\]~si' => '<h4 $1>$2</h4>', '~\\[h5\\](.*?)\\[\\/h5\\]~si' => '<h5>$1</h5>', '~\\[h5\\((.[^ ]*?)\\)\\](.*?)\\[\\/h5\\]~si' => '<h5 class="$1">$2</h5>', '~\\[h5 (.*?)\\](.*?)\\[\\/h5\\]~si' => '<h5 $1>$2</h5>', '~\\[h6\\](.*?)\\[\\/h6\\]~si' => '<h6>$1</h6>', '~\\[h6\\((.[^ ]*?)\\)\\](.*?)\\[\\/h6\\]~si' => '<h6 class="$1">$2</h6>', '~\\[h6 (.*?)\\](.*?)\\[\\/h6\\]~si' => '<h6 $1>$2</h6>', '~\\[code\\](.*?)\\[\\/code\\]~si' => '<code>$1</code>', '~\\[url\\](.*?)\\[\\/url\\]~si' => '<a href="$1">$1</a>', '~\\[url=(.[^ ]*?)\\](.*?)\\[\\/url\\]~si' => '<a href="$1">$2</a>', '~\\[url=(.[^\\s]*?) (.*?)\\](.*?)\\[\\/url\\]~si' => '<a href="$1" $2>$3</a>', '~\\[url (.*?)\\](.*?)\\[\\/url\\]~si' => '<a href="$2" $1>$2</a>', '~\\[imgleft=(.*?)x(.*?)\\](.*?)\\[\\/imgleft\\]~si' => '<img src="$3" style="float: left; margin: 0 10px 0 0; width: $1px; height: $2px">', '~\\[imgleft\\](.*?)\\[\\/imgleft\\]~si' => '<img src="$1" style="float: left; margin: 0 10px 0 0;">', '~\\[imgleft (.*?)\\](.*?)\\[\\/imgleft\\]~si' => '<img src="$2" title="$1" alt="$1" style="float: left; margin: 0 10px 0 0;">', '~\\[imgright=(.*?)x(.*?)\\](.*?)\\[\\/imgright\\]~si' => '<img src="$3" style="float: right; margin: 0 0 0 10px; width: $1px; height: $2px">', '~\\[imgright\\](.*?)\\[\\/imgright\\]~si' => '<img src="$1" style="float: right; margin: 0 0 0 10px;">', '~\\[imgright (.*?)\\](.*?)\\[\\/imgright\\]~si' => '<img src="$2" title="$1" alt="$1" style="float: right; margin: 0 0 0 10px;">', '~\\[imgcenter\\](.*?)\\[\\/imgcenter\\]~si' => '<div style="text-align: center"><img src="$1"></div>', '~\\[imgcenter (.*?)\\](.*?)\\[\\/imgcenter\\]~si' => '<div style="text-align: center"><img src="$2" title="$1" alt="$1"></div>', '~\\[imgmini=_(.*?)\\](.*?)\\[\\/imgmini\\]~si' => '<a href="$2" target="_blank" class="lightbox"><img src="$1"></a>', '~\\[imgmini=(.*?)\\](.*?)\\[\\/imgmini\\]~si' => '<a href="$2"><img src="$1" class="lightbox"></a>', '~\\[img=(.*?)x(.*?)\\](.*?)\\[\\/img\\]~si' => '<img src="$3" style="width: $1px; height: $2px">', '~\\[img (.*?)\\](.*?)\\[\\/img\\]~si' => '<img src="$2" title="$1" alt="$1">', '~\\[img\\](.*?)\\[\\/img\\]~si' => '<img src="$1" title="" alt="">', '~\\[img\\((.[^ ]*?)\\)\\](.*?)\\[\\/img\\]~si' => '<img src="$2" alt="" class="$1">', '~\\[img\\((.[^ ]*?)\\) (.*?)\\](.*?)\\[\\/img\\]~si' => '<img src="$3" alt="$2" title="$2" class="$1">', '~\\[quote\\](.*?)\\[\\/quote\\]~si' => '<blockquote>$1</blockquote>', '~\\[quote=(?:"|"|\')?(.*?)["\']?(?:"|"|\')?\\](.*?)\\[\\/quote\\]~si' => '<blockquote><strong class="src">$1:</strong>$2</blockquote>', '~\\[div\\((.*?)\\)\\](.*?)\\[\\/div\\]~si' => '<div class="$1">$2</div>', '~\\[div (.*?)\\](.*?)\\[\\/div\\]~si' => '<div $1>$2</div>', '~\\[div\\((.*?)\\) (.*?)\\](.*?)\\[\\/div\\]~si' => '<div class="$1" $2>$3</div>', '~\\[span\\((.*?)\\)\\](.*?)\\[\\/span\\]~si' => '<span class="$1">$2</span>', '~\\[span (.*?)\\](.*?)\\[\\/span\\]~si' => '<span $1>$2</span>', '~\\[span\\((.*?)\\) (.*?)\\](.*?)\\[\\/span\\]~si' => '<span class="$1" $2>$3</span>'); if (strpos($text, '[text-demo]') !== false) { if (file_exists(getinfo('plugins_dir') . 'bbcode/text-demo.txt')) { $text_demo = file(getinfo('plugins_dir') . 'bbcode/text-demo.txt'); //$text_demo = implode("MSO_N", $text_demo); $text_demo = implode("\n", $text_demo); $text = str_replace('[text-demo]', $text_demo, $text); } } $text = preg_replace(array_keys($preg), array_values($preg), $text); return $text; }
function _my_users_main_menu_custom($menu = '') { $menu .= NR . '['; $menu .= NR . 'admin | ' . getinfo('users_nik') . ' | Админ-панель | icon icon-admin'; $menu .= NR . 'admin/page_new | Создать запись'; $menu .= NR . 'admin/page | Список записей'; $menu .= NR . 'admin/cat | Рубрики'; $menu .= NR . 'admin/plugins | Плагины'; $menu .= NR . 'admin/files | Загрузки'; $menu .= NR . 'admin/sidebars | Сайдбары'; $menu .= NR . 'admin/template_options | Настройка шаблона'; $menu .= NR . 'http://max-3000.com/page/faq | ЧАВО для новичков'; $menu .= NR . 'http://max-3000.com/help | Центр помощи'; $menu .= NR . 'http://forum.max-3000.com/ | Форум поддержки'; $menu .= NR . 'logout | Выход'; $menu .= NR . ']'; return $menu; }