<?php
class adminGroups extends UI_Base {
public $action = "actionViewAll";
public $template = "adminGroups.html";
public $group_id = NULL;
/**
* @desc constructor
* @access public
* @param
* @return
*/
public function adminGroups(&$user)
{
UI_Base::UI_Base($user);
if ($this->user->SU_getProperty("USER_TYPE") != 'A') $this->setRedirect("StaticPage", array("PAGE"=>"engineAccessDenied.html"));
$this->group_id = (int)$_REQUEST["GROUP_ID"];
switch ($_REQUEST["todo"]) {
case "new":
case "edit": $this->setAction("actionEditGroup"); break;
case "delete": $this->setAction("actionDeleteGroup"); break;
case "success": $this->setAction("actionSuccess"); break;
}
if (!empty($_REQUEST["edit_group_submit"])) {
$this->setAction("actionUpdateGroup");
}
}
/**
* @desc view all groups
* @access public
* @param
* @return
*/
public function actionViewAll()
{
$this->addOutputVar(selectVector("SELECT * from USER_GROUPS"), "GROUPS_LIST");
}
/**
* @desc edit group
* @access public
* @param
* @return
*/
public function actionEditGroup()
{
$this->_actionPrepareGroupForm();
if (!empty($this->group_id)) {
$query = "SELECT * from USER_GROUPS where GROUP_ID=".$this->group_id;
$this->form->updateForm(selectHashTable($query), "VAL_");
}
$this->addOutputVar($this->form->outputForm(false));
}
/**
* @desc update group info
* @access public
* @param
* @return
*/
public function actionUpdateGroup()
{
$this->_actionPrepareGroupForm();
$this->form->updateFormFiltered($_POST, "gpcStripslashes");
if ($this->form->validateForm()) {
// add / update complete
$group_info = $this->form->getFieldsWithPrefix("VAL_");
if (empty($group_info["GROUP_ID"])) {
$query = setInsertValues($group_info, "USER_GROUPS");
} else {
$query = setUpdateQuery($group_info, "USER_GROUPS", "GROUP_ID=".$group_info["GROUP_ID"]);
}
queryExecute($query);
$this->sessionMessenger->sendMessage(array("message" => "Operation complete"));
$this->setSelfRedirect(array("todo" => "success"));
} else {
// form validation error
$this->run("actionEditPage");
}
}
/**
* @desc delete group and all associations with users
* @access public
* @param
* @return
*/
public function actionDeleteGroup()
{
if (!empty($this->group_id)) {
queryExecute("DELETE from USER_GROUPS where GROUP_ID=".$this->group_id);
queryExecute("DELETE from USER_TO_GROUP where GROUP_ID=".$this->group_id);
$this->sessionMessenger->sendMessage(array("message" => "Operation complete"));
$this->setSelfRedirect(array("todo" => "success"));
}
$this->run("actionViewAll");
}
/**
* @desc output success message
* @access public
* @param
* @return
*/
public function actionSuccess()
{
$message = $this->sessionMessenger->getMessage();
$this->addOutputVar($message["message"], "MESSAGE");
}
/**
* @desc this function called before interface run
* @access public
* @param
* @return boolean true or redirect to access denied page
*/
public function checkAccess()
{
if (!$this->user->SU_isUserInGroup('SITE ADMINISTRATORS')) $this->setRedirect("StaticPage", array("PAGE"=>"engineAccessDenied.html"));
return true;
}
/**
* @desc prepare group form for this interface ($this->form)
* @access private
* @return
*/
public function _actionPrepareGroupForm()
{
if (empty($this->form)) {
$this->form = new Form("edit_group", "", engine_TEMPLATES_PATH."forms/adminGroup.xml");
$this->form->setAttribute("action", "index.php");
}
}
// end of class adminGroups
}
?>