mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
297 lines
6.9 KiB
PHP
297 lines
6.9 KiB
PHP
<?php
|
|
|
|
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
/**
|
|
* Page for managing groups of which user is the manager
|
|
*/
|
|
class Gruppenmanagement extends Auth_Controller
|
|
{
|
|
private $_uid; // contains the UID of the logged user
|
|
|
|
/**
|
|
* Constructor
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct(
|
|
array(
|
|
'index' => 'lehre/gruppenmanager:r',
|
|
'showBenutzergruppe' => 'lehre/gruppenmanager:r',
|
|
'getBenutzer' => 'lehre/gruppenmanager:r',
|
|
'getAllBenutzer' => 'lehre/gruppenmanager:r',
|
|
'addBenutzer' => 'lehre/gruppenmanager:rw',
|
|
'removeBenutzer' => 'lehre/gruppenmanager:rw'
|
|
)
|
|
);
|
|
|
|
// Loads models
|
|
$this->load->model('person/benutzer_model', 'BenutzerModel');
|
|
$this->load->model('ressource/mitarbeiter_model', 'MitarbeiterModel');
|
|
$this->load->model('person/benutzergruppe_model', 'BenutzergruppeModel');
|
|
$this->load->model('person/gruppe_manager_model', 'GruppemanagerModel');
|
|
$this->load->model('system/Log_model', 'LogModel');
|
|
|
|
$this->load->library('WidgetLib');
|
|
$this->loadPhrases(
|
|
array(
|
|
'global',
|
|
'person',
|
|
'lehre',
|
|
'ui',
|
|
'filter',
|
|
'gruppenmanagement'
|
|
)
|
|
);
|
|
|
|
$this->setControllerId(); // sets the controller id
|
|
$this->_setAuthUID(); // sets property uid
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------------------------------------------
|
|
// Public methods
|
|
|
|
/**
|
|
* Main page
|
|
*/
|
|
public function index()
|
|
{
|
|
$this->load->view(
|
|
'person/gruppenmanagement/gruppenmanagement.php',
|
|
array('uid' => $this->_uid)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Shows Benutzergruppe overview page.
|
|
*/
|
|
public function showBenutzergruppe()
|
|
{
|
|
$this->_setNavigationMenuShowDetails();
|
|
$gruppe_kurzbz = $this->input->get('gruppe_kurzbz');
|
|
|
|
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
|
|
|
|
$this->load->view(
|
|
'person/gruppenmanagement/benutzergruppe.php',
|
|
array('gruppe_kurzbz' => $gruppe_kurzbz)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Gets Benutzer assigned to a Gruppe
|
|
*/
|
|
public function getBenutzer()
|
|
{
|
|
$gruppe_kurzbz = $this->input->get('gruppe_kurzbz');
|
|
|
|
$this->BenutzergruppeModel->addSelect('uid, vorname, nachname, ben.aktiv');
|
|
$this->BenutzergruppeModel->addJoin('public.tbl_benutzer ben', 'uid');
|
|
$this->BenutzergruppeModel->addJoin('public.tbl_person', 'person_id');
|
|
$benutzerRes = $this->BenutzergruppeModel->loadWhere(array('gruppe_kurzbz' => $gruppe_kurzbz));
|
|
|
|
$this->outputJson($benutzerRes);
|
|
}
|
|
|
|
/**
|
|
* Gets all Benutzer for assignment to Gruppe
|
|
*/
|
|
public function getAllBenutzer()
|
|
{
|
|
$this->BenutzerModel->addSelect('uid, vorname, nachname');
|
|
$this->BenutzerModel->addJoin('public.tbl_person', 'person_id');
|
|
$benutzerRes = $this->BenutzerModel->loadWhere(
|
|
array('tbl_benutzer.aktiv' => true)
|
|
);
|
|
$this->outputJson($benutzerRes);
|
|
}
|
|
|
|
/**
|
|
* Adds a Benutzer to Gruppe
|
|
*/
|
|
public function addBenutzer()
|
|
{
|
|
$uid = $this->input->post('uid');
|
|
$gruppe_kurzbz = $this->input->post('gruppe_kurzbz');
|
|
|
|
if (isEmptyString($uid))
|
|
$result = error('Uid missing');
|
|
else
|
|
{
|
|
$this->GruppemanagerModel->addSelect('1');
|
|
$isManagerRes = $this->GruppemanagerModel->loadWhere(
|
|
array(
|
|
'uid' => $this->_uid,
|
|
'gruppe_kurzbz' => $gruppe_kurzbz
|
|
)
|
|
);
|
|
|
|
if (isError($isManagerRes))
|
|
{
|
|
$this->outputJsonError(getError($isManagerRes));
|
|
return;
|
|
}
|
|
|
|
if (!hasData($isManagerRes))
|
|
{
|
|
$this->outputJsonError($this->p->t('gruppenmanagement', 'nichtZumEditierenDerGruppeBerechtigt'));
|
|
return;
|
|
}
|
|
|
|
$this->BenutzergruppeModel->addSelect('1');
|
|
$benutzerExistsRes = $this->BenutzergruppeModel->loadWhere(
|
|
array(
|
|
'uid' => $uid,
|
|
'gruppe_kurzbz' => $gruppe_kurzbz
|
|
)
|
|
);
|
|
|
|
if (isError($benutzerExistsRes))
|
|
{
|
|
$this->outputJsonError(getError($benutzerExistsRes));
|
|
return;
|
|
}
|
|
|
|
if (hasData($benutzerExistsRes))
|
|
{
|
|
$this->outputJsonError($this->p->t('gruppenmanagement', 'benutzerSchonZugewiesen'));
|
|
return;
|
|
}
|
|
|
|
$result = $this->BenutzergruppeModel->insert(
|
|
array(
|
|
'uid' => $uid,
|
|
'gruppe_kurzbz' => $gruppe_kurzbz,
|
|
'insertamum' => date('Y-m-d H:i:s'),
|
|
'insertvon' => $this->_uid
|
|
)
|
|
);
|
|
|
|
// log the group add
|
|
$lastQry = $this->db->last_query();
|
|
|
|
if (isSuccess($result))
|
|
{
|
|
$beschreibung = 'Gruppenmanagement: Nutzer zu Gruppe hinzugefügt';
|
|
$this->_writeLog($this->_uid, $beschreibung, $lastQry);
|
|
}
|
|
}
|
|
|
|
$this->outputJson($result);
|
|
}
|
|
|
|
/**
|
|
* Removes Benutzer from Gruppe
|
|
*/
|
|
public function removeBenutzer()
|
|
{
|
|
$uid = $this->input->post('uid');
|
|
$gruppe_kurzbz = $this->input->post('gruppe_kurzbz');
|
|
|
|
if (isEmptyString($uid))
|
|
$result = error('Uid missing');
|
|
else
|
|
{
|
|
$this->GruppemanagerModel->addSelect('1');
|
|
$isManagerRes = $this->GruppemanagerModel->loadWhere(
|
|
array(
|
|
'uid' => $this->_uid,
|
|
'gruppe_kurzbz' => $gruppe_kurzbz
|
|
)
|
|
);
|
|
|
|
if (isError($isManagerRes))
|
|
{
|
|
$this->outputJsonError(getError($isManagerRes));
|
|
return;
|
|
}
|
|
|
|
if (!hasData($isManagerRes))
|
|
{
|
|
$this->outputJsonError($this->p->t('gruppenmanagement', 'nichtZumEditierenDerGruppeBerechtigt'));
|
|
return;
|
|
}
|
|
|
|
$result = $this->BenutzergruppeModel->delete(
|
|
array(
|
|
'uid' => $uid,
|
|
'gruppe_kurzbz' => $gruppe_kurzbz
|
|
)
|
|
);
|
|
}
|
|
|
|
// log the group remove
|
|
$lastQry = $this->db->last_query();
|
|
|
|
if (isSuccess($result))
|
|
{
|
|
$beschreibung = 'Gruppenmanagement: Nutzer aus Gruppe entfernt';
|
|
$this->_writeLog($this->_uid, $beschreibung, $lastQry);
|
|
}
|
|
|
|
$this->outputJson($result);
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------------------------------------------
|
|
// Private methods
|
|
|
|
/**
|
|
* Define the navigation menu for the showDetails page
|
|
*/
|
|
private function _setNavigationMenuShowDetails()
|
|
{
|
|
$this->load->library('NavigationLib', array('navigation_page' => 'person/Gruppenmanagement/showBenutzergruppe'));
|
|
|
|
$link = site_url('person/Gruppenmanagement');
|
|
|
|
$this->navigationlib->setSessionMenu(
|
|
array(
|
|
'back' => $this->navigationlib->oneLevel(
|
|
'Zurück', // description
|
|
$link, // link
|
|
array(), // children
|
|
'angle-left', // icon
|
|
true, // expand
|
|
null, // subscriptDescription
|
|
null, // subscriptLinkClass
|
|
null, // subscriptLinkValue
|
|
'', // target
|
|
1 // sort
|
|
)
|
|
)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Set uid of authentificated user
|
|
*/
|
|
private function _setAuthUID()
|
|
{
|
|
$this->_uid = getAuthUID();
|
|
|
|
if (!$this->_uid) show_error('User authentification failed');
|
|
}
|
|
|
|
/**
|
|
* Writes an entry in the log table
|
|
*/
|
|
private function _writeLog($uid, $beschreibung, $lastQry)
|
|
{
|
|
$mitarbeiterResult = $this->MitarbeiterModel->load(array('mitarbeiter_uid'=>$this->_uid));
|
|
|
|
if(!isSuccess($mitarbeiterResult) || !hasData($mitarbeiterResult))
|
|
{
|
|
$uid = DUMMY_LEKTOR_UID;
|
|
$beschreibung .= ': '.$this->_uid;
|
|
$beschreibung = mb_substr($beschreibung, 0, 64);
|
|
}
|
|
|
|
$this->LogModel->insert(array(
|
|
'mitarbeiter_uid' => $uid,
|
|
'beschreibung' => $beschreibung,
|
|
'sql' => $lastQry
|
|
));
|
|
}
|
|
|
|
}
|