예제 #1
0
파일: index.php 프로젝트: LeonisX/cms
function captcha_go($args = array())
{
    global $MSO;
    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="' . create_captha_img(mso_md5($MSO->data['session']['session_id'] . mso_current_url())) . '" alt="" title="' . tf('Защита от спама: введите только нижние символы') . '"> <span>' . t('(обязательно)') . '</span><br><br></div>
		';
}
예제 #2
0
파일: inifile.php 프로젝트: rettebinu/cms
 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;
 }
예제 #3
0
function mso_edit_comuser($data)
{
    global $MSO;
    $CI =& get_instance();
    $data = mso_xss_clean_data($data, array('user_login', 'password', 'comusers_email', 'comusers_new_password', 'comusers_nik', 'comusers_icq', 'comusers_url', 'comusers_msn', 'comusers_jaber', 'comusers_skype', 'comusers_avatar_url', 'comusers_description', 'comusers_date_birth_y', 'comusers_date_birth_m', 'comusers_date_birth_d', 'comusers_notify', 'comusers_language', 'comusers_activate_key', 'comusers_activate_string', 'comusers_admin_note'));
    if (isset($data['user_login'])) {
        $user_login = $data['user_login'];
    } else {
        $user_login = $MSO->data['session']['users_login'];
    }
    if (isset($data['password'])) {
        $password = $data['password'];
    } else {
        $password = $MSO->data['session']['users_password'];
    }
    # проверка можно ли редактировать этому пользователю с этим паролем и этим разрешением
    if (!mso_check_user_password($user_login, $password, 'admin_comusers')) {
        return array('result' => 0, 'description' => 'Login/password incorrect');
    }
    $comusers_id = isset($data['comusers_id']) ? (int) $data['comusers_id'] : 0;
    if ($comusers_id <= 0) {
        return array('result' => 0, 'description' => 'Comuser ID incorrect');
    }
    $comusers_email = isset($data['comusers_email']) ? $data['comusers_email'] : '';
    # нет email - ошибка
    if (!$comusers_email or !mso_valid_email($comusers_email)) {
        return array('result' => 0, 'description' => 'Email incorrect');
    }
    ### пароль
    $comusers_new_password = '';
    if (isset($data['comusers_new_password'])) {
        $comusers_new_password = mso_strip($data['comusers_new_password'], false);
        if ($comusers_new_password and strlen($comusers_new_password) > 6) {
            $comusers_new_password = mso_md5($comusers_new_password);
        } else {
            return array('result' => 0, 'description' => 'Password incorrect');
        }
    }
    $comusers_nik = isset($data['comusers_nik']) ? $data['comusers_nik'] : '';
    $comusers_icq = isset($data['comusers_icq']) ? $data['comusers_icq'] : '';
    $comusers_url = isset($data['comusers_url']) ? $data['comusers_url'] : '';
    $comusers_msn = isset($data['comusers_msn']) ? $data['comusers_msn'] : '';
    $comusers_jaber = isset($data['comusers_jaber']) ? $data['comusers_jaber'] : '';
    $comusers_skype = isset($data['comusers_skype']) ? $data['comusers_skype'] : '';
    $comusers_avatar_url = isset($data['comusers_avatar_url']) ? $data['comusers_avatar_url'] : '';
    $comusers_description = isset($data['comusers_description']) ? $data['comusers_description'] : '';
    $comusers_date_birth_y = isset($data['comusers_date_birth_y']) ? $data['comusers_date_birth_y'] : '1970';
    $comusers_date_birth_m = isset($data['comusers_date_birth_m']) ? $data['comusers_date_birth_m'] : '1';
    $comusers_date_birth_d = isset($data['comusers_date_birth_d']) ? $data['comusers_date_birth_d'] : '1';
    $comusers_notify = isset($data['comusers_notify']) ? $data['comusers_notify'] : '0';
    $comusers_language = isset($data['comusers_language']) ? $data['comusers_language'] : 'ru';
    $comusers_activate_key = isset($data['comusers_activate_key']) ? $data['comusers_activate_key'] : '';
    $comusers_activate_string = isset($data['comusers_activate_string']) ? $data['comusers_activate_string'] : '';
    $comusers_admin_note = isset($data['comusers_admin_note']) ? $data['comusers_admin_note'] : '';
    # дату в MySQL
    $comusers_date_birth = mso_date_convert_to_mysql($comusers_date_birth_y, $comusers_date_birth_m, $comusers_date_birth_d);
    $upd_data = array('comusers_nik' => $comusers_nik, 'comusers_admin_note' => $comusers_admin_note, 'comusers_email' => $comusers_email, 'comusers_icq' => $comusers_icq, 'comusers_url' => $comusers_url, 'comusers_msn' => $comusers_msn, 'comusers_jaber' => $comusers_jaber, 'comusers_skype' => $comusers_skype, 'comusers_avatar_url' => $comusers_avatar_url, 'comusers_description' => $comusers_description, 'comusers_date_birth' => $comusers_date_birth, 'comusers_notify' => $comusers_notify, 'comusers_language' => $comusers_language, 'comusers_activate_string' => $comusers_activate_string, 'comusers_activate_key' => $comusers_activate_key);
    if ($comusers_new_password) {
        $upd_data['comusers_password'] = $comusers_new_password;
    }
    // _pr($upd_data);
    $CI->db->where('comusers_id', $comusers_id);
    $res = $CI->db->update('comusers', $upd_data) ? '1' : '0';
    mso_flush_cache();
    // сбросим кэш
    $response = array('result' => $res, 'description' => 'Update');
    return $response;
}
예제 #4
0
파일: index.php 프로젝트: Kmartynov/cms
function last_comments_widget_custom($options = array(), $num = 1)
{
    if (!isset($options['count'])) {
        $options['count'] = 5;
    }
    if (!isset($options['words'])) {
        $options['words'] = 20;
    }
    if (!isset($options['maxchars'])) {
        $options['maxchars'] = 20;
    }
    if (!isset($options['header'])) {
        $options['header'] = '';
    }
    $options['count'] = (int) $options['count'];
    if ($options['count'] < 1) {
        $options['count'] = 5;
    }
    $options['words'] = (int) $options['words'];
    if ($options['words'] < 1) {
        $options['words'] = 20;
    }
    $options['maxchars'] = (int) $options['maxchars'];
    if ($options['maxchars'] < 1) {
        $options['maxchars'] = 20;
    }
    $cache_key = 'last_comments_widget_' . $num . mso_md5(serialize($options));
    $k = mso_get_cache($cache_key, true);
    if ($k) {
        return $k;
    }
    // да есть в кэше
    require_once getinfo('common_dir') . 'comments.php';
    // функции комментариев
    $comments = mso_get_comments(false, array('limit' => $options['count'], 'order' => 'desc'));
    $out = '';
    if ($comments) {
        // сгруппируем все комментарии по записям
        $arr_com_page = array();
        $arr_com_page_title = array();
        foreach ($comments as $comment) {
            $arr_com_page[$comment['page_id']][$comment['comments_id']] = $comment;
            $arr_com_page_title[$comment['page_id']] = $comment['page_title'];
        }
        // выводим по странично
        foreach ($arr_com_page as $key => $comments) {
            $out .= '<h5>' . $arr_com_page_title[$key] . '</h5>';
            $comments = array_reverse($comments);
            // чтобы комментарии были в привычном порядке сверху вниз
            $out .= '<ul class="mso-widget-list">';
            foreach ($comments as $comment) {
                extract($comment);
                if ($comment['comments_users_id']) {
                    $css_style_add = 'last_comment_users ' . ' mso-last-comment-users-' . $comment['comments_users_id'];
                } elseif ($comment['comments_comusers_id']) {
                    $css_style_add = 'last_comment_comusers ' . ' mso-last-comment-comusers-' . $comment['comments_comusers_id'];
                } else {
                    $css_style_add = 'last_comment_anonim';
                }
                $out .= '<li class="' . $css_style_add . '"><a href="' . getinfo('siteurl') . 'page/' . mso_slug($page_slug) . '#comment-' . $comments_id . '"><b>';
                if ($comments_users_id) {
                    $out .= $users_nik;
                } elseif ($comments_comusers_id) {
                    if ($comusers_nik) {
                        $out .= $comusers_nik;
                    } else {
                        $out .= t('Комментатор') . ' ' . $comusers_id;
                    }
                } elseif ($comments_author_name) {
                    $out .= $comments_author_name;
                } else {
                    $out .= ' ' . t('Аноним');
                }
                $comments_content_1 = strip_tags($comments_content);
                // удалим тэги
                $comments_content = mso_str_word($comments_content_1, $options['words']);
                // ограничение на количество слов
                // если старый и новый текст после обрезки разные, значит добавим в конце ...
                if ($comments_content_1 != $comments_content) {
                    $comments_content .= '...';
                }
                // каждое слово нужно проверить на длину и если оно больше maxchars, то добавить пробел в wordwrap
                $words = explode(' ', $comments_content);
                foreach ($words as $key => $word) {
                    $words[$key] = mso_wordwrap($word, $options['maxchars'], ' ');
                }
                $comments_content = implode(' ', $words);
                $out .= ' »</b>  ' . strip_tags($comments_content) . '</a>';
                $out .= '</li>' . NR;
            }
            $out .= '</ul>';
        }
        if ($options['header']) {
            $out = $options['header'] . $out;
        }
    }
    mso_add_cache($cache_key, $out, false, true);
    // сразу в кэш добавим
    return trim($out);
}
예제 #5
0
<![endif]-->

