Пример #1
0
function theme_switch_init($args = array())
{
    global $MSO;
    // если есть get ?theme=шаблон , то выставляем новую куку по этому значению
    // идея nicothin (Николай Громов) - http://forum.max-3000.com/viewtopic.php?p=9943#p9943
    $get = mso_parse_url_get(mso_url_get());
    $get = (isset($get['theme']) and $get['theme']) ? mso_xss_clean($get['theme']) : false;
    // проверяем есть ли post
    if ($post = mso_check_post(array('f_session_id', 'f_theme_switch_submit', 'theme_switch_radio')) or $get) {
        if (!$get) {
            mso_checkreferer();
            $dir = $post['theme_switch_radio'][0];
            // каталог шаблона
        } else {
            $dir = $get;
        }
        // если он есть - проверяем, то пишем куку и редиректимся
        if (file_exists(getinfo('templates_dir') . $dir . '/index.php')) {
            $opt = mso_get_option('theme_switch', 'plugins', array());
            if (isset($opt['templates'][$dir])) {
                // 30 дней = 2592000 секунд 60 * 60 * 24 * 30
                mso_add_to_cookie('theme_switch', $dir, time() + 2592000, true);
            }
        }
    }
    // проверяем существование куки theme_switch
    if (isset($_COOKIE['theme_switch'])) {
        $dir = $_COOKIE['theme_switch'];
        // значение текущего кука
        if (file_exists(getinfo('templates_dir') . $dir . '/index.php')) {
            $opt = mso_get_option('theme_switch', 'plugins', array());
            if (isset($opt['templates'][$dir])) {
                $MSO->config['template'] = $dir;
                $functions_file = $MSO->config['templates_dir'] . $dir . '/functions.php';
                if (file_exists($functions_file)) {
                    require_once $functions_file;
                }
            } else {
                @setcookie('theme_switch', '', time());
            }
            // сбросили куку
        } else {
            @setcookie('theme_switch', '', time());
        }
        // сбросили куку
    }
    return $args;
}
Пример #2
0
function _mso_logout()
{
    $ci =& get_instance();
    $ci->session->sess_destroy();
    $url = (isset($_SERVER['HTTP_REFERER']) and $_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
    // проверяем, чтобы url был текущего сайта
    $pos = strpos($url, getinfo('site_url'));
    if ($pos === false or $pos > 0) {
        $url = '';
    }
    // чужой, сбрасываем переход
    // сразу же удаляем куку комюзера
    $comuser = mso_get_cookie('maxsite_comuser', false);
    if ($comuser) {
        $name_cookies = 'maxsite_comuser';
        $expire = time() - 31500000;
        $value = '';
        //_pr($url);
        // mso_add_to_cookie('mso_edit_form_comuser', '', $expire);
        //mso_add_to_cookie($name_cookies, $value, $expire, getinfo('siteurl') . mso_current_url()); // в куку для всего сайта
        mso_add_to_cookie($name_cookies, $value, $expire, $url);
        // в куку для всего сайта
    } elseif ($url) {
        mso_redirect($url, true);
    } else {
        mso_redirect(getinfo('site_url'), true);
    }
}
Пример #3
0
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;
}