rewrite some code of typos admin panel

parent f1e8c220
......@@ -22,7 +22,7 @@ class Authorization extends CI_Controller {
$this->data['auth_url'] = $this->config->base_url()."authorization/check";
$this->view_name = 'authorization/index';
$this->load->model('user');
$this->load->model('userHelper');
}
function index() {
......@@ -61,8 +61,8 @@ class Authorization extends CI_Controller {
}
}
$user_info = $this->user->getUser($username);
$password = $this->user->hashPassword($password);
$user_info = $this->userHelper->getUser($username);
$password = $this->userHelper->hashPassword($password);
echo var_dump($user_info);
......
......@@ -7,24 +7,32 @@ class Sites extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('admins/mdl_sites');
$this->login_id = $this->mdl_session->get_data('login_id');
$this->usertype = $this->mdl_session->get_data('usertype');
$this->load->model('admins/site');
$this->load->helper('menu');
$this->login_id = $this->session->login_id;
$this->usertype = $this->session->usertype;
if ($this->usertype != 'admin') {
redirect('users/typos');
}
$this->header_name = "header";
$this->view_name = "admins/sites";
$this->menu_name = "menus/menu";
$this->footer_name = "footer";
}
/*Создаем шаблон*/
function index() {
$views['body']['url'] = "admins/sites";
$data['items'] = menu_admin($this->config->base_url());
$data['base_url'] = $this->config->base_url();
$views['menu']['url'] = "menu";
$views['menu']['data']['items'] = $this->mdl_menu->admin();
$this->load->view($this->header_name, $data);
$this->load->view($this->menu_name, $data);
$this->load->view($this->view_name, $data);
$this->load->view($this->footer_name, $data);
$this->mdl_views->view($views);
return true;
}
......@@ -35,77 +43,79 @@ class Sites extends CI_Controller {
/*Получить сайты*/
function get_list_sites() {
$data['page'] = $this->mdl_post->int('page');
$data['limit'] = $this->mdl_post->int('rows', 1);
$data['sord'] = $this->mdl_post->string('sord');
$data['sidx'] = $this->mdl_post->string('sidx');
$data['search'] = $this->mdl_post->string('_search');
$data['searchField'] = $this->mdl_post->string('searchField');
$data['searchOper'] = $this->mdl_post->string('searchOper');
$data['searchString'] = $this->mdl_post->string('searchString');
$data['page'] = $this->input->get('page');
$data['limit'] = $this->input->get('rows', 1);
$data['sord'] = $this->input->get('sord');
$data['sidx'] = $this->input->get('sidx');
$data['search'] = $this->input->get('_search');
$data['searchField'] = $this->input->get('searchField');
$data['searchOper'] = $this->input->get('searchOper');
$data['searchString'] = $this->input->get('searchString');
$data['login_id'] = $this->login_id;
echo json_encode($this->mdl_sites->get_list_sites($data));
echo json_encode($this->site->getSites($data));
}
/*Получить пользователей по сайту*/
function get_list_users() {
$data['id_site'] = $this->mdl_post->int("id");
$data['page'] = $this->mdl_post->int('page');
$data['limit'] = $this->mdl_post->int('rows', 1);
$data['sord'] = $this->mdl_post->string('sord');
$data['sidx'] = $this->mdl_post->string('sidx');
$data['search'] = $this->mdl_post->string('_search');
$data['searchField'] = $this->mdl_post->string('searchField');
$data['searchOper'] = $this->mdl_post->string('searchOper');
$data['searchString'] = $this->mdl_post->string('searchString');
$data['id_site'] = $this->input->get("id");
$data['page'] = $this->input->get('page');
$data['limit'] = $this->input->get('rows', 1);
$data['sord'] = $this->input->get('sord');
$data['sidx'] = $this->input->get('sidx');
$data['search'] = $this->input->get('_search');
$data['searchField'] = $this->input->get('searchField');
$data['searchOper'] = $this->input->get('searchOper');
$data['searchString'] = $this->input->get('searchString');
$data['login_id'] = $this->login_id;
echo json_encode($this->mdl_sites->get_list_users($data));
echo json_encode($this->site->getSiteUsers($data));
}
/*Управление сайтами*/
function panel_sites() {
$oper = $this->mdl_post->string('oper');
if ($oper == 'add') {
$data['site'] = $this->mdl_post->string('site');
$oper = $this->input->post('oper');
log_message('error', "oper = $oper");
if ($oper == 'add') { // Добавление пользователя
$data['site'] = $this->input->post('site');
if ($data['site'] == '') {
echo json_encode(array('message' => 'Название сайта некорректно'));
} else {
$return = $this->mdl_sites->add_site($data);
$return = $this->site->addSite($data);
if ($return) {
echo json_encode($return);
}
}
return true;
} else if ($oper == 'edit') {
$data['id_site'] = $this->mdl_post->int('id');
$data['site'] = $this->mdl_post->string('site');
} else if ($oper == 'edit') { // Редактирование пользователя
$data['id_site'] = $this->input->post('id');
$data['site'] = $this->input->post('site');
if ($data['site'] == '') {
echo json_encode(array('message' => 'Название сайта некорректно'));
} else {
$return = $this->mdl_sites->edit_site($data);
$return = $this->site->updateSite($data);
if ($return) {
echo json_encode($return);
}
}
return true;
} else if ($oper == 'del') {
$data['id_site'] = $this->mdl_post->int('id');
if (!$this->mdl_sites->delete_site($data)) {
} else if ($oper == 'del') { // Удаление пользователя
$data['id_site'] = $this->input->post('id');
if (!$this->site->deleteSite($data)) {
echo json_encode(array('message' => 'Сайт нельзя удалить. Количество пользователей не равно 0'));
}
return true;
}
}
}
function panel_users() {
$oper = $this->mdl_post->string('oper');
$oper = $this->input->post('oper');
if ($oper == 'del') {
$this->load->model('admins/mdl_users');
$data['id_user'] = $this->mdl_post->int('id');
$data['id_site'] = $this->mdl_post->int('id_site');
$this->mdl_users->delete_responsible($data);
$this->load->model('admins/user');
$data['id_user'] = $this->input->get('id');
$data['id_site'] = $this->input->get('id_site');
$this->user->deleteResponsible($data);
}
}
}
......
......@@ -7,23 +7,33 @@ class Users extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('admins/mdl_users');
$this->login_id = $this->mdl_session->get_data('login_id');
$this->usertype = $this->mdl_session->get_data('usertype');
$this->load->model('admins/user');
$this->load->helper('menu');
$this->login_id = $this->session->login_id;
$this->usertype = $this->session->usertype;
if ($this->usertype != 'admin') {
redirect('users/typos');
}
$this->header_name = "header";
$this->view_name = "admins/users";
$this->menu_name = "menus/menu";
$this->footer_name = "footer";
}
/*Создаем шаблон*/
function index() {
$views['body']['url'] = "admins/users";
$data['items'] = menu_admin($this->config->base_url());
$data['base_url'] = $this->config->base_url();
$views['menu']['url'] = "menu";
$views['menu']['data']['items'] = $this->mdl_menu->admin();
$this->load->view($this->header_name, $data);
$this->load->view($this->menu_name, $data);
$this->load->view($this->view_name, $data);
$this->load->view($this->footer_name, $data);
$this->mdl_views->view($views);
return true;
}
......@@ -34,141 +44,141 @@ class Users extends CI_Controller {
/*Получить пользователей*/
function get_list_users() {
$data['page'] = $this->mdl_post->int('page');
$data['limit'] = $this->mdl_post->int('rows', 1);
$data['sord'] = $this->mdl_post->string('sord');
$data['sidx'] = $this->mdl_post->string('sidx');
$data['search'] = $this->mdl_post->string('_search');
$data['searchField'] = $this->mdl_post->string('searchField');
$data['searchOper'] = $this->mdl_post->string('searchOper');
$data['searchString'] = $this->mdl_post->string('searchString');
$data['page'] = $this->input->get('page');
$data['limit'] = $this->input->get('rows', 1);
$data['sord'] = $this->input->get('sord');
$data['sidx'] = $this->input->get('sidx');
$data['search'] = $this->input->get('_search');
$data['searchField'] = $this->input->get('searchField');
$data['searchOper'] = $this->input->get('searchOper');
$data['searchString'] = $this->input->get('searchString');
echo json_encode($this->mdl_users->get_list_users($data));
echo json_encode($this->user->getUsers($data));
}
/*Получить сайты пользователя*/
function get_user_sites() {
$data['page'] = $this->mdl_post->int('page');
$data['limit'] = $this->mdl_post->int('rows', 1);
$data['sord'] = $this->mdl_post->string('sord');
$data['sidx'] = $this->mdl_post->string('sidx');
$data['search'] = $this->mdl_post->string('_search');
$data['searchField'] = $this->mdl_post->string('searchField');
$data['searchOper'] = $this->mdl_post->string('searchOper');
$data['searchString'] = $this->mdl_post->string('searchString');
$data['id_user'] = $this->mdl_post->int('id');
$data['page'] = $this->input->get('page');
$data['limit'] = $this->input->get('rows', 1);
$data['sord'] = $this->input->get('sord');
$data['sidx'] = $this->input->get('sidx');
$data['search'] = $this->input->get('_search');
$data['searchField'] = $this->input->get('searchField');
$data['searchOper'] = $this->input->get('searchOper');
$data['searchString'] = $this->input->get('searchString');
$data['id_user'] = $this->input->get('id');
echo json_encode($this->mdl_users->get_user_sites($data));
echo json_encode($this->user->getUserSites($data));
}
/*Управление пользователями*/
function panel_users() {
$oper = $this->mdl_post->string('oper');
$oper = $this->input->post('oper');
$data = array();
if ($oper == 'add') {
$data['login'] = $this->mdl_post->string('login');
$data['login'] = $this->input->post('login');
if (strlen($data['login']) < 3) {
echo json_encode(array('message' => 'Логин не корректен'));
return;
}
$data['type'] = $this->mdl_post->string('type');
$data['type'] = $this->input->post('type');
if ($data['type'] != 'user' && $data['type'] != 'admin') {
$data['type'] = 'user';
}
$data['email'] = $this->mdl_post->string('email');
$data['email'] = $this->input->post('email');
if (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
echo json_encode(array('message' => 'Email не корректен'));
return;
}
$data['firstname'] = $this->mdl_post->string('firstname');
$data['firstname'] = $this->input->post('firstname');
if (strlen($data['firstname']) < 2) {
echo json_encode(array('message' => 'Имя не корректна'));
echo json_encode(array('message' => 'Имя не корректно'));
return;
}
$data['middlename'] = $this->mdl_post->string('middlename');
$data['middlename'] = $this->input->post('middlename');
$data['lastname'] = $this->mdl_post->string('lastname');
$data['lastname'] = $this->input->post('lastname');
if (strlen($data['lastname']) < 2) {
echo json_encode(array('message' => 'Фамилия не корректна'));
return;
}
$data['password'] = $this->mdl_post->string('password');
$data['password'] = $this->input->post('password');
if (strlen($data['password']) < 4) {
echo json_encode(array('message' => 'Пароль не корректен'));
return;
}
$data['status'] = $this->mdl_post->int('status');
$data['status'] = $this->input->post('status');
if ($data['status'] != 1 && $data['status'] != 0) {
$data['status'] = 0;
}
$data['activity'] = $this->mdl_post->int('activity');
$data['activity'] = $this->input->post('activity');
if ($data['activity'] != 0 && $data['activity'] != 1) {
$data['activity'] = 'user';
}
$return = $this->mdl_users->add_user($data);
$return = $this->user->addUser($data);
if ($return) {
echo json_encode($return);
}
return;
} else if ($oper == 'del') {
$data['id_user'] = $this->mdl_post->int('id');
$this->mdl_users->delete_user($data);
$data['id_user'] = $this->input->post('id');
$this->user->deleteUser($data);
return;
} else if ($oper == 'edit') {
$data['id_user'] = $this->mdl_post->int('id');
$data['login'] = $this->mdl_post->string('login');
$data['id_user'] = $this->input->post('id');
$data['login'] = $this->input->post('login');
if (strlen($data['login']) < 3) {
echo json_encode(array('message' => 'Логин не корректен'));
return;
}
$data['type'] = $this->mdl_post->string('type');
$data['type'] = $this->input->post('type');
if ($data['type'] != 'user' && $data['type'] != 'admin') {
$data['type'] = 'user';
}
$data['email'] = $this->mdl_post->string('email');
$data['email'] = $this->input->post('email');
if (!preg_match("/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,4}$/", $data['email'])) {
echo json_encode(array('message' => 'Email не корректен'));
return;
}
$data['firstname'] = $this->mdl_post->string('firstname');
$data['firstname'] = $this->input->post('firstname');
if (strlen($data['firstname']) < 2) {
echo json_encode(array('message' => 'Имя не корректна'));
return;
}
$data['middlename'] = $this->mdl_post->string('middlename');
$data['middlename'] = $this->input->post('middlename');
$data['lastname'] = $this->mdl_post->string('lastname');
$data['lastname'] = $this->input->post('lastname');
if (strlen($data['lastname']) < 2) {
echo json_encode(array('message' => 'Фамилия не корректна'));
return;
}
$data['password'] = $this->mdl_post->string('password');
$data['password'] = $this->input->post('password');
if (strlen($data['password']) < 2) {
echo json_encode(array('message' => 'Пароль не корректен'));
return;
}
$data['status'] = $this->mdl_post->int('status');
$data['status'] = $this->input->post('status');
if ($data['status'] != 1 && $data['status'] != 0) {
$data['status'] = 0;
}
$data['activity'] = $this->mdl_post->int('activity');
$data['activity'] = $this->input->post('activity');
if ($data['activity'] != 0 && $data['activity'] != 1) {
$data['activity'] = 'user';
}
$return = $this->mdl_users->edit_user($data);
$return = $this->user->editUser($data);
if ($return) {
echo json_encode($return);
}
......@@ -181,8 +191,10 @@ class Users extends CI_Controller {
/*Получаем сайты для пользователя, кроме уже принадлежащих*/
//Возвращать должен html-список
function get_sites() {
$id_user = $this->mdl_post->int('id_user');
$sites = $this->mdl_users->get_sites($id_user);
$id_user = $this->input->get('id_user');
$sites = $this->user->getUserSites($id_user);
log_message("error", "result!!!");
$select = "<select>";
if (!$sites) {
......@@ -200,31 +212,31 @@ class Users extends CI_Controller {
/*Управление сайтами пользователя*/
function panel_users_site() {
$oper = $this->mdl_post->string('oper');
$oper = $this->input->post('oper');
if ($oper == 'add') {
$data['id_user'] = $this->mdl_post->int('id_user');
$data['id_site'] = $this->mdl_post->int('site');
$data['status'] = $this->mdl_post->int('status');
$data['id_user'] = $this->input->post('id_user');
$data['id_site'] = $this->input->post('site');
$data['status'] = $this->input->post('status');
if ($data['status'] != 1 && $data['status'] != 0) {
$data['status'] = 0;
}
$return = $this->mdl_users->add_responsible($data);
$return = $this->user->addResponsible($data);
if ($return) {
echo json_encode($return);
}
} else if ($oper == 'edit') {
$data['id_user'] = $this->mdl_post->int('id_user');
$data['id_site'] = $this->mdl_post->int('id');
$data['status'] = $this->mdl_post->int('status');
$data['status'] = $this->mdl_post->int('status');
$data['id_user'] = $this->input->post('id_user');
$data['id_site'] = $this->input->post('id');
$data['status'] = $this->input->post('status');
$data['status'] = $this->input->post('status');
if ($data['status'] != 1 && $data['status'] != 0) {
$data['status'] = 0;
}
$this->mdl_users->edit_responsible($data);
$this->user->editResponsible($data);
} else if ($oper == 'del') {
$data['id_user'] = $this->mdl_post->int('id_user');
$data['id_site'] = $this->mdl_post->int('id');
$this->mdl_users->delete_responsible($data);
$data['id_user'] = $this->input->post('id_user');
$data['id_site'] = $this->input->post('id');
$this->user->deleteResponsible($data);
}
}
......
......@@ -19,7 +19,13 @@
function searchString($field, $operator, $string) {
$s = " $field ";
error_log("SEARCH STRING($field, $operator, $string)");
log_message('debug', $field);
log_message('debug', $operator);
log_message('debug', $string);
if ( $field == "" ) {
return false;
}
switch ($operator) {
case 'eq':
......@@ -74,5 +80,7 @@ function searchString($field, $operator, $string) {
$s = "";
break;
}
log_message('debug', 'return ' . $s);
return $s;
}
\ No newline at end of file
......@@ -5,7 +5,7 @@
*
* @author george popoff <ambulance@etersoft.ru>
*/
class User extends CI_Model
class UserHelper extends CI_Model
{
/**
* Retrieve user by given username
......
<?php
/**
* Sites model
*
* @author <barbass@etersoft.ru>
* @author george popoff <ambulance@etersoft.ru>
*/
class Site extends CI_Model {
/*Получаем сайты*/
function getSites($data) {
return $this->filterResults('sites', $data);
}
/*Получаем пользователей по сайту*/
function getSiteUsers($data) {
return $this->filterResults('users', $data);
}
private function filterResults($table, $data) {
log_message('error', "data = " . print_r($data, true));
$this->load->helper("search");
$id_site = isset($data['id_site']) ? $data['id_site'] : 0;
$page = $data['page'];
$limit = $data['limit'];
$sord = $data['sord'];
$sidx = $data['sidx'];
$search = $data['search'];
$searchstring = "";
if ($search == "true") {
$searchField = $data['searchField'];
$searchOper = $data['searchOper'];
$searchString = $data['searchString'];
$search_string = searchString($searchField, $searchOper, $searchString);
if ($search_string != "") {
$searchstring .= " AND ".$search_string." ";
}
}
$data = array();
/*Данные для pagination jqGrid*/
$users_join_on = "responsible.id_user = users.id" . " AND " .
"responsible.id_site = '". $id_site."'";
if ( $table === 'users' ) {
$this->db->join('responsible', $users_join_on);
}
$count = $this->db->count_all_results($table);
if( $count > 0 ) {
$total_pages = ($limit > 0) ? ceil($count / $limit) : 1;
} else {
$total_pages = 0;
}
if ($page > $total_pages) {
$page = $total_pages;
}
$data['page'] = $page;
$data['total'] = $total_pages;
$data['records'] = $count;
$start = $limit * $page - $limit;
if ($start < 0) {
$start = 0;
}
$users_join_on = "r.id_user = u.id" . " AND " .
"r.id_site = '". $id_site."'";
$this->db->select('*');
/* Constructing query */
if ( $table == 'users' ) {
$this->db->from('users as u');
$this->db->join('responsible as r', $users_join_on);
} else if ( $table == 'sites' ) {
$this->db->from('sites as s');
}
if ( $search == "true" ) {
$this->db->where($search_string);
}
$this->db->limit($limit, $start);
$this->db->order_by($sidx . " " . $sord);
$results = $this->db->get();
if ( $table == 'sites') {
foreach( $results->result() as $id => $row ) {
$data['rows'][$id]['id'] = $row->id;
$data['rows'][$id]['cell'][] = $row->id;
$data['rows'][$id]['cell'][] = $row->site;
$data['rows'][$id]['cell'][] = $row->date;
}
} else if ( $table == 'users' ) {
foreach( $results->result() as $id => $row ) {
$data['rows'][$id]['id'] = $row->id;
$data['rows'][$id]['cell'][] = $row->id;
$data['rows'][$id]['cell'][] = $row->login;
$data['rows'][$id]['cell'][] = $row->type;
$data['rows'][$id]['cell'][] = $row->email;
$data['rows'][$id]['cell'][] = $row->firstname;
$data['rows'][$id]['cell'][] = $row->middlename;
$data['rows'][$id]['cell'][] = $row->lastname;
$data['rows'][$id]['cell'][] = $row->activity;
$data['rows'][$id]['cell'][] = $row->email;
$data['rows'][$id]['cell'][] = $row->date;
}
}
return $data;
}
/*Добавление сайта*/
function addSite($site) {
if (!$this->isSiteUnique($site['site'])) {
return array('message' => 'Сайт не уникален');
}
log_message("error", "here");
$data = array(
'site' => $site['site'],
'date' => date("Y-m-d H:i:s", time())
);
$this->db->insert('sites', $data);
}
/*Обновление названия*/
function updateSite($data) {
if (!$this->isSiteUnique($data['site'])) {
return array('message' => 'Сайт не уникален');
}
$this->db->set("site", $data['site']);
$this->db->where("id", $data['id_site']);
$this->db->update("sites");
}
/*Удаление сайта*/
function deleteSite($site) {
if ($this->countSiteResponsibles($site) == 0) {
$this->db->where("id", $site['id_site']);
$this->db->delete("sites");
$this->db->where("site_id", $site['id_site']);
$this->db->delete("messages");
return true;
} else {
return false;
}
}
/*Подсчет пользователей сайта*/
function countSiteResponsibles($data) {
$this->db->where("id_site", $data['id_site']);
$this->db->from("responsible");
return $this->db->count_all_results();
}
/*Проверяем сайт на уникальность*/
function isSiteUnique($site) {
$this->db->where("site", $site);
$this->db->from("sites");
$count = $this->db->count_all_results();
if ($count == 0) {
return true;
} else {
return false;
}
}
}
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*Работа с пользователями*/
class User extends CI_Model {
public function __construct() {
parent::__construct();
// For hashPassword function
$this->load->model("userHelper");
}
/*Получаем всех пользователей*/
function getUsers($data) {
return $this->filterResults('users', $data);
}
/*Получаем сайты пользователя*/
function getUserSites($data) {
return $this->filterResults('responsible', $data);
}
private function filterResults($table, $data) {
log_message('error', "data = " . print_r($data, true));
$this->load->helper("search");
$id_user = isset($data['id_user']) ? $data['id_user'] : 0;
$page = $data['page'];
$limit = $data['limit'];
$sord = isset($data['sord']) ? $data['sord'] : 0;
$sidx = isset($data['sidx']) ? $data['sidx'] : 0;
$search = $data['search'];
$searchstring = "";
$search_string = "";
if ($search == "true") {
$searchField = $data['searchField'];
$searchOper = $data['searchOper'];
$searchString = $data['searchString'];
$search_string = searchString($searchField, $searchOper, $searchString);
if ($search_string != "") {
$searchstring .= " AND " . $search_string . " ";
}
}
$data = array();
/*Данные для pagination jqGrid*/
if ( $table == 'responsible' ) {
$query_count = "SELECT COUNT(DISTINCT id) AS count
FROM responsible AS r
WHERE id_user = '$id_user'";
} else if ( $table == 'users' ) {
$query_count = "SELECT COUNT(id) AS count
FROM users AS u";
}
$count = $this->db->query($query_count)->num_rows();
if( $count > 0 ) {
$total_pages = ($limit > 0) ? ceil($count / $limit) : 1;
} else {
$total_pages = 0;
}
if ($page > $total_pages) {
$page = $total_pages;
}
$data['page'] = $page;
$data['total'] = $total_pages;
$data['records'] = $count;
$join_on = "s.id = r.id_site" .
" WHERE r.id_user = '$id_user'";
/**/
$start = $limit * $page - $limit;
if ($start < 0) {
$start = 0;
}
$this->db->select('*');
if ( $table == 'users' ) {
$this->db->from('users as u');
} else {
$this->db->from('responsible as r');
$this->db->join('sites as s', $join_on);
}
if ( $search == "true" ) {
$this->db->where($search_string);
}
if ( $limit ) {
$this->db->limit($limit, $start);
}
if ( $sidx ) {
$this->db->order_by($sidx . " " . $sord);
}
$results = $this->db->get();
if ( $table == 'users') {
foreach( $results->result() as $id => $row ) {
$data['rows'][$id]['id'] = $row->id;
$data['rows'][$id]['cell'][] = $row->id;
$data['rows'][$id]['cell'][] = $row->login;
$data['rows'][$id]['cell'][] = $row->type;
$data['rows'][$id]['cell'][] = $row->email;
$data['rows'][$id]['cell'][] = '******';
$data['rows'][$id]['cell'][] = $row->firstname;
$data['rows'][$id]['cell'][] = $row->middlename;
$data['rows'][$id]['cell'][] = $row->lastname;
$data['rows'][$id]['cell'][] = $row->activity;
$data['rows'][$id]['cell'][] = $row->date;
}
} else if ( $table == 'responsible' ) {
foreach( $results->result() as $id => $row ) {
$data['rows'][$id]['id'] = $row->id;
$data['rows'][$id]['cell'][] = $row->id;
$data['rows'][$id]['cell'][] = $row->site;
$data['rows'][$id]['cell'][] = $row->status;
$data['rows'][$id]['cell'][] = $row->date;
}
}
return $data;
}
/*Добавляем пользователя*/
function addUser($data) {
if (!$this->checkEmail($data['email'])) {
return array('message' => 'Email не уникален');
}
if (!$this->checkLogin($data['login'])) {
return array('message' => 'Логин не уникален');
}
$insertData = [
'login' => $data['login'],
'type' => $data['type'],
'email' => $data['email'],
'password' => $this->userHelper->hashPassword($data['password']),
'firstname' => $data['firstname'],
'middlename' => $data['middlename'],
'lastname' => $data['lastname'],
'activity' => $data['activity'],
'date' => date('Y-m-d H:i:s', time()),
];
$this->db->insert('users', $insertData);
}
function editUser($data) {
if (!$this->checkEmail($data['email'], $data['id_user'])) {
return array('message' => 'Email не уникален');
}
if (!$this->checkLogin($data['login'], $data['id_user'])) {
return array('message' => 'Логин не уникален');
}
if ($data['password'] != '******') {
$data['password'] = $this->userHelper->hashPassword($this->input->post('password'));
}
$insertData = [
'id' => $data['id_user'],
'login' => $data['login'],
'type' => $data['type'],
'email' => $data['email'],
'password' => $this->userHelper->hashPassword($data['password']),
'firstname' => $data['firstname'],
'middlename' => $data['middlename'],
'lastname' => $data['lastname'],
'activity' => $data['activity'],
'date' => date('Y-m-d H:i:s', time()),
];
$this->db->where('id', $data['id_user']);
$this->db->update('users', $insertData);
}
/*Удаляем пользователя*/
function deleteUser($data) {
$this->db->where('id', $data['id_user']);
$this->db->delete('users');
$this->db->where('id', $data['id_user']);
$this->db->delete('responsible');
}
/*Снимаем ответсвенного*/
function deleteResponsible($data) {
$this->db->where('id_site', $data['id_site']);
$this->db->where('id_user', $data['id_user']);
$this->db->delete('responsible');
}
/*Обновляем статус*/
function editResponsible($data) {
$this->db->where('id_site', $data['id_site']);
$this->db->where('id_user', $data['id_user']);
$this->db->update('responsible', array( 'status' => $data['status']));
}
/*Проверяем логин на уникальность*/
function checkLogin($login, $id_user = '') {
if ($this->config->item('typos_admin_login')) {
if ($login == $this->config->item('typos_admin_login')) {
return false;
}
}
$this->db->where('login', $login);
if ($id_user != '') {
$this->db->where('id !=', $id_user);
}
$this->db->from('users');
$count = $this->db->count_all_results();
if ($count == 0) {
return true;
} else {
return false;
}
}
/*Проверяем email на уникальность*/
function checkEmail($email, $id_user = '') {
if ($this->config->item('typos_admin_email')) {
if ($email == $this->config->item('typos_admin_email')) {
return false;
}
}
$this->db->where('email', $email);
if ($id_user != '') {
$this->db->where('id !=', $id_user);
}
$this->db->from('users');
$count = $this->db->count_all_results();
if ($count == 0) {
return true;
} else {
return false;
}
}
/*Получаем сайты для пользователя, кроме уже принадлежащих*/
function getSites($id_user) {
return $this->db->query("SELECT id, site
FROM sites
WHERE id NOT IN (SELECT site_id
FROM responsible
WHERE user_id = '$id_user') ")->result();
}
/*Добавляем сайт в ответственность*/
function addResponsible($data) {
if (!$this->checkUserId($data['id_user'])) {
return array('message' => "Пользователь не существует");
}
if (!$this->checkResponsible($data)) {
return array('message' => "Этот сайт уже назначен");
}
if (!$this->checkSiteId($data['id_site'])) {
return array('message' => "Сайт не существует");
}
$data2[0] = 'NULL';
$data2[1] = $data['id_site'];
$data2[2] = $data['id_user'];
$data2[3] = $data['status'];
$data2[4] = date('Y-m-d H:i:s', time());
$this->db->insert('responsible', $data2);
}
/*Проверяем - есть ли у пользователя такой сайт*/
function checkResponsible($data) {
$this->db->where("user_id", $data['id_user']);
$this->db->where("site_id", $data['id_site']);
$this->db->from("responsible");
$count = $this->db->count_all_results();
if ($count == 0) {
return true;
} else {
return false;
}
}
/*Проверяем - есть ли пользователь по id*/
function checkUserId($id_user) {
$this->db->where("id", $id_user);
$this->db->from("users");
$count = $this->db->count_all_results();
if ($count == 0) {
return true;
} else {
return false;
}
}
function checkSiteId($id_site) {
$this->db->where("id", $id_site);
$this->db->from("sites");
$count = $this->db->count_all_results();
if ($count > 0) {
return true;
} else {
return false;
}
}
}
/**/
\ No newline at end of file
<div class="body">
<!-- -->
<link rel="stylesheet" type="text/css" media="screen" href="<?=$base_url?>javascript/jquery_plugins/jqGrid/4.4.0/css/ui.jqgrid.css" />
<script type="text/javascript" src="<?=$base_url?>javascript/jquery_plugins/jqGrid/4.4.0/js/i18n/grid.locale-ru.js"></script>
<script type="text/javascript" src="<?=$base_url?>javascript/jquery_plugins/jqGrid/4.4.0/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="<?=$base_url?>javascript/jquery_plugins/jqGrid/4.4.0/src/grid.subgrid.js"></script>
<!-- -->
<table id="table_users"></table>
<div id="additional_panel"></div>
<script type="text/javascript">
jQuery("#table_users").jqGrid({ // Привязка плагина к таблице
url: TYPOS.base_url+'admins/users/get_list_users', // Скрипт - обработчик ваших запросов
editurl: TYPOS.base_url+'admins/users/panel_users',
datatype: "json", // Формат скрипта-обработчика
colNames: ['Номер', 'Логин', 'Тип', 'Email', 'Пароль', 'Имя', 'Отчество', 'Фамилия', 'Статус аккаунта','Дата регистрации'],
colModel: [
{name:"id", index:"u.id", width:80, searchtype:"integer", align:'center', sortable:true},
{name:"login", index:"u.login", width:80, searchtype:"string", align:'center', sortable:true, editable:true, editrules:{required:true}},
{name:"type", index:"u.type", width:80, searchtype:"string", align:'center', sortable:true, editable:true, edittype:'select', editoptions:{value:{'user':'Пользователь', 'admin':'Администратор'}}, editrules:{required:true}},
{name:"email", index:"u.email",width:80, sortable:true, searchtype:"string", align:'center', editable:true, editrules:{email:true, required:true}},
{name:"password", index:"u.password", width:80, sortable:false, searchtype:"string", align:'center', editable:true, edittype:'password', editrules:{required:true}},
{name:"firstname", index:"u.firstname", width:80, sortable:true, searchtype:"string", align:'center', editable:true, editrules:{required:true}},
{name:"middlename", index:"u.middlename", width:80, sortable:true, searchtype:"string", align:'center', editable:true, editrules:{required:true}},
{name:"lastname", index:"u.lastname", width:80, sortable:true, searchtype:"string", align:'center', editable:true, editrules:{required:true}},
{name:"activity", index:"u.activity", width:80, sortable:true, searchtype:"integer", align:'center', editable:true, edittype:"checkbox", editoptions: {value:"1:0", defaultValue:'0'}, formatter:'checkbox'},
{name:"date", index:"u.date", width:120, sortable:true, searchtype:"string", align:'center'},
],
subGrid : true,
subGridRowExpanded: function(subgrid_id, row_id) {
var subgrid_table_id, pager_id;
subgrid_table_id = subgrid_id+"_t";
pager_id = "p_"+subgrid_table_id;
$("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
jQuery("#"+subgrid_table_id).jqGrid({
url: TYPOS.base_url+'admins/users/get_user_sites?id='+row_id,
editurl: TYPOS.base_url+'admins/users/panel_users_site?id='+row_id+'&id_user='+row_id,
datatype: "json",
colNames:['Номер', 'Сайт', 'Статус', 'Дата установки'],
colModel:[
{name:"id", index:'r.id_site', width:10, searchtype:"integer", align:'center'},
{name:"site", index:'s.site', align:'center', width:120, searchtype:"string", edittype:'select', editable:true, editoptions:{dataUrl:TYPOS.base_url+'admins/users/get_sites?id_user='+row_id}},
{name:"status", index:'r.status', align:'center', width:20, searchtype:"string", editable:true, edittype:"checkbox", editoptions: {value:"1:0", defaultValue:'1'}, formatter:'checkbox'},
{name:"date", index:"r.date", width:80, sortable:true, searchtype:"string", align:'center'},
],
rowNum:20,
pager: pager_id,
sortname: 's.site',
sortorder: 'desc',
height: '100%',
width: 1000
});
jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:true,add:true,del:true},
{afterSubmit: function(response) {
var json = response.responseText;
try {
var text = window.JSON.parse(json);
if (typeof(text) != 'undefined') {
return [false, text.message];
} else {
return [true, ''];
}
} catch(e) {
return [true, ''];
}
},
afterShowForm: function(formid) {
$(formid).find('#tr_site').css('display','none');
},
},
{afterSubmit: function(response) {
var json = response.responseText;
try {
var text = window.JSON.parse(json);
if (typeof(text) != 'undefined') {
return [false, text.message];
} else {
return [true, ''];
}
} catch(e) {
return [true, ''];
}
},
afterShowForm: function(formid) {
$(formid).find('#tr_site').css('display','table-row');
},
},
{afterSubmit: function(response) {
var json = response.responseText;
try {
var text = window.JSON.parse(json);
if (typeof(text) != 'undefined') {
return [false, text.message];
} else {
return [true, ''];
}
} catch(e) {
return [true, ''];
}
}}
)
},
caption: "Пользователи",
rowNum:10,
rowList:[10,20,30],
width:1200,
height: '100%',
pager: '#additional_panel', // Привязка к таблице тулбара
sortname: 'u.type',
viewrecords: true,
sortorder: "desc"
});
jQuery("#table_users").jqGrid('navGrid','#additional_panel', // Управление тулбаром таблицы
{edit:true,add:true,del:true}, // Отключаем от тулбара редактирование, добавление и удаление записей. На тулбаре останутся только две кнопки: "Поиск" и "Обновить"
{afterSubmit: function(response) {
var json = response.responseText;
try {
var text = window.JSON.parse(json);
if (typeof(text) != 'undefined') {
return [false, text.message];
} else {
return [true, ''];
}
} catch(e) {
return [true, ''];
}
}
}, // Опции окон редактирования
{afterSubmit: function(response) {
var json = response.responseText;
try {
var text = window.JSON.parse(json);
if (typeof(text) != 'undefined') {
return [false, text.message];
} else {
return [true, ''];
}
} catch(e) {
return [true, ''];
}
}
},
{afterSubmit: function(response) {
var json = response.responseText;
try {
var text = window.JSON.parse(json);
if (typeof(text) != 'undefined') {
return [false, text.message];
} else {
return [true, ''];
}
} catch(e) {
return [true, ''];
}
}
}
);
</script>
</div>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment