Beispiel #1
0
function mso_comuser_edit($args = array())
{
    global $MSO;
    if (!isset($args['css_ok'])) {
        $args['css_ok'] = 'comment-ok';
    }
    if (!isset($args['css_error'])) {
        $args['css_error'] = 'comment-error';
    }
    # id комюзера, который в сессии
    if (isset($MSO->data['session']['comuser']) and $MSO->data['session']['comuser']) {
        $id_session = $MSO->data['session']['comuser']['comusers_id'];
    } else {
        $id_session = false;
    }
    if ($post = mso_check_post(array('f_session_id', 'f_submit', 'f_comusers_activate_key'))) {
        # защита рефера
        mso_checkreferer();
        # защита сессии - если не нужно закомментировать строчку!
        if ($MSO->data['session']['session_id'] != $post['f_session_id']) {
            mso_redirect();
        }
        // получаем номер юзера id из f_submit[]
        $id = (int) mso_array_get_key($post['f_submit']);
        if (!$id) {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '</div>';
        }
        # проверяем id в сессии с сабмитом
        // if ($id != $id_session)
        //	return '<div class="' . $args['css_error']. '">'. t('Ошибочный номер пользователя'). '</div>';
        $f_comusers_activate_key = trim($post['f_comusers_activate_key']);
        if (!$f_comusers_activate_key) {
            return '<div class="' . $args['css_error'] . '">' . tf('Неверный (пустой) ключ') . '</div>';
        }
        // нужно проверить если у указанного комюзера не равные ключи
        // если они равны, то ничего не делаем
        $CI =& get_instance();
        $CI->db->select('comusers_activate_string, comusers_activate_key');
        $CI->db->from('comusers');
        $CI->db->where('comusers_id', $id);
        $CI->db->limit(1);
        $query = $CI->db->get();
        if ($query->num_rows() > 0) {
            $comuser = $query->result_array();
            // данные комюзера
            if ($comuser[0]['comusers_activate_string'] == $comuser[0]['comusers_activate_key']) {
                // уже равны, активация не требуется
                return '<div class="' . $args['css_ok'] . '">' . tf('Активация уже выполнена') . '</div>';
            } else {
                // ключи в базе не равны
                // сверяем с переданным ключом из формы
                if ($f_comusers_activate_key == $comuser[0]['comusers_activate_key']) {
                    // верный ключ - обновляем в базе
                    $CI->db->where('comusers_id', $id);
                    $res = $CI->db->update('comusers', array('comusers_activate_string' => $f_comusers_activate_key)) ? '1' : '0';
                    $CI->db->cache_delete_all();
                    if ($res) {
                        return '<div class="' . $args['css_ok'] . '">' . tf('Активация выполнена!') . '</div>';
                    } else {
                        return '<div class="' . $args['css_error'] . '">' . tf('Ошибка БД при добавления ключа активации') . '</div>';
                    }
                } else {
                    return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный ключ активации') . '</div>';
                }
            }
        } else {
            // вообще нет такого комюзера
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '</div>';
        }
    } elseif ($post = mso_check_post(array('flogin_session_id', 'flogin_submit', 'flogin_user', 'flogin_password', 'flogin_redirect'))) {
        // логинимся через стандартную _mso_login()
        _mso_login();
        return;
    } elseif ($post = mso_check_post(array('f_session_id', 'f_submit', 'f_comusers_email', 'f_comusers_password', 'f_comusers_nik', 'f_comusers_url', 'f_comusers_icq', 'f_comusers_msn', 'f_comusers_jaber', 'f_comusers_date_birth', 'f_comusers_description', 'f_comusers_avatar_url'))) {
        if (!is_login_comuser()) {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочные данные пользователя') . '</div>';
        }
        # защита рефера
        mso_checkreferer();
        # защита сессии - если не нужно закомментировать строчку!
        if ($MSO->data['session']['session_id'] != $post['f_session_id']) {
            mso_redirect();
        }
        // получаем номер юзера id из f_submit[]
        $id = (int) mso_array_get_key($post['f_submit']);
        if (!$id) {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '</div>';
        }
        # проверяем id в сессии с сабмитом
        if ($id != $id_session) {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя') . '</div>';
        }
        $f_comusers_email = trim($post['f_comusers_email']);
        $f_comusers_password = trim($post['f_comusers_password']);
        if (!$f_comusers_email or !$f_comusers_password) {
            return '<div class="' . $args['css_error'] . '">' . tf('Необходимо указать email и пароль') . '</div>';
        }
        // проверим есть ли такой комюзер
        $CI =& get_instance();
        $CI->db->select('*');
        $CI->db->from('comusers');
        # CodeIgniter экранирует where, даже когда только условия в полях
        $CI->db->where('comusers_activate_string=comusers_activate_key', '', false);
        // активация должна уже быть
        $CI->db->where(array('comusers_id' => $id, 'comusers_email' => $f_comusers_email, 'comusers_password' => $f_comusers_password));
        $CI->db->limit(1);
        $query = $CI->db->get();
        if ($query->num_rows() > 0) {
            // все ок - логин пароль верные
            $comuser = $query->result_array();
            // данные комюзера
            $f_comusers_avatar_url = mso_strip($post['f_comusers_avatar_url'], false, array('\\', '|', '?', '%', '*', '`'));
            $allowed_ext = array('gif', 'jpg', 'jpeg', 'png');
            // разрешенные типы
            $ext = strtolower(str_replace('.', '', strrchr($f_comusers_avatar_url, '.')));
            // расширение файла
            if (!in_array($ext, $allowed_ext)) {
                $f_comusers_avatar_url = '';
            }
            // запрещенный тип файла
            if (!isset($post['f_comusers_notify'])) {
                $post['f_comusers_notify'] = '0';
            }
            if (!isset($post['f_comusers_skype'])) {
                $post['f_comusers_skype'] = '';
            }
            // скайп
            $post = mso_clean_post(array('f_comusers_nik' => 'base', 'f_comusers_url' => 'base', 'f_comusers_icq' => 'base', 'f_comusers_msn' => 'base', 'f_comusers_jaber' => 'base', 'f_comusers_skype' => 'base', 'f_comusers_date_birth' => 'base', 'f_comusers_description' => 'base', 'f_comusers_notify' => 'int'), $post);
            $upd_date = array('comusers_nik' => strip_tags($post['f_comusers_nik']), 'comusers_url' => strip_tags($post['f_comusers_url']), 'comusers_icq' => strip_tags($post['f_comusers_icq']), 'comusers_msn' => strip_tags($post['f_comusers_msn']), 'comusers_jaber' => strip_tags($post['f_comusers_jaber']), 'comusers_skype' => strip_tags($post['f_comusers_skype']), 'comusers_date_birth' => strip_tags($post['f_comusers_date_birth']), 'comusers_description' => strip_tags($post['f_comusers_description']), 'comusers_avatar_url' => $f_comusers_avatar_url, 'comusers_notify' => $post['f_comusers_notify']);
            # pr($upd_date );
            $CI->db->where('comusers_id', $id);
            $res = $CI->db->update('comusers', $upd_date) ? '1' : '0';
            // если переданы метаполя, то обновляем и их
            if (isset($post['f_comusers_meta']) and $post['f_comusers_meta']) {
                //pr($post);
                foreach ($post['f_comusers_meta'] as $key => $val) {
                    // вначале грохаем если есть такой ключ
                    $CI->db->where('meta_table', 'comusers');
                    $CI->db->where('meta_id_obj', $id);
                    $CI->db->where('meta_key', $key);
                    $CI->db->delete('meta');
                    // теперь добавляем как новый
                    $ins_data = array('meta_table' => 'comusers', 'meta_id_obj' => $id, 'meta_key' => $key, 'meta_value' => $val);
                    $CI->db->insert('meta', $ins_data);
                }
            }
            $CI->db->cache_delete_all();
            // mso_flush_cache(); // сбросим кэш
            if ($res) {
                return '<div class="' . $args['css_ok'] . '">' . tf('Обновление выполнено!') . '</div>';
            } else {
                return '<div class="' . $args['css_error'] . '">' . tf('Ошибка БД при обновлении') . '</div>';
            }
        } else {
            return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный email и пароль') . '</div>';
        }
    }
    // обновление формы
}
Beispiel #2
0
<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
/**
 * MaxSite CMS
 * (c) http://max-3000.com/
 * Добавлена авторизация Юзера по емаилу (Ramir)
 */
# функция пернесена в common.php
_mso_login();