<?php
/*
* @package LabCMS
* @copyright (c) 2006 Alexander Levin aka Loki (loki_angel@mail.ru)
* @support http://labcms.ru
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/

class admin_groups_main extends ModuleTools
{
	public function __construct()
	{
		if (!access('admin')) return LabCMS::i()->error403();
	}
	
	public function main()
	{
		self::_setTpl('groups_list');
		
		$groups=Factory::create('admin_groups.group');
		
		self::_assign('groups', $groups->getChildGroups(0, false, false));
	}
	
	public function add()
	{
		$group=Factory::create('admin_groups.group');
		
		$form=$group->getEditForm();
		if ($form->validate()) {
			$group->add($form->getValue());
			LabCMS::reset_cache('all');
			refresh();
		}

		self::_setTpl('group_edit');
		
		addBreadcrumb("Добавление группы");
		
		self::_assign('form', $this->_renderForm($form));
	}
	
	public function edit()
	{
		$group=Factory::create('admin_groups.group', $_GET['var1']);
		if (!$group->id) return $this->_error(_m('Группа не найдена'));

		$form=$group->getEditForm();
		if ($form->validate()) {
			$group->update($form->getValue());
			LabCMS::reset_cache('all');
			refresh();
		}
		
		addBreadcrumb("Редактирование группы");
		
		self::_setTpl('group_edit');
		
		self::_assign('form', $this->_renderForm($form));
	}
	
	public function delete()
	{
		User::checkToken();
		$group=Factory::create('admin_groups.group', $_GET['var1']);
		if (!$group->id) return $this->_error(_m('Группа не найдена'));
		
		$group->delete();
		LabCMS::reset_cache('all');
		refresh();
	}
	
	public function access()
	{
		addBreadcrumb("Настройка доступа");
		
		if ($_GET['var1']==1 && !config::get('core.separate_config')) {
			return self::_error(_m('Для суперадмина нет настройки прав'));
		}
		include_once dirname(__FILE__).'/functions.php';
		
		$group=Factory::create('admin_groups.group', $_GET['var1']);
		if (!$group->id) return $this->_error(_m('Группа не найдена'));
		
		$module_conf=getUserGroupConf($group->id);
		if (!LabCMS::i()->no_errors) return;
		
		if ($_SERVER['REQUEST_METHOD']=='POST') {
			updateUserGroupConf($group->id, $module_conf, $_POST);
			LabCMS::reset_cache('all');
			refresh();
		}
		
		self::_assign('group', $group);
		self::_assign('modules', $module_conf);
		
		self::_setTpl('access');
	}
}