freenetis-github/application/controllers/clouds.php @ 1438209a
8baed187 | Michal Kliment | <?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/
|
|||
*
|
|||
*/
|
|||
/**
|
|||
* Controller performs clouds actions.
|
|||
* Cloud is large district which contains subnets.
|
|||
* Clouds are mostly towns or town quarters.
|
|||
*
|
|||
* @package Controller
|
|||
* @author Ondřej Fibich
|
|||
*/
|
|||
class Clouds_Controller extends Controller
|
|||
{
|
|||
c1bdc1c4 | Michal Kliment | /**
|
|
* Constructor, only test if networks is enabled
|
|||
*/
|
|||
public function __construct()
|
|||
{
|
|||
parent::__construct();
|
|||
// access control
|
|||
if (!Settings::get('networks_enabled'))
|
|||
Controller::error (ACCESS);
|
|||
}
|
|||
8baed187 | Michal Kliment | /**
|
|
* Index redirects to show all
|
|||
*/
|
|||
public function index()
|
|||
{
|
|||
url::redirect('clouds/show_all');
|
|||
}
|
|||
/**
|
|||
* Shows all clouds
|
|||
*/
|
|||
public function show_all()
|
|||
{
|
|||
// access check
|
|||
if (!$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
Controller::error(ACCESS);
|
|||
}
|
|||
// model
|
|||
$cloud_model = new Cloud_Model();
|
|||
// gets data
|
|||
$query = $cloud_model->get_all_clouds();
|
|||
// grid
|
|||
$grid = new Grid('clouds', null, array
|
|||
(
|
|||
'use_paginator' => false,
|
|||
'use_selector' => false
|
|||
));
|
|||
if ($this->acl_check_new('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$grid->add_new_button('clouds/add', __('Add new cloud'));
|
|||
}
|
|||
$grid->field('id');
|
|||
$grid->field('name');
|
|||
$grid->field('subnet_count');
|
|||
$grid->field('admin_count');
|
|||
$actions = $grid->grouped_action_field();
|
|||
$actions->add_action()
|
|||
->icon_action('show')
|
|||
->url('clouds/show');
|
|||
if ($this->acl_check_edit('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$actions->add_action()
|
|||
->icon_action('edit')
|
|||
->url('clouds/edit');
|
|||
}
|
|||
if ($this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$actions->add_action()
|
|||
->icon_action('delete')
|
|||
->url('clouds/delete')
|
|||
->class('delete_link');
|
|||
}
|
|||
// load datasource
|
|||
$grid->datasource($query);
|
|||
// bread crumbs
|
|||
$breadcrumbs = breadcrumbs::add()
|
|||
->text('Clouds')
|
|||
->html();
|
|||
// main view
|
|||
$view = new View('main');
|
|||
$view->title = __('List of all clouds');
|
|||
$view->content = new View('show_all');
|
|||
$view->breadcrumbs = $breadcrumbs;
|
|||
$view->content->headline = __('List of all clouds');
|
|||
$view->content->table = $grid;
|
|||
$view->render(TRUE);
|
|||
}
|
|||
/**
|
|||
* Show subnet with given ID
|
|||
*
|
|||
* @param integer $cloud_id
|
|||
*/
|
|||
public function show($cloud_id = NULL)
|
|||
{
|
|||
// param check
|
|||
if (!$cloud_id || !is_numeric($cloud_id))
|
|||
{
|
|||
Controller::warning(PARAMETER);
|
|||
}
|
|||
// check acess
|
|||
if (!$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
Controller::error(ACCESS);
|
|||
}
|
|||
$cloud_model = new Cloud_Model($cloud_id);
|
|||
// exist record
|
|||
if (!$cloud_model->id)
|
|||
{
|
|||
Controller::error(RECORD);
|
|||
}
|
|||
/* ADMINS */
|
|||
// post delete
|
|||
if ($_POST && isset($_POST['uid']) &&
|
|||
$this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$ids = array_keys($_POST['uid']);
|
|||
if (count($ids) > 0)
|
|||
{
|
|||
$cloud_model->remove_admins($cloud_id, $ids);
|
|||
status::success('Admins of cloud have been successfully removed');
|
|||
}
|
|||
}
|
|||
// gets admins of cloud
|
|||
$admins = $cloud_model->get_cloud_admins();
|
|||
// grid
|
|||
$grid_admins = new Grid('clouds', null, array
|
|||
(
|
|||
'use_paginator' => false,
|
|||
'use_selector' => false
|
|||
));
|
|||
if ($this->acl_check_new('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$grid_admins->add_new_button(
|
|||
'clouds/add_admin/' . $cloud_id,
|
|||
__('Add admin of cloud')
|
|||
);
|
|||
}
|
|||
if ($this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$grid_admins->form_field('uid')
|
|||
->label('')
|
|||
->order(false)
|
|||
->type('checkbox');
|
|||
}
|
|||
$grid_admins->field('id');
|
|||
$grid_admins->field('user');
|
|||
$actions = $grid_admins->grouped_action_field();
|
|||
if ($this->acl_check_view('Users_Controller', 'users'))
|
|||
{
|
|||
$actions->add_action()
|
|||
->icon_action('show')
|
|||
->url('users/show');
|
|||
}
|
|||
if ($this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$actions->add_action()
|
|||
->icon_action('delete')
|
|||
->url('clouds/remove_admin/' . $cloud_id)
|
|||
->label('Remove');
|
|||
}
|
|||
if ($this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
// adds extra buttons
|
|||
$grid_admins->form_extra_buttons = array
|
|||
(
|
|||
form::checkbox('admins_mark_all', 'on', FALSE, 'class="checkbox"') .
|
|||
form::label('mark_all', __('Mark all'), 'class="mark_all_label"')
|
|||
);
|
|||
$grid_admins->form_submit_value = __('Delete');
|
|||
}
|
|||
// load data
|
|||
$grid_admins->datasource($admins);
|
|||
/* SUBNETS */
|
|||
// post delete
|
|||
if ($_POST && isset($_POST['sid']) &&
|
|||
$this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$ids = array_keys($_POST['sid']);
|
|||
if (count($ids) > 0)
|
|||
{
|
|||
$cloud_model->remove_subnets($cloud_id, $ids);
|
|||
status::success('Subnets have been successfully removed from cloud');
|
|||
}
|
|||
}
|
|||
// get cloud subnets
|
|||
$subnets = $cloud_model->get_cloud_subnets();
|
|||
// grid
|
|||
$grid_subnets = new Grid('clouds', null, array
|
|||
(
|
|||
'use_paginator' => false,
|
|||
'use_selector' => false
|
|||
));
|
|||
c1bdc1c4 | Michal Kliment | if ($this->acl_check_new('Subnets_Controller', 'subnet'))
|
|
8baed187 | Michal Kliment | {
|
|
$grid_subnets->add_new_button(
|
|||
'subnets/add/' . $cloud_id, __('Add new subnet')
|
|||
);
|
|||
}
|
|||
if ($this->acl_check_new('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$grid_subnets->add_new_button(
|
|||
'clouds/add_subnet/' . $cloud_id, __('Add subnet to cloud')
|
|||
);
|
|||
}
|
|||
if ($this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$grid_subnets->form_field('sid')
|
|||
->label('')
|
|||
->order(false)
|
|||
->type('checkbox');
|
|||
}
|
|||
$grid_subnets->field('id');
|
|||
$grid_subnets->field('name');
|
|||
$grid_subnets->field('network_address')
|
|||
->label(__('Address network'));
|
|||
$grid_subnets->field('netmask');
|
|||
$actions = $grid_subnets->grouped_action_field();
|
|||
c1bdc1c4 | Michal Kliment | if ($this->acl_check_view('Subnets_Controller', 'subnet'))
|
|
8baed187 | Michal Kliment | {
|
|
$actions->add_action()
|
|||
->icon_action('show')
|
|||
->url('subnets/show');
|
|||
}
|
|||
if ($this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
$actions->add_action()
|
|||
->icon_action('delete')
|
|||
->url('clouds/remove_subnet/' . $cloud_id)
|
|||
->label('Remove');
|
|||
}
|
|||
if ($this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
// adds extra buttons
|
|||
$grid_subnets->form_extra_buttons = array
|
|||
(
|
|||
form::checkbox('subnets_mark_all', 'on', FALSE, 'class="checkbox"') .
|
|||
form::label('mark_all', __('Mark all'), 'class="mark_all_label"')
|
|||
);
|
|||
$grid_subnets->form_submit_value = __('Delete');
|
|||
}
|
|||
// load data
|
|||
$grid_subnets->datasource($subnets);
|
|||
$headline = $cloud_model->name . ' (' . $cloud_id . ')';
|
|||
// bread crumbs
|
|||
$breadcrumbs = breadcrumbs::add()
|
|||
->link('clouds/show_all', 'Clouds',
|
|||
$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
->disable_translation()
|
|||
->text($headline)
|
|||
->html();
|
|||
// view
|
|||
$view = new View('main');
|
|||
$view->title = $headline;
|
|||
$view->content = new View('clouds/show');
|
|||
$view->breadcrumbs = $breadcrumbs;
|
|||
$view->content->cloud = $cloud_model;
|
|||
$view->content->admins = $grid_admins;
|
|||
$view->content->subnets = $grid_subnets;
|
|||
$view->render(TRUE);
|
|||
}
|
|||
/**
|
|||
* Adds cloud
|
|||
*/
|
|||
public function add()
|
|||
{
|
|||
// check access
|
|||
if (!$this->acl_check_new('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
Controller::error(ACCESS);
|
|||
}
|
|||
// gets all subnets
|
|||
$subnet_model = new Subnet_Model();
|
|||
$subnets = $subnet_model->select_list('id', 'name');
|
|||
// gets all users
|
|||
$user_model = new User_Model();
|
|||
$users = $user_model->select_list_grouped();
|
|||
// form
|
|||
$form = new Forge('clouds/add');
|
|||
$form->group('Basic information');
|
|||
$form->input('name')
|
|||
->rules('required')
|
|||
->style('width:600px');
|
|||
$form->dropdown('subnets[]')
|
|||
->label(__('Subnets') . ': ' . help::hint('multiple_dropdown'))
|
|||
->size(20)
|
|||
->multiple('multiple')
|
|||
->options($subnets)
|
|||
->class('max');
|
|||
$form->dropdown('admins[]')
|
|||
->label(__('Admins') . ': ' . help::hint('multiple_dropdown'))
|
|||
->size(20)
|
|||
->multiple('multiple')
|
|||
->options($users)
|
|||
->class('max');
|
|||
$form->submit('Add');
|
|||
// validate form and save data
|
|||
if ($form->validate())
|
|||
{
|
|||
try
|
|||
{
|
|||
// cloud model
|
|||
$cloud_model = new Cloud_Model();
|
|||
// start transaction
|
|||
$cloud_model->transaction_start();
|
|||
// save cloud
|
|||
$cloud_model->name = htmlspecialchars($form->name->value);
|
|||
$issave = $cloud_model->save_throwable();
|
|||
// add admins
|
|||
if (isset($_POST['admins']) && is_array($_POST['admins']))
|
|||
{
|
|||
foreach ($_POST['admins'] as $user_id)
|
|||
{
|
|||
$user_model->find($user_id);
|
|||
if ($user_model->id)
|
|||
{
|
|||
$cloud_model->add($user_model);
|
|||
$cloud_model->save_throwable();
|
|||
}
|
|||
}
|
|||
}
|
|||
// add subnets
|
|||
if (isset($_POST['subnets']) && is_array($_POST['subnets']))
|
|||
{
|
|||
foreach ($_POST['subnets'] as $subnet_id)
|
|||
{
|
|||
$subnet_model->find($subnet_id);
|
|||
if ($subnet_model->id)
|
|||
{
|
|||
$cloud_model->add($subnet_model);
|
|||
$cloud_model->save_throwable();
|
|||
}
|
|||
}
|
|||
}
|
|||
// commit transaction
|
|||
$cloud_model->transaction_commit();
|
|||
// message
|
|||
status::success('Cloud has been successfully added.');
|
|||
// redirection
|
|||
url::redirect('clouds/show_all');
|
|||
}
|
|||
catch (Exception $e)
|
|||
{
|
|||
// roolback transaction
|
|||
$cloud_model->transaction_rollback();
|
|||
Log::add_exception($e);
|
|||
// message
|
|||
c1bdc1c4 | Michal Kliment | status::error('Error - cannot add cloud', $e);
|
|
8baed187 | Michal Kliment | }
|
|
}
|
|||
$headline = __('Add new cloud');
|
|||
// bread crumbs
|
|||
$breadcrumbs = breadcrumbs::add()
|
|||
->link('clouds/show_all', 'Clouds',
|
|||
$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
->disable_translation()
|
|||
->text($headline)
|
|||
->html();
|
|||
// view
|
|||
$view = new View('main');
|
|||
$view->title = __('Add new cloud');
|
|||
$view->content = new View('form');
|
|||
$view->breadcrumbs = $breadcrumbs;
|
|||
$view->content->headline = $headline;
|
|||
$view->content->form = $form->html();
|
|||
$view->render(TRUE);
|
|||
}
|
|||
/**
|
|||
* Assign admin as admin of cloud
|
|||
*
|
|||
* @param integer $cloud_id
|
|||
*/
|
|||
public function add_admin($cloud_id = null)
|
|||
{
|
|||
// check param
|
|||
if (!$cloud_id || !is_numeric($cloud_id))
|
|||
{
|
|||
Controller::warning(PARAMETER);
|
|||
}
|
|||
// check access
|
|||
c1bdc1c4 | Michal Kliment | if (!$this->acl_check_new('Clouds_Controller', 'clouds'))
|
|
8baed187 | Michal Kliment | {
|
|
Controller::error(ACCESS);
|
|||
}
|
|||
// load model
|
|||
$cloud_model = new Cloud_Model($cloud_id);
|
|||
// check exists
|
|||
if (!$cloud_model->id)
|
|||
{
|
|||
Controller::error(RECORD);
|
|||
}
|
|||
// list of free
|
|||
$arr_admin = $cloud_model->select_list_of_admins_not_in($cloud_id);
|
|||
//are there any unassigned amins?
|
|||
if (count($arr_admin) == 1)
|
|||
{
|
|||
status::warning('There are not any unassigned admins.');
|
|||
url::redirect('clouds/show/' . $cloud_id);
|
|||
}
|
|||
// form
|
|||
$form = new Forge('clouds/add_admin/' . $cloud_id);
|
|||
$form->dropdown('admins[]')
|
|||
->label(__('Admins') . ': ' . help::hint('multiple_dropdown'))
|
|||
->size(20)
|
|||
->multiple('multiple')
|
|||
->options($arr_admin)
|
|||
->class('max');
|
|||
$form->submit('Assign');
|
|||
// validate form and save data
|
|||
if ($form->validate())
|
|||
{
|
|||
try
|
|||
{
|
|||
// start transaction
|
|||
$cloud_model->transaction_start();
|
|||
$user_model = new User_Model();
|
|||
// add admins
|
|||
if (isset($_POST['admins']) && is_array($_POST['admins']))
|
|||
{
|
|||
foreach ($_POST['admins'] as $user_id)
|
|||
{
|
|||
$user_model->find($user_id);
|
|||
if ($user_model->id)
|
|||
{
|
|||
$cloud_model->add($user_model);
|
|||
$cloud_model->save_throwable();
|
|||
}
|
|||
}
|
|||
}
|
|||
// commit transaction
|
|||
$cloud_model->transaction_commit();
|
|||
// message
|
|||
status::success('Admins have been successfully assigned to cloud');
|
|||
// redirection
|
|||
url::redirect('clouds/show/' . $cloud_id);
|
|||
}
|
|||
catch (Exception $e)
|
|||
{
|
|||
// roolback transaction
|
|||
$cloud_model->transaction_rollback();
|
|||
Log::add_exception($e);
|
|||
// message
|
|||
c1bdc1c4 | Michal Kliment | status::error('Error - cannot add admin to cloud', $e);
|
|
8baed187 | Michal Kliment | }
|
|
}
|
|||
$headline = __('Assign admin to cloud');
|
|||
// bread crumbs
|
|||
$breadcrumbs = breadcrumbs::add()
|
|||
->link('clouds/show_all', 'Clouds',
|
|||
$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
->disable_translation()
|
|||
->link('clouds/show/' . $cloud_id,
|
|||
$cloud_model->name . ' (' . $cloud_id . ')',
|
|||
$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
->text($headline)
|
|||
->html();
|
|||
// view
|
|||
$view = new View('main');
|
|||
$view->title = $headline;
|
|||
$view->breadcrumbs = $breadcrumbs;
|
|||
$view->content = new View('form');
|
|||
$view->content->headline = $headline;
|
|||
$view->content->form = $form->html();
|
|||
$view->render(TRUE);
|
|||
}
|
|||
/**
|
|||
* Adds subnet to cloud
|
|||
*
|
|||
* @param integer $cloud_id
|
|||
*/
|
|||
public function add_subnet($cloud_id = null)
|
|||
{
|
|||
// check param
|
|||
if (!$cloud_id || !is_numeric($cloud_id))
|
|||
{
|
|||
Controller::warning(PARAMETER);
|
|||
}
|
|||
// check access
|
|||
c1bdc1c4 | Michal Kliment | if (!$this->acl_check_new('Clouds_Controller', 'clouds'))
|
|
8baed187 | Michal Kliment | {
|
|
Controller::error(ACCESS);
|
|||
}
|
|||
// load model
|
|||
$cloud_model = new Cloud_Model($cloud_id);
|
|||
// check exists
|
|||
if (!$cloud_model->id)
|
|||
{
|
|||
Controller::error(RECORD);
|
|||
}
|
|||
// list of free
|
|||
$arr_subnet = $cloud_model->select_list_of_subnets_not_in($cloud_id);
|
|||
//are there any unassigned subnets?
|
|||
if (count($arr_subnet) == 1)
|
|||
{
|
|||
status::warning('There are not any unassigned subnets.');
|
|||
url::redirect('clouds/show/' . $cloud_id);
|
|||
}
|
|||
// form
|
|||
$form = new Forge('clouds/add_subnet/' . $cloud_id);
|
|||
$form->dropdown('subnets[]')
|
|||
->label(__('Subnets') . ': ' . help::hint('multiple_dropdown'))
|
|||
->size(20)
|
|||
->multiple('multiple')
|
|||
->options($arr_subnet)
|
|||
->class('max');
|
|||
$form->submit('Insert');
|
|||
// validate form and save data
|
|||
if ($form->validate())
|
|||
{
|
|||
try
|
|||
{
|
|||
// start transaction
|
|||
$cloud_model->transaction_start();
|
|||
$subnet_model = new Subnet_Model();
|
|||
// add subnets
|
|||
if (isset($_POST['subnets']) && is_array($_POST['subnets']))
|
|||
{
|
|||
foreach ($_POST['subnets'] as $subnet_id)
|
|||
{
|
|||
$subnet_model->find($subnet_id);
|
|||
if ($subnet_model->id)
|
|||
{
|
|||
$cloud_model->add($subnet_model);
|
|||
$cloud_model->save_throwable();
|
|||
}
|
|||
}
|
|||
}
|
|||
// commit transaction
|
|||
$cloud_model->transaction_commit();
|
|||
// message
|
|||
status::success('Subnets have been successfully assigned to cloud.');
|
|||
// redirection
|
|||
url::redirect('clouds/show/' . $cloud_id);
|
|||
}
|
|||
catch (Exception $e)
|
|||
{
|
|||
// roolback transaction
|
|||
$cloud_model->transaction_rollback();
|
|||
Log::add_exception($e);
|
|||
// message
|
|||
c1bdc1c4 | Michal Kliment | status::error('Error - cannot add subnet to cloud', $e);
|
|
8baed187 | Michal Kliment | }
|
|
}
|
|||
// bread crumbs
|
|||
$headline = __('Assign subnet to cloud');
|
|||
// bread crumbs
|
|||
$breadcrumbs = breadcrumbs::add()
|
|||
->link('clouds/show_all', 'Clouds',
|
|||
$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
->disable_translation()
|
|||
->link('clouds/show/' . $cloud_id,
|
|||
$cloud_model->name . ' (' . $cloud_id . ')',
|
|||
$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
->text($headline)
|
|||
->html();
|
|||
// view
|
|||
$view = new View('main');
|
|||
$view->title = $headline;
|
|||
$view->breadcrumbs = $breadcrumbs;
|
|||
$view->content = new View('form');
|
|||
$view->content->headline = $headline . ' - ' . $cloud_model->name;
|
|||
$view->content->form = $form->html();
|
|||
$view->render(TRUE);
|
|||
}
|
|||
/**
|
|||
* Edits cloud
|
|||
*
|
|||
* @param integer $cloud_id
|
|||
*/
|
|||
public function edit($cloud_id = NULL)
|
|||
{
|
|||
// check param
|
|||
if (!$cloud_id || !is_numeric($cloud_id))
|
|||
{
|
|||
Controller::warning(PARAMETER);
|
|||
}
|
|||
// check access
|
|||
c1bdc1c4 | Michal Kliment | if (!$this->acl_check_edit('Clouds_Controller', 'clouds'))
|
|
8baed187 | Michal Kliment | {
|
|
Controller::error(ACCESS);
|
|||
}
|
|||
// load model
|
|||
$cloud_model = new Cloud_Model($cloud_id);
|
|||
// check exists
|
|||
if (!$cloud_model->id)
|
|||
{
|
|||
Controller::error(RECORD);
|
|||
}
|
|||
// form
|
|||
$form = new Forge('clouds/edit/' . $cloud_id);
|
|||
$form->input('name')
|
|||
->rules('required')
|
|||
->value($cloud_model->name)
|
|||
->style('width:600px');
|
|||
$form->submit('Edit');
|
|||
//validate form and save data
|
|||
if ($form->validate())
|
|||
{
|
|||
$cloud_model->name = $form->name->value;
|
|||
if ($cloud_model->save())
|
|||
{
|
|||
// message
|
|||
status::success('Cloud has been successfully updated.');
|
|||
}
|
|||
else
|
|||
{
|
|||
status::error('Error - cloud cannot be updated.');
|
|||
}
|
|||
// redirect
|
|||
url::redirect('clouds/show_all');
|
|||
}
|
|||
$headline = __('Edit cloud');
|
|||
// bread crumbs
|
|||
$breadcrumbs = breadcrumbs::add()
|
|||
->link('clouds/show_all', 'Clouds',
|
|||
$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
->disable_translation()
|
|||
->link('clouds/show/' . $cloud_id,
|
|||
$cloud_model->name . ' (' . $cloud_id . ')',
|
|||
$this->acl_check_view('Clouds_Controller', 'clouds'))
|
|||
->text($headline)
|
|||
->html();
|
|||
// view
|
|||
$view = new View('main');
|
|||
$view->title = $headline;
|
|||
$view->breadcrumbs = $breadcrumbs;
|
|||
$view->content = new View('form');
|
|||
$view->content->form = $form->html();
|
|||
$view->content->headline = $headline;
|
|||
$view->render(TRUE);
|
|||
}
|
|||
/**
|
|||
* Deletes cloud and its records in pivot tables
|
|||
*
|
|||
* @param integer $cloud_id
|
|||
*/
|
|||
public function delete($cloud_id = NULL)
|
|||
{
|
|||
// check param
|
|||
if (!$cloud_id || !is_numeric($cloud_id))
|
|||
{
|
|||
Controller::warning(PARAMETER);
|
|||
}
|
|||
// check access
|
|||
if (!$this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
Controller::error(ACCESS);
|
|||
}
|
|||
// load model
|
|||
$cloud_model = new Cloud_Model($cloud_id);
|
|||
// check exists
|
|||
if (!$cloud_model->id)
|
|||
{
|
|||
Controller::error(RECORD);
|
|||
}
|
|||
// delete (pivot tables are deleted by forein keys)
|
|||
if ($cloud_model->delete())
|
|||
{
|
|||
status::success('Cloud has been successfully deleted.');
|
|||
}
|
|||
else
|
|||
{
|
|||
status::error('Error - cant delete this cloud.');
|
|||
}
|
|||
// redirect to show all
|
|||
url::redirect('clouds/show_all/');
|
|||
}
|
|||
/**
|
|||
* Removes admin of cloud
|
|||
*
|
|||
* @param integer $cloud_id
|
|||
* @param integer $user_id
|
|||
*/
|
|||
public function remove_admin($cloud_id = NULL, $user_id = NULL)
|
|||
{
|
|||
// check param
|
|||
if (!$cloud_id || !is_numeric($cloud_id) ||
|
|||
!$user_id || !is_numeric($user_id))
|
|||
{
|
|||
Controller::warning(PARAMETER);
|
|||
}
|
|||
// check access
|
|||
if (!$this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
Controller::error(ACCESS);
|
|||
}
|
|||
// load models
|
|||
$cloud_model = new Cloud_Model($cloud_id);
|
|||
$user_model = new User_Model($user_id);
|
|||
// check exists
|
|||
if (!$cloud_model->id || !$user_model->id)
|
|||
{
|
|||
Controller::error(RECORD);
|
|||
}
|
|||
// remove record from pivot table
|
|||
$cloud_model->remove($user_model);
|
|||
// confirm removine
|
|||
if (!$cloud_model->save())
|
|||
{
|
|||
status::error('Error - cannot remove admin of cloud');
|
|||
}
|
|||
else
|
|||
{
|
|||
status::success('Admin of cloud has been successfully removed');
|
|||
}
|
|||
// redirect to show
|
|||
url::redirect('clouds/show/' . $cloud_id);
|
|||
}
|
|||
/**
|
|||
* Removes subnet of cloud
|
|||
*
|
|||
* @param integer $cloud_id
|
|||
* @param integer $subnet_id
|
|||
*/
|
|||
public function remove_subnet($cloud_id = NULL, $subnet_id = NULL)
|
|||
{
|
|||
// check param
|
|||
if (!$cloud_id || !is_numeric($cloud_id) ||
|
|||
!$subnet_id || !is_numeric($subnet_id))
|
|||
{
|
|||
Controller::warning(PARAMETER);
|
|||
}
|
|||
// check access
|
|||
if (!$this->acl_check_delete('Clouds_Controller', 'clouds'))
|
|||
{
|
|||
Controller::error(ACCESS);
|
|||
}
|
|||
// load models
|
|||
$cloud_model = new Cloud_Model($cloud_id);
|
|||
$subnet_model = new Subnet_Model($subnet_id);
|
|||
// check exists
|
|||
if (!$cloud_model->id || !$subnet_model->id)
|
|||
{
|
|||
Controller::error(RECORD);
|
|||
}
|
|||
// remove record from pivot table
|
|||
$cloud_model->remove($subnet_model);
|
|||
// confirm removine
|
|||
if (!$cloud_model->save())
|
|||
{
|
|||
status::error('Error - cannot remove subnet of cloud');
|
|||
}
|
|||
else
|
|||
{
|
|||
status::success('Subnet has been successfully removed from cloud');
|
|||
}
|
|||
// redirect to show
|
|||
url::redirect('clouds/show/' . $cloud_id);
|
|||
}
|
|||
}
|