?> <h1><?php echo t('Шаблоны для сайта'); ?> </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">
?> </h1> <p><a href="<?php echo $MSO->config['site_admin_url'] . 'comusers'; ?> "><?php echo t('Вернуться к списку комментаторов'); ?> </a></p> <?php $CI =& get_instance(); if ($post = mso_check_post(array('f_session_id', 'f_submit'))) { mso_checkreferer(); // получаем номер комюзера id из fo_edit_submit[] $f_id = mso_array_get_key($post['f_submit']); // подготавливаем данные для xmlrpc $data = array('user_login' => $MSO->data['session']['users_login'], 'password' => $MSO->data['session']['users_password'], 'comusers_id' => $f_id, 'comusers_nik' => $post['f_nik'], 'comusers_email' => $post['f_email'], 'comusers_icq' => $post['f_icq'], 'comusers_url' => $post['f_url'], 'comusers_msn' => $post['f_msn'], 'comusers_jaber' => $post['f_jaber'], 'comusers_skype' => $post['f_skype'], 'comusers_avatar_url' => $post['f_avatar_url'], 'comusers_description' => $post['f_description'], 'comusers_date_birth_y' => $post['f_date_birth_y'], 'comusers_date_birth_m' => $post['f_date_birth_m'], 'comusers_date_birth_d' => $post['f_date_birth_d'], 'comusers_notify' => $post['f_notify'], 'comusers_language' => $post['f_language'], 'comusers_activate_key' => $post['f_activate_key'], 'comusers_activate_string' => $post['f_activate_string'], 'comusers_admin_note' => $post['f_admin_note']); if ($post['f_new_password'] and $post['f_new_password'] == $post['f_new_confirm_password']) { $data['comusers_new_password'] = $post['f_new_password']; } // pr($data); require_once getinfo('common_dir') . 'functions-edit.php'; // функции редактирования $result = mso_edit_comuser($data); //pr($result); if (isset($result['result']) and $result['result']) { echo '<div class="update">' . t('Обновлено!') . '</div>'; // . $result['description']; mso_flush_cache(); // сбросим кэш
function mso_comuser_lost($args = array()) { global $MSO; if (!isset($args['css_ok'])) { $args['css_ok'] = 'comment-ok'; } if (!isset($args['css_error'])) { $args['css_error'] = 'comment-error'; } // если нет опции password_recovery, значит восстанавливаем с учетом номера комюзера во втором сегмента адреса // если опция есть, значит восстанавливаем без учета id комюзера if (!isset($args['password_recovery'])) { $password_recovery = false; } else { $password_recovery = true; } # id комюзера, который в сессии - какой комюзер # если комюзер залогинен, то будет $id_session # если нет, то залогиненности нет 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_email'))) { # защита рефера mso_checkreferer(); # защита сессии - если не нужно закомментировать строчку! if ($MSO->data['session']['session_id'] != $post['f_session_id']) { mso_redirect(); } if (!$password_recovery) { // получаем номер юзера 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_session and $id != $id_session) { return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный номер пользователя2') . '</div>'; } } $comusers_email = trim($post['f_comusers_email']); if (!$comusers_email) { return '<div class="' . $args['css_error'] . '">' . tf('Нужно указать email') . '</div>'; } if (!mso_valid_email($comusers_email)) { return '<div class="' . $args['css_error'] . '">' . tf('Ошибочный email') . '</div>'; } $CI =& get_instance(); // проверим есть ли вообще такой юзер $CI->db->select('comusers_id'); if (!$password_recovery) { $CI->db->where('comusers_id', $id); } // если явно указан id, то ищем по нему $CI->db->where('comusers_email', $comusers_email); $query = $CI->db->get('comusers'); if ($query->num_rows() == 0) { // нет такого комментатора return '<div class="' . $args['css_error'] . '">' . tf('Неверный email или номер пользователя') . '!</div>'; } if ($password_recovery) { // получим id этого комюзера $res = $query->result_array(); $id = $res[0]['comusers_id']; } $comusers_new_password = trim($post['f_comusers_password']); $comusers_activate_key = trim($post['f_comusers_activate_key']); if ($comusers_email and !$comusers_activate_key and !$comusers_new_password) { // проверим есть ли активация $CI->db->select('comusers_id, comusers_activate_key'); $CI->db->where('comusers_id', $id); $CI->db->where('comusers_activate_string=comusers_activate_key', '', false); $CI->db->where('comusers_email', $comusers_email); $CI->db->limit(1); $query = $CI->db->get('comusers'); if ($query->num_rows() > 0) { $comuser = $query->result_array(); // данные комюзера mso_email_message_new_comuser($id, array('comusers_email' => $comusers_email, 'comusers_activate_key' => $comuser[0]['comusers_activate_key'])); return '<div class="' . $args['css_ok'] . '">' . tf('Код активации отправлен на ваш email') . '!</div>'; } else { return '<div class="' . $args['css_error'] . '">' . tf('Данный email не зарегистрирован или не активирован') . '</div>'; } } elseif ($comusers_email and $comusers_new_password and !$comusers_activate_key) { return '<div class="' . $args['css_error'] . '">' . tf('Для установки нового пароля нужно заполнить все поля!') . '</div>'; } elseif ($comusers_email and !$comusers_new_password and $comusers_activate_key) { // указан email и код активации, но не указан новый пароль return '<div class="' . $args['css_error'] . '">' . tf('Для установки нового пароля нужно заполнить все поля!') . '</div>'; } // если указано поле активации и новый пароль, то сверяем код активации с базой + email + id и если все верно, // то обновляем пароль // если же поле активации не указано, то высылаем его на указанный email $CI->db->select('comusers_id'); $CI->db->where('comusers_id', $id); $CI->db->where('comusers_activate_key', $comusers_activate_key); $CI->db->where('comusers_activate_string', $comusers_activate_key); $CI->db->where('comusers_email', $comusers_email); $CI->db->limit(1); $query = $CI->db->get('comusers'); if ($query->num_rows() > 0) { $CI->db->where('comusers_id', $id); $CI->db->where('comusers_email', $comusers_email); $res = $CI->db->update('comusers', array('comusers_password' => mso_md5($comusers_new_password))) ? '1' : '0'; $CI->db->cache_delete_all(); if ($res) { // сразу логиним и редиректим на страницу комюзера $data = array('email' => $comusers_email, 'password' => $comusers_new_password, 'redirect' => getinfo('siteurl') . 'users/' . $id, 'allow_create_new_comuser' => false); mso_comuser_auth($data); exit; // return '<div class="' . $args['css_ok']. '">'. t('Новый пароль установлен!'). '</div>'; } else { return '<div class="' . $args['css_error'] . '">' . tf('Ошибка БД при смене пароля...') . '</div>'; } } else { return '<div class="' . $args['css_error'] . '">' . tf('Данные указаны неверно!') . '</div>'; } } }