function admin_ip_admin_init($args = array()) { // проверяем сегменты URL // получаем из опций секретный сегмент // если это секретный, то сбрасываем ip // получаем список разрешенных IP из опций // получаем текущий IP юзера // если его нет в разрешенных, то die('no'); global $MSO; $options_key = 'plugin_admin_ip'; $options = mso_get_option($options_key, 'plugins', array()); if (!isset($options['secret'])) { $options['secret'] = ''; } if (!isset($options['ip'])) { $options['ip'] = ''; } if ($options['secret'] and mso_segment(3) == $options['secret']) { // сброс ip // http://localhost/codeigniter/admin/plugin_admin_ip/secret_to_reset - secret_to_reset $options['ip'] = ''; mso_add_option($options_key, $options, 'plugins'); mso_redirect('admin/plugin_admin_ip'); // редирект на страницу плагина } if ($options['ip']) { // указаны IP $ips = explode("\n", $options['ip']); $curr_ip = $MSO->data['session']['ip_address']; $ok = false; // признак, что доступ разрешен foreach ($ips as $ip) { if (trim($ip) == $curr_ip) { $ok = true; break; } } if (!$ok) { die('Access denied'); } // рубим } if (!mso_check_allow('admin_ip_admin_page')) { return $args; // 'Доступ запрещен'; } $this_plugin_url = 'plugin_admin_ip'; // url и hook # добавляем свой пункт в меню админки # первый параметр - группа в меню # второй - это действие/адрес в url - http://сайт/admin/demo # можно использовать добавочный, например demo/edit = http://сайт/admin/demo/edit # Третий - название ссылки mso_admin_menu_add('plugins', $this_plugin_url, 'Admin IP'); # прописываем для указаного admin_url_ + $this_plugin_url - (он будет в url) # связанную функцию именно она будет вызываться, когда # будет идти обращение по адресу http://сайт/admin/_null mso_admin_url_hook($this_plugin_url, 'admin_ip_admin_page'); return $args; }
function calendar_widget_update($num = 1) { $widget = 'calendar_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # получаем из POST $newoptions['header'] = mso_widget_get_post($widget . '_header'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function authors_widget_update($num = 1) { $widget = 'authors_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function page_comments_widget_update($num = 1) { $widget = 'page_comments_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['limit'] = (int) mso_widget_get_post($widget . 'limit'); $newoptions['format'] = mso_widget_get_post($widget . 'format'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function random_pages_widget_update($num = 1) { $widget = 'random_pages_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['count'] = mso_widget_get_post($widget . 'count'); $newoptions['page_type'] = mso_widget_get_post($widget . 'page_type'); $newoptions['page_content'] = mso_widget_get_post($widget . 'page_content'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function picasa_widget_update($num = 1) { $widget = 'picasa_widget_' . $num; $options = $newoptions = mso_get_option($widget, 'plugins', array()); $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['url'] = mso_widget_get_post($widget . 'url'); $newoptions['show_type'] = mso_widget_get_post($widget . 'show_type'); $newoptions['albums_count'] = (int) mso_widget_get_post($widget . 'albums_count'); if ($newoptions['albums_count'] < 1) { $newoptions['albums_count'] = 0; } $newoptions['album_name'] = mso_widget_get_post($widget . 'album_name'); $newoptions['img_size'] = mso_widget_get_post($widget . 'img_size'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function mso_check_post_ini() { $CI =& get_instance(); // проверяем входящие данные - поля всегда одни if ($post = mso_check_post(array('f_session_id', 'f_options', 'f_submit', 'f_ini'))) { # защита рефера mso_checkreferer(); $options = $post['f_options']; if (isset($post['f_all_checkbox'])) { $all_checkbox = $post['f_all_checkbox']; } else { $all_checkbox = array(); } // добавим к $options $all_checkbox если их нет // и сразу заменим on на 1 // pr($options); foreach ($all_checkbox as $key => $val) { if (!isset($options[$key])) { $options[$key] = '0'; } else { if (!is_array($options[$key])) { $options[$key] = '1'; } else { $options[$key] = array_map('trim', $options[$key]); } } } // pr($options); // pr($all_checkbox); foreach ($options as $key_type => $val) { // разделим имя опции на ключ и группу $key_type = explode('_m_s_o_', $key_type); $key = $key_type[0]; $type = $key_type[1]; // pr($key . ' ' . $val . ' ' . $type, 1); // добавляем опцию без mso_refresh_options(); mso_add_option($key, $val, $type, false); } mso_refresh_options(); mso_flush_cache(); // посколько у нас всегда true, то результат не анализируем return true; } return false; }
function mso_install_newsite($arg = array()) { $CI =& get_instance(); $prefix = $CI->db->dbprefix; $charset = $CI->db->char_set ? $CI->db->char_set : 'utf8'; $collate = $CI->db->dbcollat ? $CI->db->dbcollat : 'utf8_general_ci'; $charset_collate = ' DEFAULT CHARACTER SET ' . $charset . ' COLLATE ' . $collate; $sql_file = FCPATH . '/' . APPPATH . 'views/install/model.sql'; $sql = _mso_install_sqlfile($sql_file); foreach ($sql as $s) { $s = trim($s); if (!empty($s)) { $s = str_replace('_PREFIX_', $prefix, $s); $s = str_replace('_CHARSETCOLLATE_', $charset_collate, $s); $s = str_replace('_USERNAME_', $arg['username'], $s); $s = str_replace('_USERPASSWORD_', $arg['userpassword'], $s); $s = str_replace('_USEREMAIL_', $arg['useremail'], $s); $s = str_replace('_NAMESITE_', $arg['namesite'], $s); $s = str_replace('_IP_', $arg['ip'], $s); $CI->db->query($s); } } mso_add_option('admin_nick', $arg['username'], 'general'); mso_add_option('name_site', $arg['namesite'], 'general'); mso_add_option('template', 'default', 'general'); mso_add_option('description', t('Очередной сайт на Maxsite CMS', 'install'), 'general'); mso_add_option('keywords', '', 'general'); if ($arg['demoposts']) { $sql_file = FCPATH . '/' . APPPATH . 'views/install/demo.sql'; $sql = _mso_install_sqlfile($sql_file); foreach ($sql as $s) { $s = trim($s); if (!empty($s)) { $s = str_replace('_PREFIX_', $prefix, $s); $s = str_replace('_CHARSETCOLLATE_', $charset_collate, $s); $CI->db->query($s); } } } $res = '<p class="res"><strong>' . t('Логин:', 'install') . '</strong> ' . $arg['username'] . '</p>'; $res .= '<p class="res"><strong>' . t('Пароль:', 'install') . '</strong> ' . $arg['userpassword_orig'] . '</p>'; $res .= '<p class="res"><strong>' . t('Email:', 'install') . '</strong> ' . $arg['useremail'] . '</p>'; return $res; }
function feedburner_count_update() { $options = mso_get_option('samborsky_feedburner_count', 'plugins', array()); if (empty($options['last_update'])) { $options['last_update'] = 0; } if (feedburner_count_need_update($options['last_update'], $options['update_interval'] * 60)) { require getinfo('plugins_dir') . 'feedburner_count/download.php'; if ($content = get_download('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=' . $options['feed_name'])) { preg_match('/circulation="(\\d+)"/', $content, $match); $options['count'] = (string) $match[1]; $options['last_update'] = time(); } else { $options['last_update'] = time() + 5 * 60; $options['count'] = 'Ошибка!'; } mso_add_option('samborsky_feedburner_count', $options, 'plugins'); } }
function mso_plugin_uninstall($f_name) { global $MSO; if (in_array($f_name, $MSO->active_plugins)) { // в массиве, значит активен - отключаем его // выполним деактивацию в самом плагине, если есть $f = $f_name . '_deactivate'; if (function_exists($f)) { $f(); } $f = $f_name . '_uninstall'; if (function_exists($f)) { $f(); } // удалим из глобального $MSO->active_plugins = array_flip($MSO->active_plugins); unset($MSO->active_plugins[$f_name]); $MSO->active_plugins = array_flip($MSO->active_plugins); // обновляем настройки mso_add_option('active_plugins', $MSO->active_plugins, 'general'); // echo '<div class="update">Плагин <strong>' . $f_name . '</strong> деинсталирован!</div>'; return true; } else { return false; } }
<?php if (!defined('BASEPATH')) { exit('No direct script access allowed'); } if (!is_array($list = mso_get_option('samborsky_ping_list', 'plugins'))) { $list = array(); } if (isset($_POST['save_submit'])) { $list = explode("\n", $_POST['samborsky_ping_list']); foreach ($list as $key => $value) { $list[$key] = trim($value); } mso_add_option('samborsky_ping_list', array_unique($list), 'plugins'); } $string_lists = ''; foreach ($list as $key => $value) { if (!empty($value)) { $string_lists .= $value . "\n"; } } ?> <h1>Пинги</h1> Список пинг сервисов (дубли удалятся) <br> <form action="" method="post"> <textarea name="samborsky_ping_list" rows="10"><?php echo $string_lists; ?>
function dignity_rss_widget_update($num = 1) { $widget = 'dignity_rss_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['textdo'] = mso_widget_get_post($widget . 'textdo'); $newoptions['feed_url'] = mso_widget_get_post($widget . 'feed_url'); $newoptions['google_text'] = mso_widget_get_post($widget . 'google_text'); $newoptions['yandex_text'] = mso_widget_get_post($widget . 'yandex_text'); $newoptions['rss_text'] = mso_widget_get_post($widget . 'rss_text'); $newoptions['rss_to_email'] = mso_widget_get_post($widget . 'rss_to_email'); $newoptions['textposle'] = mso_widget_get_post($widget . 'textposle'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function sp_add_options() { $options = array('archive_url' => 'polls-archive', 'show_archives_link' => 1, 'show_results_link' => 1, 'close_after_hour' => 0, 'admin_number_records' => 10, 'len_polls' => t('1 неделя'), 'secur_polls' => t('Защита по Coookie')); mso_add_option('plugin_samborsky_polls', $options, 'plugins'); }
} /** * MaxSite CMS * (c) http://max-3000.com/ */ $CI =& get_instance(); $options_key = 'mail_send'; if ($post = mso_check_post(array('f_session_id', 'f_subject', 'f_from', 'f_files', 'f_message', 'f_list'))) { mso_checkreferer(); $options = array(); $options['maillist'] = $post['f_list']; $options['subject'] = $post['f_subject']; $options['files'] = $post['f_files']; $options['message'] = $post['f_message']; $options['from'] = $post['f_from']; mso_add_option($options_key, $options, 'plugins'); // сохраним в опциях введенные данные if (isset($post['f_submit_send'])) { $error = ''; if (!$post['f_subject']) { $error .= 'Нужно указать тему письма. '; } if (!$post['f_message']) { $error .= 'Нужно указать текст письма. '; } if (!$post['f_list']) { $error .= 'Список рассылки пуст. '; } if (!$post['f_from']) { $error .= 'Нужно указать email отправителя. '; }
function last_pages_widget_update($num = 1) { $widget = 'last_pages_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['format'] = mso_widget_get_post($widget . 'format'); $newoptions['date_format'] = mso_widget_get_post($widget . 'date_format'); $newoptions['comments_format'] = mso_widget_get_post($widget . 'comments_format'); $newoptions['count'] = (int) mso_widget_get_post($widget . 'count'); $newoptions['page_type'] = mso_widget_get_post($widget . 'page_type'); $newoptions['include_cat'] = mso_widget_get_post($widget . 'include_cat'); $newoptions['sort'] = mso_widget_get_post($widget . 'sort'); $newoptions['sort_order'] = mso_widget_get_post($widget . 'sort_order'); $newoptions['img_prev_def'] = mso_widget_get_post($widget . 'img_prev_def'); $newoptions['img_prev_attr'] = mso_widget_get_post($widget . 'img_prev_attr'); $newoptions['max_words'] = mso_widget_get_post($widget . 'max_words'); $newoptions['text_do'] = mso_widget_get_post($widget . 'text_do'); $newoptions['text_posle'] = mso_widget_get_post($widget . 'text_posle'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function last_comments_widget_update($num = 1) { $widget = 'last_comments_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['count'] = (int) mso_widget_get_post($widget . 'count'); $newoptions['words'] = (int) mso_widget_get_post($widget . 'words'); $newoptions['maxchars'] = (int) mso_widget_get_post($widget . 'maxchars'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function samborsky_ping_activate($args = array()) { // Пинг-сервисы по умолчанию mso_add_option('samborsky_ping_list', array('http://rpc.technorati.com/rpc/ping', 'http://blogsearch.google.com/ping/RPC2', 'http://ping.blogs.yandex.ru/RPC2', 'http://ping.feedburner.com', 'http://rpc.pingomatic.com/'), 'plugins'); return $args; }
foreach ($sidebars as $sidebar => $widgets) { # готовим опцию для каждого $option = array(); $widgets = explode("\n", $widgets); // в массив, потому что указано через Enter // проверяем виджеты foreach ($widgets as $widget) { $widget = trim($widget); // удлаим лишнее if ($widget) { $option[] = $widget; } // добавим в опцию } // pr($option); mso_add_option('sidebars-' . mso_slug($sidebar), $option, 'sidebars'); // добавили } echo '<div class="update">' . t('Обновлено!') . '</div>'; // pr($sidebars); // поскольку мы обновили опции, то обновляем и их кэш mso_refresh_options(); } ?> <h1><?php echo t('Настройки сайдбаров'); ?> </h1> <p class="info"><?php echo t('Добавьте в сайдбары необходимые виджеты. Каждый виджет в одной строчке. Виджеты будут отображаться в указанном вами порядке. Если указанные виджеты не существуют, то они будут проигнорированы при выводе в сайдбаре.');
function random_gal_widget_update($num = 1) { $widget = 'random_gal_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['gal'] = mso_widget_get_post($widget . 'gal'); $newoptions['galother'] = mso_widget_get_post($widget . 'galother'); $newoptions['count'] = mso_widget_get_post($widget . 'count'); $newoptions['style'] = mso_widget_get_post($widget . 'style'); $newoptions['style_img'] = mso_widget_get_post($widget . 'style_img'); $newoptions['html'] = mso_widget_get_post($widget . 'html'); $newoptions['sort'] = mso_widget_get_post($widget . 'sort'); $newoptions['filter'] = mso_widget_get_post($widget . 'filter'); $newoptions['class'] = mso_widget_get_post($widget . 'class'); $newoptions['type'] = mso_widget_get_post($widget . 'type'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function tagclouds3d_widget_update($num = 1) { $widget = 'tagclouds3d_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['block_start'] = mso_widget_get_post($widget . 'block_start'); $newoptions['block_end'] = mso_widget_get_post($widget . 'block_end'); $newoptions['min_size'] = mso_widget_get_post($widget . 'min_size'); $newoptions['max_size'] = mso_widget_get_post($widget . 'max_size'); $newoptions['max_num'] = mso_widget_get_post($widget . 'max_num'); $newoptions['min_count'] = mso_widget_get_post($widget . 'min_count'); $newoptions['width'] = mso_widget_get_post($widget . 'width'); $newoptions['height'] = mso_widget_get_post($widget . 'height'); $newoptions['speed'] = mso_widget_get_post($widget . 'speed'); $newoptions['sort'] = mso_widget_get_post($widget . 'sort'); /* === */ $newoptions['bgcolor'] = mso_widget_get_post($widget . 'bgcolor'); $newoptions['text_color'] = mso_widget_get_post($widget . 'text_color'); $newoptions['text_color2'] = mso_widget_get_post($widget . 'text_color2'); $newoptions['hover_color'] = mso_widget_get_post($widget . 'hover_color'); /* === */ if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function mso_remove_allow($act = '') { global $MSO; $d = mso_get_option('groups_allow', 'general'); if (isset($d[$act])) { unset($d[$act]); mso_delete_option('groups_allow', 'general'); mso_add_option('groups_allow', $d, 'general'); } }
?> </h1> <p class="info"><?php echo t('Выберите нужный шаблон. Все шаблоны хранятся в каталоге <strong>«maxsite/templates»</strong>. Название шаблона совпадает с названием его каталога.'); ?> </p> <?php $CI =& get_instance(); if ($post = mso_check_post(array('f_session_id', 'f_submit'))) { mso_checkreferer(); $f_template = mso_array_get_key($post['f_submit']); # еще раз проверим есть ли шаблон $index = $MSO->config['templates_dir'] . $f_template . '/index.php'; if (file_exists($index)) { mso_add_option('template', $f_template, 'general'); $MSO->config['template'] = $f_template; echo '<div class="update">' . t('Обновлено!') . '</div>'; } else { echo '<div class="error">' . t('Ошибка обновления') . '</div>'; } } // получаем список каталогов $CI->load->helper('directory'); $templates_dir = $MSO->config['templates_dir']; $current_template = $MSO->config['template']; echo '<div class="mar30-b flex flex-wrap bg-gray100 pad20"> <h4 class="w100 mar0-t">' . t('Текущий шаблон:') . ' ' . $current_template . '</h4> <div class="mar10-b"> '; if (file_exists($templates_dir . $current_template . '/screenshot.png')) {
function sape_widget_update($num = 1) { $widget = 'sape_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['count'] = (int) mso_widget_get_post($widget . 'count'); $newoptions['htmldo'] = mso_widget_get_post($widget . 'htmldo'); $newoptions['htmlposle'] = mso_widget_get_post($widget . 'htmlposle'); $newoptions['links_or_articles'] = mso_widget_get_post($widget . 'links_or_articles'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function last_pages_unit_widget_update($num = 1) { $widget = 'last_pages_unit_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['cache_time'] = (int) mso_widget_get_post($widget . 'cache_time'); $newoptions['prefs'] = mso_widget_get_post($widget . 'prefs'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function search_form_widget_update($num = 1) { $widget = 'search_form_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['text'] = mso_widget_get_post($widget . 'text'); $newoptions['submit'] = mso_widget_get_post($widget . 'submit'); $newoptions['style_text'] = mso_widget_get_post($widget . 'style_text'); $newoptions['style_submit'] = mso_widget_get_post($widget . 'style_submit'); $newoptions['text_posle'] = mso_widget_get_post($widget . 'text_posle'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function catclouds_widget_update($num = 1) { $widget = 'catclouds_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['block_start'] = mso_widget_get_post($widget . 'block_start'); $newoptions['block_end'] = mso_widget_get_post($widget . 'block_end'); $newoptions['min_size'] = mso_widget_get_post($widget . 'min_size'); $newoptions['max_size'] = mso_widget_get_post($widget . 'max_size'); $newoptions['format'] = mso_widget_get_post($widget . 'format'); $newoptions['sort'] = mso_widget_get_post($widget . 'sort'); $newoptions['cat_id'] = mso_widget_get_post($widget . 'cat_id'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
$CI =& get_instance(); $options = mso_get_option('samborsky_feedburner_count', 'plugins', array()); if ($post = mso_check_post(array('submit_set_default'))) { mso_checkreferer(); feedburner_count_set_default(); $options = mso_get_option('samborsky_feedburner_count', 'plugins', array()); } else { if ($post = mso_check_post(array('submit', 'feed_name', 'update_interval', 'template'))) { mso_checkreferer(); $options = mso_get_option('samborsky_feedburner_count', 'plugins', array()); $options['feed_name'] = $_POST['feed_name']; $options['update_interval'] = $_POST['update_interval']; $options['template'] = base64_encode($_POST['template']); $options['last_update'] = 0; $options['count'] = 'n/a'; mso_add_option('samborsky_feedburner_count', $options, 'plugins'); } } if ($options['template']) { $options['template'] = base64_decode($options['template']); } ?> <h1>Настройка FeedBurner Count от <a href="http://www.samborsky.com/">samborsky.com</a></h1> Здравствуйте, последний раз счетчик обновлялся <strong><?php echo $options['last_update'] ? round((time() - $options['last_update']) / 60) . ' мин. назад' : 'Еще не обновлялся'; ?> </strong> <br> Последнее показание счетчика: <strong><?php echo $options['count']; ?>
function twitter_widget_update($num = 1) { $widget = 'twitter_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); $newoptions['header'] = mso_widget_get_post($widget . '_header'); $newoptions['url'] = mso_widget_get_post($widget . '_url'); $newoptions['count'] = (int) mso_widget_get_post($widget . '_count'); if ($newoptions['count'] < 1) { $newoptions['count'] = 5; } $newoptions['max_word_description'] = (int) mso_widget_get_post($widget . '_max_word_description'); if ($newoptions['max_word_description'] < 1) { $newoptions['max_word_description'] = 0; } $newoptions['format'] = mso_widget_get_post($widget . '_format'); $newoptions['format_date'] = mso_widget_get_post($widget . '_format_date'); $newoptions['footer'] = mso_widget_get_post($widget . '_footer'); $newoptions['show_nick'] = mso_widget_get_post($widget . '_show_nick'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function category_widget_update($num = 1) { $widget = 'category_widget_' . $num; // имя для опций = виджет + номер // получаем опции $options = $newoptions = mso_get_option($widget, 'plugins', array()); # обрабатываем POST $newoptions['header'] = mso_widget_get_post($widget . 'header'); $newoptions['format'] = mso_widget_get_post($widget . 'format'); $newoptions['format_current'] = mso_widget_get_post($widget . 'format_current'); $newoptions['include'] = mso_widget_get_post($widget . 'include'); $newoptions['exclude'] = mso_widget_get_post($widget . 'exclude'); $newoptions['hide_empty'] = mso_widget_get_post($widget . 'hide_empty'); $newoptions['order'] = mso_widget_get_post($widget . 'order'); $newoptions['order_asc'] = mso_widget_get_post($widget . 'order_asc'); $newoptions['include_child'] = mso_widget_get_post($widget . 'include_child'); $newoptions['nofollow'] = mso_widget_get_post($widget . 'nofollow'); $newoptions['group_header_no_link'] = mso_widget_get_post($widget . 'group_header_no_link'); if ($options != $newoptions) { mso_add_option($widget, $newoptions, 'plugins'); } }
function mso_admin_plugin_options($key, $type, $ar, $title = '', $info = '', $text_other = '', $show_goto_plugins = false) { if ($show_goto_plugins) { echo '<p><a href="' . getinfo('site_admin_url') . 'plugins" class="i plugins">' . t('Плагины') . '</a></p>'; } if ($title) { echo '<h1><a href="">' . $title . '</a></h1>'; } else { echo '<h1><a href="">' . t('Опции плагина') . '</a></h1>'; } if ($info) { echo '<p class="info">' . $info . '</p>'; } else { echo '<p class="info">' . t('Укажите необходимые опции плагина.') . '</p>'; } if ($text_other) { echo '<p>' . $text_other . '</p>'; } # тут получаем текущие опции $options = mso_get_option($key, $type, array()); // получаем опции # здесь смотрим post # в post должен быть $key . '-' . $type if ($post = mso_check_post(array('f_session_id', 'f_submit', $key . '-' . $type))) { # защита рефера mso_checkreferer(); # наши опции $in = $post[$key . '-' . $type]; if (isset($in['_mso_checkboxs'])) { $ch_names = array_keys($in['_mso_checkboxs']); // получили все чекбоксы $t = array(); // временный массив foreach ($ch_names as $val) { if (isset($in[$val])) { $t[$val] = '1'; } // если есть, значит отмечен } $t = array_merge($in['_mso_checkboxs'], $t); // объединим с чекбоксамии unset($in['_mso_checkboxs']); // удалим _mso_checkboxs $in = array_merge($in, $t); // объединим с $in // теперь в $in все чекбоксы } # перед проверкой удалим из $ar все типы info $ar1 = $ar; foreach ($ar1 as $m => $val) { if ($val['type'] == 'info') { unset($ar1[$m]); } } # проверяем их с входящим $ar - ключи должны совпадать # финт ушами: смотрим разность ключей массивов - красиво? # если будет разность, значит неверные входящие данные, все рубим if (array_diff(array_keys($ar1), array_keys($in))) { die('Error key. :-('); } $newoptions = array_merge($options, $in); // объединим if ($options != $newoptions) { mso_add_option($key, $newoptions, $type); // обновим $options = $newoptions; // сразу обновим переменную на новые опции mso_flush_cache(); // сбросим кэш } echo '<div class="update">' . t('Обновлено!') . '</div>'; } if ($ar) { # тут генерируем форму $form = ''; foreach ($ar as $m => $val) { if ($val['type'] == 'info') { if (isset($val['id'])) { $tag_id = ' id="' . $val['id'] . '"'; } else { $tag_id = ''; } if (isset($val['class'])) { $tag_class = ' ' . $val['class']; } else { $tag_class = ''; } $form .= '<div class="admin_plugin_options_info' . $tag_class . '"' . $tag_id . '>'; if (isset($val['title'])) { $form .= '<h3>' . $val['title'] . '</h3>'; } if (isset($val['text'])) { $form .= '<p>' . $val['text'] . '</p>'; } $form .= '</div>'; continue; } if (!isset($options[$m])) { $options[$m] = $val['default']; } $group_start = isset($val['group_start']) ? $val['group_start'] : ''; $group_end = isset($val['group_end']) ? $val['group_end'] : ''; /* // обрамление группы опций if (isset($val['group_start'])) { if ($val['group_start']) $group_start = '<div class="admin_plugin_options">'; else $group_start = ''; } else $group_start = '<div class="admin_plugin_options">'; if (isset($val['group_end'])) { if ($val['group_end']) $group_end = '</div>'; else $group_end = '<br>'; } else $group_end = '</div>'; */ if ($val['description']) { $val['description'] = '<span class="hint-options">' . $val['description'] . '</span>'; } if ($val['type'] == 'text') { if (isset($val['itype'])) { $itype = $val['itype']; } else { $itype = 'text'; } if ($itype == 'hidden') { $form .= $group_start . '<p><span>' . $val['name'] . '</span>' . '<input type="' . $itype . '" value="' . htmlspecialchars($options[$m]) . '" name="' . $key . '-' . $type . '[' . $m . ']' . '">' . $val['description'] . '</p>' . $group_end . NR; } else { $form .= $group_start . '<p><label><span>' . $val['name'] . '</span>' . '<input type="' . $itype . '" value="' . htmlspecialchars($options[$m]) . '" name="' . $key . '-' . $type . '[' . $m . ']' . '"></label>' . $val['description'] . '</p>' . $group_end . NR; } } elseif ($val['type'] == 'textarea') { if (isset($val['rows'])) { $rows = (int) $val['rows']; } else { $rows = 10; } $form .= $group_start . '<p><label><span>' . t($val['name']) . '</span>' . '<textarea rows="' . $rows . '" name="' . $key . '-' . $type . '[' . $m . ']' . '">' . htmlspecialchars($options[$m]) . '</textarea></label>' . $val['description'] . '</p>' . $group_end . NR; } elseif ($val['type'] == 'checkbox') { $ch_val = $options[$m]; if ($ch_val) { $checked = 'checked="checked"'; } else { $checked = ''; } $form .= $group_start . '<p><label><input class="checkbox" type="checkbox" value="' . $ch_val . '"' . ' name="' . $key . '-' . $type . '[' . $m . ']' . '" ' . $checked . '> <span>' . $val['name'] . '</span></label>' . $val['description'] . '</p>' . $group_end . NR; # поскольку не отмеченные чекбоксы не передаются в POST, сделаем массив чекбоксов в hidden $form .= '<input type="hidden" name="' . $key . '-' . $type . '[_mso_checkboxs][' . $m . ']" value="0">'; } elseif ($val['type'] == 'select') { $form .= $group_start . '<p><label><span>' . $val['name'] . '</span>' . '<select name="' . $key . '-' . $type . '[' . $m . ']' . '">'; // если есть values, то выводим - правила задания, как в ini-файлах if (isset($val['values'])) { $values = explode('#', $val['values']); foreach ($values as $v) { $v = trim($v); $v_t = $v; $ar = explode('||', $v); if (isset($ar[0])) { $v = trim($ar[0]); } if (isset($ar[1])) { $v_t = trim($ar[1]); } if (htmlspecialchars($options[$m]) == $v) { $checked = 'selected="selected"'; } else { $checked = ''; } $form .= NR . '<option value="' . $v . '" ' . $checked . '>' . $v_t . '</option>'; } } $form .= '</select></label>' . $val['description'] . '</p>' . $group_end . NR; } elseif ($val['type'] == 'radio') { $form .= $group_start . '<p><span>' . $val['name'] . '</span></p><p>'; if (!isset($val['delimer'])) { $delimer = '<br>'; } else { $delimer = stripslashes($val['delimer']); } // если есть values, то выводим - правила задания, как в ini-файлах if (isset($val['values'])) { $values = explode('#', $val['values']); foreach ($values as $v) { $v = trim($v); $v_t = $v; $ar = explode('||', $v); if (isset($ar[0])) { $v = trim($ar[0]); } if (isset($ar[1])) { $v_t = trim($ar[1]); } if (htmlspecialchars($options[$m]) == $v) { $checked = 'checked="checked"'; } else { $checked = ''; } $form .= NR . '<label><input type="radio" value="' . $v . '" ' . $checked . ' name="' . $key . '-' . $type . '[' . $m . ']' . '"> ' . $v_t . '</label>' . $delimer; } } $form .= $val['description'] . '</p><hr>' . $group_end . NR; } } # выводим форму echo NR . '<form method="post" class="mso_admin_plugin_options">' . mso_form_session('f_session_id'); echo $form; echo NR . '<button type="submit" name="f_submit" class="i save">' . t('Сохранить') . '</button>'; echo '</form>' . NR; } else { echo t('<p>Опции не определены.</p>') . NR; } }