Files
dinbestehjelper.no/application/controllers/ModuleManagement.php
T
Astral04andClaude Opus 4.8 31eb8b5878 Initial import of Din Beste Hjelper site
CodeIgniter 3 app for dinbestehjelper.no. Excludes vendor/, local backup
folders (new/, archive/, archived/) and DB dumps (*.sql) via .gitignore.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P16ttGUge8zj91dm6WrmEb
2026-08-04 12:36:43 +00:00

183 lines
9.7 KiB
PHP

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class ModuleManagement extends CI_Controller {
/**
* Index Page for this controller.
*
* Maps to the following URL
* http://example.com/index.php/welcome
* - or -
* http://example.com/index.php/welcome/index
* - or -
* Since this controller is set as the default controller in
* config/routes.php, it's displayed at http://example.com/
*
* So any other public methods not prefixed with an underscore will
* map to /index.php/welcome/<method_name>
* @see https://codeigniter.com/user_guide/general/urls.html
*/
public function index()
{
$this->load->helper('url');
$this->load->model('User_model');
$this->load->model('Log_model');
$this->load->model('Module_model');
if(isset($_SESSION['username'])){
$data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']);
//check module is available for user
$currentModule = $this->Module_model->getModuleBySlug('module-management');
if($this->User_model->is_user_admin($_SESSION['username']) || $this->Module_model->is_module_available($currentModule->module_id, $data['currentUser']->user_id)){
$data['users'] = $this->User_model->getAllUser();
$data['modules'] = $this->Module_model->getAllModule();
$data['privileges'] = $this->User_model->getAllUserGroup();
if(isset($_POST['updatePermission'])){
//set user privileges
foreach($data['modules'] as $moduleItem){
$moduleUserArray = array();
foreach($data['users'] as $userItem){
if($_POST['module_'.$moduleItem->module_id.'_user_'.$userItem->user_id]){
$moduleUserArray[] = $userItem->user_id;
}
}
if(is_array($moduleUserArray)){
$this->Module_model->updateModule('permission_ids', $moduleItem->module_id, $moduleUserArray);
$usernames = array();
foreach($moduleUserArray as $moduleUserItem){
$usernames[] = $this->User_model->getUserById($moduleUserItem)->username;
}
if(!empty($usernames)){
$this->Log_model->addLog('change_module_privileges', 'Módosult a '.$moduleItem->module_name.' felhasználó szintű jogosultság kiosztás('.implode(', ', $usernames).') felhasználókra', $_SESSION['username']);
}
else{
$this->Log_model->addLog('change_module_privileges', 'Módosult a '.$moduleItem->module_name.' felhasználó szintű jogosultság kiosztása, jelenleg nincs megosztva', $_SESSION['username']);
}
}
}
//set group privilegies
foreach($data['modules'] as $moduleItem){
$moduleGroupArray = array();
foreach($data['privileges'] as $groupItem){
if($_POST['module_'.$moduleItem->module_id.'_group_'.$groupItem->permission_id]){
$moduleGroupArray[] = $groupItem->permission_id;
}
}
if(is_array($moduleGroupArray)){
$this->Module_model->updateModule('permission_group_ids',$moduleItem->module_id, $moduleGroupArray);
$groupNames = array();
foreach($moduleGroupArray as $moduleGroupItem){
$groupNames[] = $this->User_model->getpermissionById($moduleGroupItem)->permission_name;
}
if(!empty($groupNames)){
$this->Log_model->addLog('change_module_privileges', 'Módosult a '.$moduleItem->module_name.' csoport szintű jogosultság kiosztás ('.(implode(', ',$groupNames)).') csoportokra', $_SESSION['username']);
}
else{
$this->Log_model->addLog('change_module_privileges', 'Módosult a '.$moduleItem->module_name.' csoport szintű jogosultság kiosztása, jelenleg nincs megosztva', $_SESSION['username']);
}
}
}
}
//usersPrivilegesView
$userIndex = 1;
if(is_array($data['users'])){
$data['usersPrivilegesView'] = '';
foreach($data['users'] as $userItem){
$data['usersPrivilegesView'] .= '<tr>';
$data['usersPrivilegesView'] .= '<td>'.$userIndex.'.</td>';
$data['usersPrivilegesView'] .= '<td style="text-align:left;max-width:auto;">'.$userItem->fullname.'</td>';
$data['usersPrivilegesView'] .= '<td style="text-align:left;max-width:auto;">'.$userItem->username.'</td>';
if(is_array($data['modules'])){
foreach($data['modules'] as $moduleItem){
if($userItem->permission_slug == 'admin'){
$data['usersPrivilegesView'] .= '<td><input type="hidden" name="module_'.$moduleItem->module_id.'_user_'.$userItem->user_id.'" value="0"><input type="checkbox" name="module_'.$moduleItem->module_id.'_user_'.$userItem->user_id.'" value="1" checked disabled/></td>';
}
else{
$data['usersPrivilegesView'] .= '<td><input type="hidden" name="module_'.$moduleItem->module_id.'_user_'.$userItem->user_id.'" value="0"><input type="checkbox" name="module_'.$moduleItem->module_id.'_user_'.$userItem->user_id.'" value="1" ';
$data['usersPrivilegesView'] .= $this->Module_model->is_userId_available_in_module($moduleItem->module_id, $userItem->user_id)?'checked':'';
$data['usersPrivilegesView'] .= '/></td>';
}
}
}
$userIndex++;
$data['usersPrivilegesView'] .= '</tr>';
}
}
//groupModuleView
$groupIndex = 1;
foreach($data['privileges'] as $privilegeItem){
if($privilegeItem->permission_slug == 'admin'){
$data['groupModuleView'] = '<tr>';
$data['groupModuleView'] .= '<td>'.$groupIndex.'.</td>';
$data['groupModuleView'] .= '<td style="text-align:left;max-width:auto;">'.$privilegeItem->permission_name.'</td>';
if(is_array($data['modules'])){
foreach($data['modules'] as $moduleItem){
$data['groupModuleView'] .= '<td><input type="hidden" name="module_'.$moduleItem->module_id.'_group_'.$privilegeItem->permission_id.'" value="0"><input type="checkbox" name="module_'.$moduleItem->module_id.'_group_'.$privilegeItem->permission_id.'" value="1" checked disabled/></td>';
}
}
$groupIndex++;
$data['groupModuleView'] .= '</tr>';
}
else{
$data['groupModuleView'] .= '<tr>';
$data['groupModuleView'] .= '<td>'.$groupIndex.'.</td>';
$data['groupModuleView'] .= '<td style="text-align:left;max-width:auto;">'.$privilegeItem->permission_name.'</td>';
if(is_array($data['modules'])){
foreach($data['modules'] as $moduleItem){
$data['groupModuleView'] .= '<td><input type="hidden" name="module_'.$moduleItem->module_id.'_group_'.$privilegeItem->permission_id.'" value="0"><input type="checkbox" name="module_'.$moduleItem->module_id.'_group_'.$privilegeItem->permission_id.'" value="1" ';
$data['groupModuleView'] .= $this->Module_model->is_groupId_available_in_module($moduleItem->module_id,$privilegeItem->permission_id)?' checked':'';
$data['groupModuleView'] .= '/></td>';
}
}
$groupIndex++;
$data['groupModuleView'] .= '</tr>';
}
}
//get available modules for menu
if($this->User_model->is_user_admin($_SESSION['username'])){
$data['activeModules'] = $this->Module_model->getAllModule();
}
else{
$data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id);
}
$this->load->view('modules/module-management/module-management', $data);
}
else{
header('Location:'.site_url().'404-page-not-found');
}
}
else{
header("Location:".SITEURL."login");
}
}
}