<script type="text/javascript">
//<![CDATA[
$(function()
	{
	//if ($.browser.msie)
	//	{
	//	document.execCommand("BackgroundImageCache", false, true);
	//	}
	DiGraph = new DiGraph('<?php 
echo $editor_config['url'];
?>
', 'f_content');
	DiGraph.skey='<?php 
echo mso_md5('digraph');
?>
';
	DiGraph.init(); 
	});
//]]>
</script>

<form method="post" <?php 
echo $editor_config['action'];
?>
>
<fieldset>
<?php 
echo $editor_config['do'];
?>
예제 #6
0
<?php

if (!$_SERVER['HTTP_X_REQUESTED_WITH']) {
    exit(0);
}
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
    exit(0);
}
if (!$_REQUEST['skey']) {
    exit(0);
}
define('BASEPATH', 'digraph hook');
require_once '../../../mso_config.php';
require_once '../../../common/common.php';
$skey = mso_md5('digraph');
if ($_REQUEST['skey'] != $skey) {
    exit(0);
}
$host = 'www.typograf.ru';
$script = '/webservice/';
$data = 'text=' . urlencode($_REQUEST['text']) . '&chr=UTF-8';
$buf = '';
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if ($fp) {
    fputs($fp, "POST {$script} HTTP/1.1\n");
    fputs($fp, "Host: {$host}\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
    fputs($fp, "Content-length: " . strlen($data) . "\n");
    fputs($fp, "User-Agent: PHP Script\n");
    fputs($fp, "Connection: close\n\n");
    fputs($fp, $data);
예제 #7
0
파일: guestbook.php 프로젝트: Kmartynov/cms
} else {
    // тут форма, если не было post
    echo '<div class="mso-guestbook"><form method="post">' . mso_form_session('f_session_id');
    foreach ($options['fields_arr'] as $key => $val) {
        echo '<p><label><span>' . t($val) . '</span>';
        if ($key != 'text') {
            echo '<input name="f_fields_guestbook[' . $key . ']" type="text"></label></p>';
        } else {
            echo '<textarea name="f_fields_guestbook[' . $key . ']" rows="10"></textarea></label></p>';
        }
    }
    // капча из плагина капчи
    if (!function_exists('create_captha_img')) {
        require_once getinfo('plugins_dir') . 'captcha/index.php';
    }
    $captcha = '<img src="' . create_captha_img(mso_md5($MSO->data['session']['session_id'] . mso_current_url())) . '" title="' . t('Защита от спама: введите только нижние символы') . '">';
    echo '<p><label><span>' . t('Нижние символы:') . $captcha . '</span>
		<input type="text" name="f_guestbook_captha" value="" maxlength="4" required></label></p>';
    echo '<p><button type="submit" class="i submit" name="f_submit_guestbook">' . t('Отправить') . '</button></p>';
    echo '</form></div>';
}
// тут последние отзывы с пагинацией
// нам нужна все поля таблицы
// вначале определим общее количество записей
$pag = array();
// пагинация
$pag['limit'] = $options['limit'];
// записей на страницу
$pag['type'] = '';
// тип
$CI->db->select('guestbook_id');
예제 #8
0
파일: remote.php 프로젝트: Kmartynov/cms
function mso_remote_f_newcategory($post)
{
    if ($post = mso_check_post(array('category_id_parent', 'category_name', 'category_desc', 'category_slug', 'category_menu_order'))) {
        // подготавливаем данные
        $data = array('category_id_parent' => (int) $post['category_id_parent'], 'category_name' => $post['category_name'], 'category_desc' => $post['category_desc'], 'category_slug' => $post['category_slug'], 'category_menu_order' => (int) $post['category_menu_order'], 'user_login' => $post['remote_login'], 'password' => mso_md5($post['remote_password']));
        // выполняем запрос и получаем результат
        require_once getinfo('common_dir') . 'category.php';
        require_once getinfo('common_dir') . 'functions-edit.php';
        // функции редактирования
        $result = mso_new_category($data);
        if (isset($result['result']) and $result['result']) {
            mso_flush_cache();
            // сбросим кэш
            $out = 'OK: ' . $result['description'];
            return $out;
        } else {
            $out = 'ERROR: ' . $result['description'];
            return $out;
        }
    } else {
        $out = 'ERROR: ' . 'missing arguments';
        return $out;
    }
}
예제 #9
0
파일: install.php 프로젝트: rb2/MaxSite-CMS
        $namesite = isset($_POST['namesite']) ? mso_strip($_POST['namesite'], true) : false;
        $demoposts = isset($_POST['demoposts']) ? (int) mso_strip($_POST['demoposts'], true) : 0;
        if (!mso_valid_email($useremail)) {
            $useremail = false;
        }
        if (strlen($userpassword) < 6) {
            $userpassword = false;
        }
        if (!$useremail or !$username or !$userpassword or !$namesite) {
            $step = 2;
            $error = '<h2 class="error">' . t('Ошибочные или неполные данные!', 'install') . '</h2>';
        }
        if ($step === 3) {
            require_once APPPATH . 'views/install/install-common.php';
            //require_once ('install-common.php');
            $res = mso_install_newsite(array('username' => $username, 'userpassword' => mso_md5($userpassword), 'userpassword_orig' => $userpassword, 'useremail' => $useremail, 'namesite' => $namesite, 'demoposts' => $demoposts, 'ip' => $_SERVER['REMOTE_ADDR']));
        }
    } else {
        $step == 2;
    }
}
mso_nocache_headers();
?>
<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Install MaxSite CMS</title>
	<meta name="generator" content="MaxSite CMS">
	<link rel="stylesheet" href="<?php 
