|
<?php defined('SYSPATH') or die('No direct script access.');
|
|
/*
|
|
* This file is part of open source system FreeNetIS
|
|
* and it is released under GPLv3 licence.
|
|
*
|
|
* More info about licence can be found:
|
|
* http://www.gnu.org/licenses/gpl-3.0.html
|
|
*
|
|
* More info about project can be found:
|
|
* http://www.freenetis.org/
|
|
*
|
|
*/
|
|
|
|
/**
|
|
*
|
|
* @package Controller
|
|
*/
|
|
class Device_admins_Controller extends Controller
|
|
{
|
|
/**
|
|
* Edits device admin
|
|
*
|
|
* @param integer $device_id
|
|
*/
|
|
public function edit($device_id = NULL)
|
|
{
|
|
if (!$this->acl_check_new('Devices_Controller', 'admin'))
|
|
Controller::error(ACCESS);
|
|
|
|
if (!isset($device_id) || !is_numeric($device_id))
|
|
Controller::warning(PARAMETER);
|
|
|
|
$device = new Device_Model($device_id);
|
|
|
|
if (!$device->id)
|
|
Controller::error(RECORD);
|
|
|
|
$model_aro = new Aro_Model();
|
|
|
|
//po zmacknuti tlacitka X se nastavi filtr na NULL
|
|
if ($this->input->post('search_system_clear'))
|
|
$search_system_input = NULL;
|
|
else
|
|
$search_system_input = $this->input->post('search_system_input');
|
|
|
|
//po zmacknuti tlacitka X se nastavi filtr na NULL
|
|
if ($this->input->post('search_group_clear'))
|
|
$search_group_input = NULL;
|
|
else
|
|
$search_group_input = $this->input->post('search_group_input');
|
|
|
|
//pridani uzivatele do skupiny
|
|
if ($this->input->post('add') != NULL && $this->input->post('system_users') != '')
|
|
{
|
|
foreach ($this->input->post("system_users") as $user_id)
|
|
{
|
|
$device_admin = ORM::factory('device_admin')
|
|
->where(array
|
|
(
|
|
'device_id' => $device_id,
|
|
'user_id' => $user_id
|
|
))->find();
|
|
|
|
if ($device_admin->id == 0)
|
|
{
|
|
$device_admin = ORM::factory('device_admin');
|
|
$device_admin->device_id = $device_id;
|
|
$device_admin->user_id = $user_id;
|
|
$device_admin->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
//odebrani uzivatele ze skupiny
|
|
if ($this->input->post('remove') != NULL &&
|
|
$this->input->post('group_users') != '')
|
|
{
|
|
foreach ($this->input->post("group_users") as $user_id)
|
|
{
|
|
$device_admin = ORM::factory('device_admin')
|
|
->where(array
|
|
(
|
|
'device_id' => $device_id,
|
|
'user_id' => $user_id
|
|
))->find();
|
|
|
|
if ($device_admin->id != 0)
|
|
{
|
|
$device_admin->delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
//nacteni dat z databaze a filtrem nebo bez
|
|
if ($search_system_input != NULL)
|
|
{
|
|
$users1 = $model_aro->get_all_not_in_from_device_admins_by_aro_group_id(
|
|
$device_id, $search_system_input
|
|
);
|
|
}
|
|
else
|
|
{
|
|
$users1 = $model_aro->get_all_not_in_from_device_admins_by_aro_group_id(
|
|
$device_id
|
|
);
|
|
}
|
|
|
|
//nacteni dat z databaze a filtrem nebo bez
|
|
if ($search_group_input != NULL)
|
|
{
|
|
$users2 = $model_aro->get_all_from_device_admins_by_aro_group_id(
|
|
$device_id, $search_group_input
|
|
);
|
|
}
|
|
else
|
|
{
|
|
$users2 = $model_aro->get_all_from_device_admins_by_aro_group_id(
|
|
$device_id
|
|
);
|
|
}
|
|
|
|
//generovani system dropboxu
|
|
if ($users1->count() == 0)
|
|
{
|
|
$system_users_select = form::dropdown(array
|
|
(
|
|
'name' => 'system_users[]',
|
|
'size' => 20,
|
|
'style' => 'width:250px'
|
|
));
|
|
}
|
|
else
|
|
{
|
|
foreach ($users1 as $user1)
|
|
{
|
|
$system_users[$user1->id] = $user1->name;
|
|
}
|
|
$system_users_select = form::dropdown(array
|
|
(
|
|
'name' => 'system_users[]',
|
|
'size' => 20,
|
|
'style' => 'width:250px',
|
|
'multiple' => 'multiple'
|
|
), $system_users);
|
|
}
|
|
|
|
//generovani system searchboxu
|
|
$system_users_search_box =
|
|
'<table><tr><td>' .
|
|
form::input('search_system_input', $search_system_input, 'style="width:175px;"') .
|
|
'</td><td>' .
|
|
form::submit('search_system_submit', url_lang::lang('texts.Search'), 'style="width:50px;"') .
|
|
'</td><td>' .
|
|
(($search_system_input == NULL ) ? '' : form::submit('search_system_clear', 'X', 'style="width:18px;"')) .
|
|
'</td></tr></table>';
|
|
|
|
//generovani group dropboxu
|
|
if ($users2->count() == 0)
|
|
{
|
|
$group_users_select = form::dropdown(array
|
|
(
|
|
'name' => 'group_users[]',
|
|
'size' => 20,
|
|
'style' => 'width:250px'
|
|
));
|
|
}
|
|
else
|
|
{
|
|
foreach ($users2 as $user2)
|
|
{
|
|
$group_users[$user2->id] = $user2->name;
|
|
}
|
|
|
|
$group_users_select = form::dropdown(array
|
|
(
|
|
'name' => 'group_users[]',
|
|
'size' => 20,
|
|
'style' => 'width:250px',
|
|
'multiple' => 'multiple'
|
|
), $group_users);
|
|
}
|
|
|
|
//generovani group searchboxu
|
|
$group_users_search_box =
|
|
'<table><tr><td>' .
|
|
form::input('search_group_input', $search_group_input, 'style="width:175px;"') .
|
|
'</td><td>' . form::submit('search_group_submit', url_lang::lang('texts.Search'), 'style="width:50px;"') .
|
|
'</td><td>' . (($search_group_input == NULL ) ? '' : form::submit('search_group_clear', 'X', 'style="width:18px;"')) .
|
|
'</td></tr></table>';
|
|
|
|
//tlacitka pro manipulaci
|
|
$add_button = form::submit(
|
|
'add', url_lang::lang('texts.Add') . ' ►', 'style="width:80px;"'
|
|
);
|
|
|
|
$remove_button = form::submit(
|
|
'remove', '◄ ' . url_lang::lang('texts.Remove'), 'style="width:80px;"'
|
|
);
|
|
|
|
$headline = url_lang::lang('texts.Edit device admins') . ': ' .
|
|
url_lang::lang('texts.' . $device->name);
|
|
|
|
// breadcrumbs navigation
|
|
$breadcrumbs = breadcrumbs::add()
|
|
->link('members/show_all', 'Members',
|
|
$this->acl_check_view('Members_Controller', 'members'))
|
|
->link('members/show/' . $device->user->member->id,
|
|
'ID ' . $device->user->member->id . ' - ' . $device->user->member->name,
|
|
$this->acl_check_view('Members_Controller', 'members', $device->user->member->id))
|
|
->link('users/show_by_member/' . $device->user->member_id, 'Users',
|
|
$this->acl_check_view('Users_Controller', 'users', $device->user->member_id))
|
|
->link('users/show/' . $device->user->id,
|
|
$device->user->name . ' ' . $device->user->surname . ' (' . $device->user->login . ')',
|
|
$this->acl_check_view('Users_Controller', 'users', $device->user->member_id))
|
|
->link('devices/show_by_user/' . $device->user_id,'Devices',
|
|
$this->acl_check_view('Devices_Controller', 'devices', $device->user->member_id))
|
|
->link('devices/show/' . $device->id,
|
|
($device->name != '' ? $device->name : $device_type),
|
|
$this->acl_check_view('Devices_Controller', 'devices', $device->user->member_id))
|
|
->text('Edit device admins');
|
|
|
|
$view = new View('main');
|
|
$view->title = $headline;
|
|
$view->breadcrumbs = $breadcrumbs->html();
|
|
$view->content = new View('device_admins/edit_device_admins');
|
|
$view->content->headline = $headline;
|
|
$view->content->device_id = $device_id;
|
|
$view->content->system_users_select = $system_users_select;
|
|
$view->content->system_users_search_box = $system_users_search_box;
|
|
$view->content->group_users_select = $group_users_select;
|
|
$view->content->group_users_search_box = $group_users_search_box;
|
|
$view->content->add_button = $add_button;
|
|
$view->content->remove_button = $remove_button;
|
|
$view->render(TRUE);
|
|
}
|
|
|
|
/**
|
|
* Edits devices of which is user admin
|
|
*
|
|
* @author Michal Kliment
|
|
* @param integer $user_id
|
|
*/
|
|
public function edit_user($user_id = NULL)
|
|
{
|
|
// access control
|
|
if (!$this->acl_check_new('Devices_Controller', 'admin'))
|
|
Controller::error(ACCESS);
|
|
|
|
// bad parameter
|
|
if (!isset($user_id) || !is_numeric($user_id))
|
|
Controller::warning(PARAMETER);
|
|
|
|
// user doesn't exist
|
|
$user = new User_Model($user_id);
|
|
|
|
if (!$user->id)
|
|
Controller::error(RECORD);
|
|
|
|
$model_aro = new Aro_Model();
|
|
|
|
//po zmacknuti tlacitka X se nastavi filtr na NULL
|
|
if ($this->input->post('search_system_clear'))
|
|
$search_system_input = NULL;
|
|
else
|
|
$search_system_input = $this->input->post('search_system_input');
|
|
|
|
//po zmacknuti tlacitka X se nastavi filtr na NULL
|
|
if ($this->input->post('search_group_clear'))
|
|
$search_group_input = NULL;
|
|
else
|
|
$search_group_input = $this->input->post('search_group_input');
|
|
|
|
$left_user = $this->input->post('left_user');
|
|
$right_user = $this->input->post('right_user');
|
|
|
|
//pridani uzivatele do skupiny
|
|
if ($this->input->post('add') != NULL && $this->input->post("system_devices") != '')
|
|
{
|
|
foreach ($this->input->post("system_devices") as $device_id)
|
|
{
|
|
$device_admin = ORM::factory('device_admin')
|
|
->where(array
|
|
(
|
|
'device_id' => $device_id,
|
|
'user_id' => $user_id
|
|
))->find();
|
|
|
|
if ($device_admin->id == 0)
|
|
{
|
|
$device_admin = ORM::factory('device_admin');
|
|
$device_admin->device_id = $device_id;
|
|
$device_admin->user_id = $user_id;
|
|
$device_admin->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
//odebrani uzivatele ze skupiny
|
|
if ($this->input->post('remove') != NULL &&
|
|
$this->input->post("group_devices") != '')
|
|
{
|
|
foreach ($this->input->post("group_devices") as $device_id)
|
|
{
|
|
$device_admin = ORM::factory('device_admin')
|
|
->where(array
|
|
(
|
|
'device_id' => $device_id,
|
|
'user_id' => $user_id
|
|
))->find();
|
|
|
|
if ($device_admin->id != 0)
|
|
{
|
|
$device_admin->delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
$arr_users = arr::merge(array
|
|
(
|
|
NULL => '----- ' . url_lang::lang('texts.select user') . ' -----'
|
|
), ORM::factory('user')->get_all_to_device_admin());
|
|
|
|
$devices1 = ORM::factory('device_admin')->get_all_devices_not_in_user_device_admins(
|
|
$user->id, $search_system_input, $left_user
|
|
);
|
|
|
|
$devices2 = ORM::factory('device_admin')->get_all_devices_in_user_device_admins(
|
|
$user->id, $search_group_input, $right_user
|
|
);
|
|
|
|
//generovani system dropboxu
|
|
if ($devices1->count() == 0)
|
|
{
|
|
$system_devices_select = form::dropdown(array
|
|
(
|
|
'name' => 'system_devices[]',
|
|
'size' => 20,
|
|
'style' => 'width:250px'
|
|
));
|
|
}
|
|
else
|
|
{
|
|
foreach ($devices1 as $device1)
|
|
{
|
|
$system_devices[$device1->id] = $device1->name . ' (' . $device1->user_name . ')';
|
|
}
|
|
$system_devices_select = form::dropdown(array
|
|
(
|
|
'name' => 'system_devices[]',
|
|
'size' => 20,
|
|
'style' => 'width:250px',
|
|
'multiple' => 'multiple'
|
|
), $system_devices);
|
|
}
|
|
|
|
//generovani system searchboxu
|
|
$system_devices_search_box =
|
|
'<table><tr><td>' .
|
|
form::input('search_system_input', $search_system_input, 'style="width:175px;"') .
|
|
'</td><td>' .
|
|
form::submit('search_system_submit', url_lang::lang('texts.Search'), 'style="width:50px;"') .
|
|
'</td><td>' .
|
|
(($search_system_input == NULL ) ? '' : form::submit('search_system_clear', 'X', 'style="width:18px;"')) .
|
|
'</td></tr></table>';
|
|
|
|
//generovani group dropboxu
|
|
if ($devices2->count() == 0)
|
|
{
|
|
$group_devices_select = form::dropdown(array
|
|
(
|
|
'name' => 'group_devices[]',
|
|
'size' => 20,
|
|
'style' => 'width:250px',
|
|
'multiple' => 'multiple'
|
|
));
|
|
}
|
|
else
|
|
{
|
|
foreach ($devices2 as $device2)
|
|
{
|
|
$group_devices[$device2->id] = $device2->name . ' (' . $device2->user_name . ')';
|
|
}
|
|
|
|
$group_devices_select = form::dropdown(array
|
|
(
|
|
'name' => 'group_devices[]',
|
|
'size' => 20,
|
|
'style' => 'width:250px',
|
|
'multiple' => 'multiple'
|
|
), $group_devices);
|
|
}
|
|
|
|
//generovani group searchboxu
|
|
$group_devices_search_box =
|
|
'<table><tr><td>' .
|
|
form::input('search_group_input', $search_group_input, 'style="width:175px;"') .
|
|
'</td><td>' .
|
|
form::submit('search_group_submit', url_lang::lang('texts.Search'), 'style="width:50px;"') .
|
|
'</td><td>' . (($search_group_input == NULL ) ? '' : form::submit('search_group_clear', 'X', 'style="width:18px;"')) .
|
|
'</td></tr></table>';
|
|
|
|
//tlacitka pro manipulaci
|
|
$add_button = form::submit(
|
|
'add', url_lang::lang('texts.Add') . ' ►', 'style="width:80px;"'
|
|
);
|
|
|
|
$remove_button = form::submit(
|
|
'remove', '◄ ' . url_lang::lang('texts.Remove'), 'style="width:80px;"'
|
|
);
|
|
|
|
$headline = url_lang::lang('texts.Edit admin of devices') . ': ' .
|
|
url_lang::lang('texts.' . $user->name . ' ' . $user->surname);
|
|
|
|
// breadcrumbs navigation
|
|
$breadcrumbs = breadcrumbs::add()
|
|
->link('members/show_all', 'Members',
|
|
$this->acl_check_view('Members_Controller', 'members'))
|
|
->link('members/show/' . $user->member->id,
|
|
'ID ' . $user->member->id . ' - ' . $user->member->name,
|
|
$this->acl_check_view('Members_Controller', 'members', $user->member->id))
|
|
->link('users/show_by_member/' . $user->member_id, 'Users',
|
|
$this->acl_check_view('Users_Controller', 'users', $user->member_id))
|
|
->link('users/show/' . $user->id,
|
|
$user->name . ' ' . $user->surname . ' (' . $user->login . ')',
|
|
$this->acl_check_view('Users_Controller', 'users', $user->member_id))
|
|
->text('Edit admin of devices');
|
|
|
|
$view = new View('main');
|
|
$view->title = $headline;
|
|
$view->breadcrumbs = $breadcrumbs->html();
|
|
$view->content = new View('device_admins/edit_device_admins_user');
|
|
$view->content->headline = $headline;
|
|
$view->content->user_id = $user_id;
|
|
|
|
$view->content->left_users_select = form::dropdown(array
|
|
(
|
|
'name' => 'left_user',
|
|
'style' => 'width:250px'
|
|
), $arr_users, $left_user);
|
|
|
|
$view->content->right_users_select = form::dropdown(array
|
|
(
|
|
'name' => 'right_user',
|
|
'style' => 'width:250px'
|
|
), $arr_users, $right_user);
|
|
|
|
$view->content->system_devices_select = $system_devices_select;
|
|
$view->content->system_devices_search_box = $system_devices_search_box;
|
|
$view->content->group_devices_select = $group_devices_select;
|
|
$view->content->group_devices_search_box = $group_devices_search_box;
|
|
$view->content->add_button = $add_button;
|
|
$view->content->remove_button = $remove_button;
|
|
$view->render(TRUE);
|
|
}
|
|
|
|
/**
|
|
* Deletes device admin
|
|
*
|
|
* @author Michal Kliment
|
|
* @param integer $device_admin_id
|
|
*/
|
|
public function delete($device_admin_id = NULL)
|
|
{
|
|
// bad parameter
|
|
if (!$device_admin_id || !is_numeric($device_admin_id))
|
|
Controller::warning(PARAMETER);
|
|
|
|
$device_admin = new Device_admin_Model($device_admin_id);
|
|
|
|
// record doesn't exist
|
|
if (!$device_admin->id)
|
|
Controller::error(RECORD);
|
|
|
|
// access control
|
|
if (!$this->acl_check_delete('Devices_Controller', 'admin'))
|
|
Controller::error(ACCESS);
|
|
|
|
// success
|
|
if ($device_admin->delete())
|
|
{
|
|
$this->session->set_flash('message', url_lang::lang(
|
|
'texts.Device admin has been successfully removed.'
|
|
));
|
|
}
|
|
|
|
url::redirect(Path::instance()->previous()->current());
|
|
}
|
|
|
|
}
|