echo $MSO->data['url_css'];
예제 #10
0
파일: common.php 프로젝트: rettebinu/cms
function _mso_login()
{
    global $MSO;
    // обрабатываем POST если есть
    if ($_POST) {
        $_POST = mso_clean_post(array('flogin_submit' => 'base', 'flogin_redirect' => 'base', 'flogin_user' => 'base', 'flogin_password' => 'base', 'flogin_session_id' => 'base'));
    }
    if ($_POST and isset($_POST['flogin_submit']) and isset($_POST['flogin_redirect']) and isset($_POST['flogin_user']) and isset($_POST['flogin_password']) and isset($_POST['flogin_session_id'])) {
        sleep(3);
        // задержка - примитивная защита от подбора пароля
        $flogin_session_id = $_POST['flogin_session_id'];
        # защита сесии
        if ($MSO->data['session']['session_id'] != $flogin_session_id) {
            mso_redirect('loginform/error');
        }
        $flogin_redirect = urldecode($_POST['flogin_redirect']);
        if ($flogin_redirect == 'home') {
            $flogin_redirect = getinfo('siteurl');
        }
        $flogin_user = $_POST['flogin_user'];
        $flogin_password = $_POST['flogin_password'];
        # проверяем на strip - запрещенные символы
        if (!mso_strip($flogin_user, true) or !mso_strip($flogin_password, true)) {
            mso_redirect('loginform/error');
        }
        $flogin_password = mso_md5($flogin_password);
        $CI =& get_instance();
        // если это комюзер, то логин = email
        // проверяем валидность email и если он верный, то ставим куку на этого комюзера
        // и редиректимся на главную (куку ставить только на главную!)
        // если же это обычный юзер-автор, то проверяем логин и пароль по базе
        if (mso_valid_email($flogin_user)) {
            // если в логине мыло, то проверяем сначала в таблице авторов
            $CI->db->from('users');
            # таблица users
            $CI->db->select('*');
            # все поля
            $CI->db->limit(1);
            # одно значение
            $CI->db->where('users_email', $flogin_user);
            // where 'users_login' = $flogin_user
            $CI->db->where('users_password', $flogin_password);
            // where 'users_password' = $flogin_password
            $query = $CI->db->get();
            if ($query->num_rows() > 0) {
                $userdata = $query->result_array();
                # добавляем юзера к сессии
                $CI->session->set_userdata('userlogged', '1');
                $data = array('users_id' => $userdata[0]['users_id'], 'users_nik' => $userdata[0]['users_nik'], 'users_login' => $userdata[0]['users_login'], 'users_password' => $userdata[0]['users_password'], 'users_groups_id' => $userdata[0]['users_groups_id'], 'users_last_visit' => $userdata[0]['users_last_visit'], 'users_show_smiles' => $userdata[0]['users_show_smiles'], 'users_time_zone' => $userdata[0]['users_time_zone'], 'users_language' => $userdata[0]['users_language'], 'users_avatar_url' => $userdata[0]['users_avatar_url'], 'users_email' => $userdata[0]['users_email']);
                $CI->session->set_userdata($data);
                // сразу же обновим поле последнего входа
                $CI->db->where('users_id', $userdata[0]['users_id']);
                $CI->db->update('users', array('users_last_visit' => date('Y-m-d H:i:s')));
                mso_redirect($flogin_redirect, true);
            } else {
                // это не автор, значит это комюзер
                $CI->db->select('comusers_id, comusers_password, comusers_email, comusers_nik, comusers_url, comusers_avatar_url, comusers_last_visit');
                $CI->db->where('comusers_email', $flogin_user);
                $CI->db->where('comusers_password', $flogin_password);
                $query = $CI->db->get('comusers');
                if ($query->num_rows()) {
                    $comuser_info = $query->row_array(1);
                    // вся инфа о комюзере
                    // сразу же обновим поле последнего входа
                    $CI->db->where('comusers_id', $comuser_info['comusers_id']);
                    $CI->db->update('comusers', array('comusers_last_visit' => date('Y-m-d H:i:s')));
                    $expire = time() + 60 * 60 * 24 * 365;
                    // 365 дней
                    $name_cookies = 'maxsite_comuser';
                    $value = serialize($comuser_info);
                    mso_add_to_cookie($name_cookies, $value, $expire, $flogin_redirect);
                    // в куку для всего сайта
                    exit;
                } else {
                    mso_redirect('loginform/error');
                    exit;
                }
            }
        } else {
            // это обычный автор
            $CI->db->from('users');
            # таблица users
            $CI->db->select('*');
            # все поля
            $CI->db->limit(1);
            # одно значение
            $CI->db->where('users_login', $flogin_user);
            // where 'users_login' = $flogin_user
            $CI->db->where('users_password', $flogin_password);
            // where 'users_password' = $flogin_password
            $query = $CI->db->get();
            if ($query->num_rows() > 0) {
                $userdata = $query->result_array();
                # добавляем юзера к сессии
                $CI->session->set_userdata('userlogged', '1');
                $data = array('users_id' => $userdata[0]['users_id'], 'users_nik' => $userdata[0]['users_nik'], 'users_login' => $userdata[0]['users_login'], 'users_password' => $userdata[0]['users_password'], 'users_groups_id' => $userdata[0]['users_groups_id'], 'users_last_visit' => $userdata[0]['users_last_visit'], 'users_show_smiles' => $userdata[0]['users_show_smiles'], 'users_time_zone' => $userdata[0]['users_time_zone'], 'users_language' => $userdata[0]['users_language'], 'users_avatar_url' => $userdata[0]['users_avatar_url'], 'users_email' => $userdata[0]['users_email']);
                $CI->session->set_userdata($data);
                // сразу же обновим поле последнего входа
                $CI->db->where('users_id', $userdata[0]['users_id']);
                $CI->db->update('users', array('users_last_visit' => date('Y-m-d H:i:s')));
                mso_redirect($flogin_redirect, true);
            } else {
                mso_redirect('loginform/error');
            }
        }
        // автор
    } else {
        $MSO->data['type'] = 'loginform';
        $template_file = $MSO->config['templates_dir'] . $MSO->config['template'] . '/index.php';
        if (file_exists($template_file)) {
            require $template_file;
        } else {
            show_error('Ошибка - отсутствует файл шаблона index.php');
        }
    }
}
예제 #11
0
파일: home.php 프로젝트: Kmartynov/cms
<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
/**
 * MaxSite CMS
 * (c) http://max-3000.com/
 */
header('Content-type: text/html; charset=utf-8');
header('Content-Type: application/rss+xml');
$cache_key = mso_md5('feed_' . mso_current_url());
$k = mso_get_cache($cache_key);
if ($k) {
    return print $k;
}
// да есть в кэше
ob_start();
require_once getinfo('common_dir') . 'page.php';
// основные функции страниц
require_once getinfo('common_dir') . 'category.php';
// функции рубрик
$this->load->helper('xml');
$time_zone = getinfo('time_zone');
// 2.00 -> 200
$time_zone_server = date('O') / 100;
// +0100 -> 1.00
$time_zone = $time_zone + $time_zone_server;
// 3
$time_zone = number_format($time_zone, 2, '.', '');
// 3.00
예제 #12
0
파일: comments.php 프로젝트: Kmartynov/cms
function mso_comuser_auth($data)
{
    if (!isset($data['email'])) {
        return false;
    } else {
        $email = $data['email'];
    }
    $pass = isset($data['password']) ? $data['password'] : false;
    $comusers_nik = isset($data['comusers_nik']) ? $data['comusers_nik'] : '';
    $redirect = isset($data['redirect']) ? $data['redirect'] : true;
    // если $die = true, то всё рубим через die
    // иначе возвращаем результат по return
    $die = isset($data['die']) ? $data['die'] : true;
    // разрешить создавать через эту функцию новых комюзеров (если такого email нет в базе)
    $allow_create_new_comuser = isset($data['allow_create_new_comuser']) ? $data['allow_create_new_comuser'] : true;
    $CI =& get_instance();
    // если указанный email зарегистрирован на user, то отказываем в регистрации
    $CI->db->select('users_id');
    $CI->db->where('users_email', $email);
    $query = $CI->db->get('users');
    if ($query->num_rows() > 0) {
        if ($die) {
            die(tf('Данный email уже используется на сайте админом или автором.'));
        } else {
            return tf('Данный email уже используется на сайте админом или автором.');
        }
    }
    // имя email и пароль нужно проверить, чтобы такие были в базе
    // вначале нужно проверить наличие такого email
    // если есть, то сверяем и пароль
    $CI->db->select('comusers_id, comusers_password, comusers_email, comusers_nik, comusers_url, comusers_avatar_url, comusers_last_visit');
    $CI->db->where('comusers_email', $email);
    $query = $CI->db->get('comusers');
    if ($query->num_rows()) {
        $comuser_info = $query->row_array(1);
        // вся инфа о комюзере
        if ($pass !== false) {
            // сверим пароль
            if ($comuser_info['comusers_password'] == mso_md5($pass)) {
                // пароли равны, можно логинить
                // сразу же обновим поле последнего входа
                $CI->db->where('comusers_id', $comuser_info['comusers_id']);
                $CI->db->update('comusers', array('comusers_last_visit' => date('Y-m-d H:i:s')));
                $expire = time() + 60 * 60 * 24 * 365;
                // 365 дней
                $name_cookies = 'maxsite_comuser';
                $value = serialize($comuser_info);
                mso_add_to_cookie($name_cookies, $value, $expire, $redirect);
                // в куку для всего сайта
            } else {
                // email есть но пароль ошибочный
                if ($die) {
                    die('Данный email уже зарегистрирован <a href="' . getinfo('siteurl') . '">на сайте</a>. Для входа нужно указать верный пароль. Вы можете <a href="' . getinfo('siteurl') . 'password-recovery">восстановить пароль</a>.');
                } else {
                    return 'Данный email уже зарегистрирован <a href="' . getinfo('siteurl') . '">на сайте</a>. Для входа нужно указать верный пароль. Вы можете <a href="' . getinfo('siteurl') . 'password-recovery">восстановить пароль</a>.';
                }
            }
        } else {
            // пароль сверять не нужно
            // сразу же обновим поле последнего входа
            $CI->db->where('comusers_id', $comuser_info['comusers_id']);
            $CI->db->update('comusers', array('comusers_last_visit' => date('Y-m-d H:i:s')));
            $expire = time() + 60 * 60 * 24 * 365;
            // 365 дней
            $name_cookies = 'maxsite_comuser';
            $value = serialize($comuser_info);
            mso_add_to_cookie($name_cookies, $value, $expire, $redirect);
            // в куку для всего сайта
        }
    } elseif ($allow_create_new_comuser) {
        // нет такого email, нужно регистрировать комюзера
        // но если запрещены регистрации, то все рубим
        if (!mso_get_option('allow_comment_comusers', 'general', '1')) {
            if ($die) {
                die(t('На сайте запрещена регистрация.'));
            } else {
                return t('На сайте запрещена регистрация.');
            }
        }
        // если пароль не указан, то генерируем его случайным образом
        if ($pass === false) {
            $pass = substr(mso_md5($email), 1, 9);
        }
        $ins_data = array('comusers_email' => $email, 'comusers_password' => mso_md5($pass));
        // генерируем случайный ключ активации
        $ins_data['comusers_activate_key'] = mso_md5(rand());
        $ins_data['comusers_date_registr'] = date('Y-m-d H:i:s');
        $ins_data['comusers_last_visit'] = date('Y-m-d H:i:s');
        $ins_data['comusers_ip_register'] = $_SERVER['REMOTE_ADDR'];
        $ins_data['comusers_notify'] = '1';
        // сразу включаем подписку на уведомления
        if (isset($data['comusers_url'])) {
            if ($comusers_url = mso_clean_str($data['comusers_url'])) {
                $ins_data['comusers_url'] = $comusers_url;
            }
        } else {
            $comusers_url = '';
        }
        if ($comusers_nik = mso_clean_str($comusers_nik, 'base|not_url')) {
            $ins_data['comusers_nik'] = $comusers_nik;
        }
        // Автоматическая активация новых комюзеров
        // если активация стоит автоматом, то сразу её и прописываем
        if (mso_get_option('comusers_activate_auto', 'general', '0')) {
            $ins_data['comusers_activate_string'] = $ins_data['comusers_activate_key'];
        }
        $res = $CI->db->insert('comusers', $ins_data) ? '1' : '0';
        if ($res) {
            $comusers_id = $CI->db->insert_id();
            // номер добавленной записи
            // нужно добавить опцию в мета «новые комментарии, где я участвую» subscribe_my_comments
            // вначале грохаем если есть такой ключ
            $CI->db->where('meta_table', 'comusers');
            $CI->db->where('meta_id_obj', $comusers_id);
            $CI->db->where('meta_key', 'subscribe_my_comments');
            $CI->db->delete('meta');
            // теперь добавляем как новый
            $ins_data2 = array('meta_table' => 'comusers', 'meta_id_obj' => $comusers_id, 'meta_key' => 'subscribe_my_comments', 'meta_value' => '1');
            $CI->db->insert('meta', $ins_data2);
            // отправляем ему уведомление с кодом активации
            mso_email_message_new_comuser($comusers_id, $ins_data, mso_get_option('comusers_activate_auto', 'general', '0'));
            // после отправки можно сразу залогинить
            $comuser_info = array('comusers_id' => $comusers_id, 'comusers_password' => mso_md5($pass), 'comusers_email' => $email, 'comusers_nik' => $comusers_nik, 'comusers_url' => $comusers_url, 'comusers_avatar_url' => '', 'comusers_last_visit' => '');
            $value = serialize($comuser_info);
            $expire = time() + 60 * 60 * 24 * 365;
            // 365 дней
            $name_cookies = 'maxsite_comuser';
            mso_add_to_cookie($name_cookies, $value, $expire, $redirect);
            // в куку для всего сайта
        } else {
            if ($die) {
                die(t('Произошла ошибка регистрации'));
            } else {
                return t('Произошла ошибка регистрации');
            }
        }
    }
    return false;
}
예제 #13
0
파일: category.php 프로젝트: Kmartynov/cms
function mso_cat_ul($li_format = '%NAME%', $show_empty = true, $checked_id = array(), $selected_id = array(), $ul_class = 'category', $type_page = 'blog', $type = 'page', $order = 'category_menu_order', $asc = 'asc', $custom_array = false, $include = array(), $exclude = array())
{
    // спасибо за помощь http://tedbeer.net/wp/
    // $include = array('3');
    // $exclude = array('3');
    // возможно, что этот список уже сформирован, поэтому посмотрим в кэше
    $cache_key = mso_md5('mso_cat_ul' . $li_format . $show_empty . implode(' ', $checked_id) . implode(' ', $selected_id) . $ul_class . $type_page . $type . $order . $asc . implode(' ', $include) . implode(' ', $exclude));
    $k = mso_get_cache($cache_key);
    if ($k) {
        // находим текущий url (код повтояет внизу)
        $current_url = getinfo('siteurl') . mso_current_url();
        // текущий урл
        $out = str_replace('<a href="' . $current_url . '">', '<a href="' . $current_url . '" class="current_url">', $k);
        $pattern = '|<li class="(.*?)">(.*?)(<a href="' . $current_url . '")|ui';
        $out = preg_replace($pattern, '<li class="$1 current_url">$2$3', $out);
        return $out;
    }
    # получим все рубрики в виде одномерного массива
    if ($custom_array) {
        $all = $custom_array;
    } else {
        $all = mso_cat_array_single('page', $order, $asc, $type_page);
    }
    $top = array();
    foreach ($all as $item) {
        $parentId = $item['category_id_parent'];
        $id = $item['category_id'];
        if ($parentId && isset($all[$parentId])) {
            if (!isset($all[$parentId]['children'])) {
                $all[$parentId]['children'] = array($id);
            } else {
                $all[$parentId]['children'][] = $id;
            }
        } else {
            $top[] = $id;
        }
    }
    // непосредственно формирование списка
    $out = _mso_cat_ul_glue($top, $all, $li_format, $checked_id, $selected_id, $show_empty, $include, $exclude);
    # $out = str_replace("\n{*}</li>", "</li>", $out);
    if ($ul_class) {
        $out = '<ul class="' . $ul_class . '">' . "\n" . $out . "\n" . '</ul>';
    } else {
        $out = '<ul>' . "\n" . $out . "\n" . '</ul>';
    }
    mso_add_cache($cache_key, $out);
    // сразу в кэш добавим
    // отметим текущую рубрику. Поскольку у нас к кэше должен быть весь список и не делать кэш для каждого url
    // то мы просто перед отдачей заменяем текущий url на url с li.current_url
    $current_url = getinfo('siteurl') . mso_current_url();
    // текущий урл
    $out = str_replace('<a href="' . $current_url . '">', '<a href="' . $current_url . '" class="current_url">', $out);
    $pattern = '|<li class="(.*?)">(.*?)(<a href="' . $current_url . '")|ui';
    $out = preg_replace($pattern, '<li class="$1 current_url">$2$3', $out);
    return $out;
}
예제 #14
0
파일: index.php 프로젝트: rb2/MaxSite-CMS
function maxsite_auth_custom($args = array())
{
    if (mso_segment(1) == 'maxsite-auth-form') {
        // здесь формируется форма для отправки запроса
        // данные отправляются POST
        // посетитель должен указать только адрес своего сайта
        // в hidden указываем нужные данные
        $redirect_url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : getinfo('siteurl');
        echo '<html><head>
		<title>Авторизация</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		</head><body>
			<form method="post" action="' . getinfo('site_url') . 'maxsite-auth-form-post">
				<input type="hidden" name="redirect_url" value="' . urlencode($redirect_url) . '">
				Укажите адрес сайта (с http://): <input type="text" name="url" value="" size="80">
				<button type="submit">' . tf('Перейти к сайту') . '</button>
			</form>
		</body></html>';
        die;
        // Форма ОК
    } elseif (mso_segment(1) == 'maxsite-auth-form-post') {
        // здесь происходит приём указанного адреса сайта и редирект на него с нужными данными
        if ($post = mso_check_post(array('redirect_url', 'url'))) {
            $url = mb_strtolower($post['url']);
            $url = trim(str_replace('/', ' ', $url));
            $url = trim(str_replace('  ', ' ', $url));
            $url = trim(str_replace(' ', '/', $url));
            $url = str_replace('http:/', 'http://', $url);
            $url = $url . '/maxsite-auth-receive/' . base64_encode(getinfo('siteurl') . '##' . urldecode($post['redirect_url']) . '##' . substr(mso_md5(getinfo('siteurl')), 1, 5));
            mso_redirect($url, true);
        } else {
            mso_redirect('maxsite-auth-form');
        }
        // ошибочная форма - возвращаемся
    } elseif (mso_segment(1) == 'maxsite-auth-receive') {
        // принимаем входящие данные от другого сайта
        // здесь запрос на авторизацию
        // нужно проверить все входящие данные
        // проверить is_login
        // и сформировать форму с отправкой на входящий_сайт/maxsite-auth-reply
        if (!is_login()) {
            echo '<html><head>
		<title>Авторизация</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		</head><body>
			<div class="loginform">' . tf('Для авторизации необходимо войти на сайт') . '<br>';
            mso_login_form(array('login' => tf('Логин:') . ' ', 'password' => tf('Пароль:') . ' ', 'submit' => ''), getinfo('siteurl') . mso_current_url());
            echo '</div></body></html>';
            die;
            // выходим ОК
        } else {
            //проверяем разрешения группы
            if (!mso_check_allow('maxsite_auth_edit')) {
                die(tf('Доступ к авторизации запрещен'));
            }
            $options = mso_get_option('plugin_maxsite_auth', 'plugins', array());
            if (!isset($options['email']) or !$options['email']) {
                die(tf('Не задан ответный email'));
            }
            if (!isset($options['password']) or !$options['password']) {
                die(tf('Не задан ответный пароль'));
            }
            // смотрятся входные get-данные (расшифровка из base64) адрес-сайт1
            $data64 = mso_segment(2);
            if (!$data64) {
                die(tf('Нет данных'));
            }
            // отладка
            //	echo (getinfo('siteurl') . '##'. 'page/about' . '##' . substr(mso_md5(getinfo('siteurl')), 1, 5));
            //	echo '<br>'. base64_encode((getinfo('siteurl') . '##'. 'page/about' . '##' . substr(mso_md5(getinfo('siteurl')), 1, 5)));
            //	echo '<br>';
            // распаковываем данные
            $data = @base64_decode($data64);
            if (!$data) {
                die(tf('Ошибочные данные'));
            }
            //	адрес-сайт1##адрес текущей страницы1##открытый ключ
            $data = explode('##', $data);
            // обработаем предварительно массив
            $data_1 = array();
            foreach ($data as $element) {
                if ($d = trim($element)) {
                    $data_1[] = $d;
                }
            }
            // должно быть 3 элемента
            if (count($data_1) != 3) {
                die(tf('Неверное количество данных'));
            }
            // pr($data_1);
            $data_siteurl = $data_1[0];
            $data_redirect = $data_1[1];
            $data_key = $data_1[2];
            // все проверки пройдены
            // выводим форму с кнопкой Разрешить
            // данные для ответа
            //	- адрес исходный
            //	- адрес ответ - текущий
            //	- адрес текущей страницы1 - редирект
            //	- открытый ключ сайта2
            //	- зашифрованный «email##пароль» на основе открытых ключей сайт1 и сайт2
            $CI =& get_instance();
            $CI->load->library('encrypt');
            // подключим библиотеку для шифрования
            // ключ строится по этому алгоритму
            // он должен быть фиксированным для одного сайта
            $my_key = substr(mso_md5(getinfo('siteurl')), 1, 5);
            // шифруем на основе двух ключей
            $my_email_pass = $CI->encrypt->encode($options['email'] . '##' . $options['password'], $data_key . $my_key);
            $data = getinfo('siteurl') . '##' . $data_siteurl . '##' . $data_redirect . '##' . $my_key . '##' . $my_email_pass;
            // pr($data);
            // pr($CI->encrypt->decode($my_email_pass, $data_key . $my_key));
            echo '<html><head>
		<title>Авторизация</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		</head><body>
			<form method="post" action="' . $data_siteurl . 'maxsite-auth-reply">
				<input type="hidden" name="data" value="' . base64_encode($data) . '">
				<button type="submit">' . tf('Подтвердить авторизацию') . '</button>
			</form>
			</body></html>';
            die;
            // выход ОК
        }
    } elseif (mso_segment(1) == 'maxsite-auth-reply') {
        // принимаем данные для авторизации от другого сайта
        // должен быть email и пароль
        // проверяем входящие данные
        // проверяем существаание такого комюзера
        // если его нет, то выполняем авторизацию
        // после выполняем автологин
        // и редиректимся на указанную страницу
        // pr($_POST);
        if ($post = mso_check_post(array('data'))) {
            // проверим referer
            if (!isset($_SERVER['HTTP_REFERER'])) {
                die(t('Ошибочный referer-сайт'));
            }
            $data = @base64_decode($post['data']);
            if (!$data) {
                die(t('Ошибочные данные'));
            }
            // ошибка распаковки
            // pr($data);
            $data = explode('##', $data);
            // обработаем предварительно массив
            $data_1 = array();
            foreach ($data as $element) {
                if ($d = trim($element)) {
                    $data_1[] = $d;
                }
            }
            // должно быть 5 элементов
            if (count($data_1) != 5) {
                die(t('Неверное количество данных'));
            }
            /*
            			$data = getinfo('siteurl') . '##'
            					. $data_siteurl . '##'
            					. $data_redirect . '##'
            					. $my_key . '##'
            					. $my_email_pass;
            */
            // pr($data_1);
            $data_siteurl = $data_1[0];
            // сайт где была сделана авторизация = реферер
            $my_siteurl = $data_1[1];
            // сайт с которого был отправлен запрос на авторизацию - должен быть равен текущему
            $data_redirect = $data_1[2];
            // конечная страница
            $data_key = $data_1[3];
            // открытый ключ сайта-авторизатора
            $data_email_pass = $data_1[4];
            // email и пароль
            if (strpos($_SERVER['HTTP_REFERER'], $data_siteurl) === false) {
                die(t('Ошибочный referer-сайт'));
            }
            if ($my_siteurl != getinfo('siteurl')) {
                die(t('Ошибочный исходный сайт'));
            }
            $CI =& get_instance();
            $CI->load->library('encrypt');
            // подключим библиотеку для шифрования
            // ключ строится по этому алгоритму
            // он должен быть фиксированным для одного сайта
            $my_key = substr(mso_md5(getinfo('siteurl')), 1, 5);
            // шифруем на основе двух ключей
            $my_email_pass = $CI->encrypt->decode($data_email_pass, $my_key . $data_key);
            //_pr($my_email_pass);
            $email_pass = explode('##', $my_email_pass);
            if (count($email_pass) != 2) {
                die(tf('Неверные данные email-пароль'));
            }
            $email = $email_pass[0];
            // email
            $pass = $email_pass[1];
            // пароль
            if (!mso_valid_email($email)) {
                die(t('Неверный email'));
            }
            if (strlen($pass) < 6) {
                die(tf('Короткий пароль'));
            }
            // pr($email . ' ' . $pass);
            require_once getinfo('common_dir') . 'comments.php';
            mso_comuser_auth(array('email' => $email, 'password' => $pass));
            die;
            // выход ОК
        } else {
            die('Ошибочные данные');
        }
        // нет POST
    } else {
        return $args;
    }
}
예제 #15
0
function mso_remote_post()
{
    # каждый запрос должен содержать логин, пароль, ключ безопасности, имя функции и её аргументы
    if ($post = mso_check_post(array('remote_login', 'remote_password', 'remote_key', 'remote_function'))) {
        //pr($post);
        $post = _mso_trim_array($post);
        //pr($post);
        $remote_login = $post['remote_login'];
        $remote_password = $post['remote_password'];
        $remote_key = $post['remote_key'];
        $CI =& get_instance();
        # всегда проверяем логин и пароль
        $CI->db->from('users');
        # таблица users
        $CI->db->select('users_id');
        $CI->db->limit(1);
        # одно значение
        $CI->db->where(array('users_login' => $remote_login, 'users_password' => mso_md5($remote_password)));
        $query = $CI->db->get();
        if ($query->num_rows() == 0) {
            echo 'MaxSite CMS REMOTE (http://max-3000.com/)ERROR: Login/password incorrect';
            return false;
        } else {
            if ($remote_key != getinfo('remote_key')) {
                echo 'MaxSite CMS REMOTE (http://max-3000.com/)ERROR: Remote key incorrect';
                return false;
            }
            // вход корректный, добавим в $post данные юзера
            $r = $query->result_array();
            $post['remote_users_id'] = $r[0]['users_id'];
            $post['remote_users_login'] = $remote_login;
            $post['remote_users_password'] = mso_md5($remote_password);
        }
        # получаем имя функции
        $remote_function = $post['remote_function'];
        # формат вывода - для некоторых функций
        # есть только text, xml и html
        if (!isset($post['remote_format_out'])) {
            $post['remote_format_out'] = 'xml';
        } else {
            if ($post['remote_format_out'] == 'text') {
                $post['remote_format_out'] = 'text';
            } elseif ($post['remote_format_out'] == 'html') {
                $post['remote_format_out'] = 'html';
            } else {
                $post['remote_format_out'] = 'xml';
            }
        }
        # контроль
        # echo 'remote_function : ' . $remote_function . "<br />";
        # echo 'remote_function_args : '; pr($remote_function_args);
        ################################################################################
        # выполняем запрашиваемую функцию
        $out = '';
        # hello
        if ($remote_function == 'hello') {
            $out = mso_remote_f_hello();
        } elseif ($remote_function == 'addtwonumbers') {
            $out = mso_remote_f_addtwonumbers($post);
        } elseif ($remote_function == 'getgeneralinfo') {
            $out = mso_remote_f_getgeneralinfo($post);
        } elseif ($remote_function == 'newpost') {
            $out = mso_remote_f_newpost($post);
        } elseif ($remote_function == 'setpost') {
            $out = mso_remote_f_setpost($post);
        } elseif ($remote_function == 'getrecentposttitles') {
            $out = mso_remote_f_getrecentposttitles($post);
        } elseif ($remote_function == 'getpost') {
            $out = mso_remote_f_getpost($post);
        } elseif ($remote_function == 'deletepost') {
            $out = mso_remote_f_deletepost($post);
        } elseif ($remote_function == 'getcategorylist') {
            $out = mso_remote_f_getcategorylist($post);
        } elseif ($remote_function == 'newcategory') {
            $out = mso_remote_f_newcategory($post);
        } elseif ($remote_function == 'setcategory') {
            $out = mso_remote_f_setcategory($post);
        } elseif ($remote_function == 'deletecategory') {
            $out = mso_remote_f_deletecategory($post);
        } elseif ($remote_function == 'gettags') {
            $out = mso_remote_f_gettags($post);
        } elseif ($remote_function == 'getfilenameuploads') {
            $out = mso_remote_f_getfilenameuploads($post);
        } elseif ($remote_function == 'newmediaobject') {
            $out = mso_remote_f_newmediaobject($post);
        } elseif ($remote_function == 'deletemediaobject') {
            $out = mso_remote_f_deletemediaobject($post);
        } else {
            # ни одной функции не выполнилось - выходим
            $out = 'ERROR: No access (unknow function)';
        }
        if ($out) {
            if ($post['remote_format_out'] == 'xml') {
                header("Content-type: text/xml");
            }
            // в начало нужно добавить сигнатуру MaxSite CMS
            // если этой сигнатуры нет, блог-клиент должен определить результат как ошибка
            echo 'MaxSite CMS REMOTE (http://max-3000.com/)' . $out;
        }
    } else {
        echo 'ERROR: missing arguments';
    }
}
예제 #16
0
<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
mso_checkreferer();
// защищаем реферер
if ($post = mso_check_post(array('text', 'id'))) {
    $text = $post['text'];
    $id = $post['id'];
    // номер записи
    $fn = mso_add_float_option('autosave-' . $id . '-' . mso_md5($id), $text, '', false, '.txt', false);
    // и в float-опции без серилизации
    echo getinfo('uploads_url') . $fn;
}
# end file