Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2018-06-25 18:15:02 +02:00
60 changed files with 4130 additions and 1882 deletions
+214
View File
@@ -0,0 +1,214 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
if (! defined('BASEPATH'))
exit('No direct script access allowed');
class AmpelMail extends FHC_Controller
{
const CIS_AMPELVERWALTUNG_URL =
CIS_ROOT. "cis/index.php?menu=".
CIS_ROOT. "cis/menu.php?content_id=&content=".
CIS_ROOT. "cis/private/tools/ampelverwaltung.php";
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
// Allow script execution only from CLI
if ($this->input->is_cli_request())
{
$cli = true;
}
else
{
$this->output->set_status_header(403, 'Jobs must be run from the CLI');
echo "Jobs must be run from the CLI";
exit;
}
// Load models
$this->load->model('content/Ampel_model', 'AmpelModel');
$this->load->model('person/Person_model', 'PersonModel');
// Load helpers
$this->load->helper('sancho');
}
/**
* Main function index as help
*
* @return void
*/
public function index()
{
$result = "The following are the available command line interface commands\n\n";
$result .= "php index.ci.php jobs/AmpelMail generateAmpelMail";
echo $result. PHP_EOL;
}
/**
* Generates mail content for new and overdue Ampeln, which
* 1. are not confirmed by the user yet and
* 2. are marked to be sent by email
* Ampel is new when inserted within the last 7 days before the cronjob runs (as cronjob runs weekly)
* Ampel is overdue when the cronjob runs after the deadline date.
* @return void
*/
public function generateAmpelMail()
{
// Get all notifications, that are not expired, not before vorlaufzeit AND email is true
$result_active_ampeln = $this->AmpelModel->active(true);
// Stores users, description, deadline and system-link of notifications
$new_ampel_data_arr = array(); // data of new notifications that are not confirmed
$overdue_ampel_data_arr = array(); // data of overdue notifications that are not confirmed
if (hasData($result_active_ampeln))
{
$ampel_arr = $result_active_ampeln->retval;
// Loop through ampeln
foreach ($ampel_arr as $ampel)
{
$ampel_id = $ampel->ampel_id;
$now = date_create(date('Y-m-d'));
$deadline = date_create($ampel->deadline);
$insert_date = date_create($ampel->insertamum);
$qry_all_ampel_user = $ampel->benutzer_select; // sql select to get all user who get this ampel
$new = false;
$overdue = false;
// get all user, who get this ampel
$result_ampel_user = $this->AmpelModel->execBenutzerSelect($qry_all_ampel_user);
if (hasData($result_ampel_user))
{
$ampel_user_arr = $result_ampel_user->retval;
// loop through all user, who get this ampel
foreach ($ampel_user_arr as $ampel_user)
{
$uid = $ampel_user->uid;
// break if ampel was almost confirmed by the user
if($this->AmpelModel->isConfirmed($ampel_id, $uid)) break;
// check if ampel is new (inserted within last week, as cronjob will run every week)
if ($now->diff($insert_date)->days <= 7) $new = true;
//check if ampel is overdue
if ($now > $deadline) $overdue = true;
// if ampel is new
if ($new)
{
$html_text = '<p><strong>'. strtoupper($ampel->kurzbz). '</strong></p><br>';
// create template-specific data array of new notifications
// if uid already exists in the array, only the html text will be added to the existing html text
$new_ampel_data_arr =
$this->_getAmpelContentData($uid, $html_text, $new_ampel_data_arr);
}
// if ampel is overdue
if ($overdue)
{
$html_text = '
<p><strong>'. strtoupper($ampel->kurzbz). '</strong><br>
<small>
<i style="color: #65696E;">Die Deadline für die Bestätigung war am
<span style="color: #FF0000;">'. date_format($deadline, 'Y-m-d'). '</span>
</i>
</small></p><br>';
// create template-specific data array of overdue notifications
// if uid already exists in the array, only the html text will be added to the existing html text
$overdue_ampel_data_arr =
$this->_getAmpelContentData($uid, $html_text, $overdue_ampel_data_arr);
}
}
}
elseif (isError($result_ampel_user))
{
show_error($result_ampel_user->error);
}
}
}
elseif (isError($result_active_ampeln))
{
show_error($result_active_ampeln->error);
}
// Send mails for new ampeln merged by user
foreach ($new_ampel_data_arr as $new_ampel_data)
{
sendMail(
'Sancho_Content_AmpelNeu',
$new_ampel_data,
$new_ampel_data['uid']. '@'. DOMAIN,
'Du hast eine neue Ampel!',
'sancho_header_neue_nachrichten_in_ampelsystem.jpg'
);
};
// Send mails for overdue ampeln merged by user
foreach ($overdue_ampel_data_arr as $overdue_ampel_data)
{
sendMail(
'Sancho_Content_AmpelUeberfaellig',
$overdue_ampel_data,
$overdue_ampel_data['uid']. '@'. DOMAIN,
'Bestätige bitte Deine Ampel!',
'sancho_header_ampel_overdue.jpg'
);
};
}
// ------------------------------------------------------------------------
// Private methods
/**
* Returns associative array with data as needed in the ampel content templates.
* @param string $uid UID, needed to merge user.
* @param string $html_text Specific HTML Content to be set initially for a user or to add if user exists.
* @param array $ampel_data_arr Array with ampeln.
* @return array
*/
private function _getAmpelContentData($uid, $html_text, $ampel_data_arr)
{
$firstName = $this->PersonModel->getByUid($uid)->retval[0]->vorname;
// check if user already exists in the array
$key_position = array_search($uid, array_column($ampel_data_arr, 'uid'));
// If user already exists in the array, add only new ampel data to users ampel list
if ($key_position !== false)
{
$ampel_data_arr[$key_position]['ampel_list'] .= $html_text;
}
// If user does not exist, create new user and push all data needed
else
{
$ampel_data_arr[] = array(
'uid' => $uid,
'firstName' => $firstName,
'ampel_list' => $html_text,
'link' => self::CIS_AMPELVERWALTUNG_URL
);
}
return $ampel_data_arr;
}
}
@@ -39,7 +39,7 @@ class Prestudentstatus extends FHC_Controller
public function index()
{
$result = "The following are the available command line interface commands\n\n";
$result .= "php index.ci.php jobs/Prestudentstatus CorrectStudienplan";
$result .= "php ".$this->config->item('index_page')." jobs/Prestudentstatus CorrectStudienplan";
echo $result.PHP_EOL;
}
+42 -138
View File
@@ -3,178 +3,82 @@
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
*
* This controller operates between (interface) the JS (GUI) and the NavigationLib (back-end)
* Provides data to the ajax get calls about the filter
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
*/
class Navigation extends VileSci_Controller
class Navigation extends FHC_Controller
{
const SESSION_NAME = 'NAVIGATION_MENU';
const NAVIGATION_PAGE_PARAM = 'navigation_page'; // Navigation page parameter name
/**
* Constructor
* Loads the NavigationLib where the used logic lies
*/
public function __construct()
{
parent::__construct();
parent::__construct(); // parents constructor
$this->config->load('navigation');
// Load session library
$this->load->library('session');
$this->load->library('ExtensionsLib');
$this->_loadNavigationLib(); // Loads the NavigationLib with parameters
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* This function creates the left Menu for each Page
* @param navigation_widget_called GET Parameter witch holds the currently called Page
* @param NAVIGATION_PAGE_PARAM GET Parameter witch holds the currently called Page
* @return JSON object with the Menu Entries
*/
public function menu()
{
$navigation_widget_called = $this->input->get('navigation_widget_called');
$json = array();
$menuArray = $this->navigationlib->getMenuArray($this->input->get(self::NAVIGATION_PAGE_PARAM));
if (isset($navigation_widget_called))
{
// Get Menu Entries of the Core
$navigationMenuArray = $this->config->item('navigation_menu');
$json = $this->wildcardsearch($navigationMenuArray, $navigation_widget_called);
// Load Menu Entries of Extensions
$extensions = $this->extensionslib->getInstalledExtensions();
if(hasData($extensions))
{
$json_extension = array();
foreach($extensions->retval as $ext)
{
$filename = APPPATH.'config/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$ext->name.'/navigation.php';
if (file_exists($filename))
{
unset($config);
include($filename);
if(isset($config['navigation_menu']) && is_array($config['navigation_menu']))
{
$json_extension = array_merge_recursive($json_extension, $this->wildcardsearch($config['navigation_menu'], $navigation_widget_called));
}
}
}
// Merge Extension Menuentries with the Core Entries
$json = array_merge_recursive($json, $json_extension);
}
// Load dynamic Menu Entries from Session
if (isset($_SESSION['navigation_menu']))
{
$navigationMenuSessionArray = $_SESSION['navigation_menu'];
if (isset($navigationMenuSessionArray) && is_array($navigationMenuSessionArray))
{
if (isset($navigationMenuSessionArray[$navigation_widget_called]))
{
$json = array_merge_recursive($json, $navigationMenuSessionArray[$navigation_widget_called]);
}
}
}
}
$this->output->set_content_type('application/json')->set_output(json_encode($json));
$this->outputJsonSuccess($menuArray);
}
/**
* This function creates the Top Menu for each Page
* @param navigation_widget_called GET Parameter witch holds the currently called Page
* @param NAVIGATION_PAGE_PARAM GET Parameter witch holds the currently called Page
* @return JSON object with the Menu Entries
*/
public function header()
{
$navigation_widget_called = $this->input->get('navigation_widget_called');
$json = array();
$headerArray = $this->navigationlib->getHeaderArray($this->input->get(self::NAVIGATION_PAGE_PARAM));
if (isset($navigation_widget_called))
{
// Load Header Entries of Core
$navigationHeaderArray = $this->config->item('navigation_header');
$json = $this->wildcardsearch($navigationHeaderArray, $navigation_widget_called);
// Load Header Entries of Extensions
$extensions = $this->extensionslib->getInstalledExtensions();
if(hasData($extensions))
{
$json_extension = array();
foreach($extensions->retval as $ext)
{
$filename = APPPATH.'config/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$ext->name.'/navigation.php';
if (file_exists($filename))
{
unset($config);
include($filename);
if(isset($config['navigation_header']) && is_array($config['navigation_header']))
{
$json_extension = array_merge_recursive($json_extension, $this->wildcardsearch($config['navigation_header'], $navigation_widget_called));
}
}
}
$json = array_merge_recursive($json, $json_extension);
}
// Load dynamic Header Entries from Session
if (isset($_SESSION['navigation_header']))
{
$navigationHeaderSessionArray = $_SESSION['navigation_header'];
if (isset($navigationHeaderSessionArray) && is_array($navigationHeaderSessionArray))
{
if (isset($navigationHeaderSessionArray[$navigation_widget_called]))
{
$jsontmp = $this->wildcardsearch($navigationHeaderSessionArray, $navigation_widget_called);
$json = array_merge_recursive($json, $jsontmp);
}
}
}
}
$this->output->set_content_type('application/json')->set_output(json_encode($json));
$this->outputJsonSuccess($headerArray);
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Searches a Menuentry. If there is no exact entry it searches for Wildcard Entries with a Star
* Example:
* Searching for /system/foo/index will Match the following Menuentries:
* /system/foo/index
* /system/foo/*
* /system/*
* *
*
* @param $navigationArray Array to Search in.
* @param $navigation_widget_called Navigation to search for.
* @return Navigation Array if found, empty array otherwise
* Loads the FiltersLib with the NAVIGATION_PAGE_PARAM parameter
* If the parameter NAVIGATION_PAGE_PARAM is not given then the execution of the controller is terminated and
* an error message is printed
*/
private function wildcardsearch($navigationArray, $navigation_widget_called)
private function _loadNavigationLib()
{
// Sort Navigation to have them in correct order
krsort($navigationArray);
// 100% match found
if(isset($navigationArray[$navigation_widget_called]))
// If the parameter NAVIGATION_PAGE_PARAM is present in the HTTP GET or POST
if (isset($_GET[self::NAVIGATION_PAGE_PARAM]) || isset($_POST[self::NAVIGATION_PAGE_PARAM]))
{
return $navigationArray[$navigation_widget_called];
}
else
{
foreach($navigationArray as $key=>$row)
// If it is present in the HTTP GET
if (isset($_GET[self::NAVIGATION_PAGE_PARAM]))
{
// Search for * Entries
if(mb_strpos($key, '*') === 0 || mb_strpos($key, '*') === mb_strlen($key) - 1)
{
// Take * Entry if Matches
$search = mb_substr($key, 0, -1);
if($search == '' || mb_strpos($navigation_widget_called, $search) === 0)
{
return $row;
}
}
$navigationPage = $this->input->get(self::NAVIGATION_PAGE_PARAM); // is retrived from the HTTP GET
}
elseif (isset($_POST[self::NAVIGATION_PAGE_PARAM])) // Else if it is present in the HTTP POST
{
$navigationPage = $this->input->post(self::NAVIGATION_PAGE_PARAM); // is retrived from the HTTP POST
}
}
return array();
// Loads the FiltersLib that contains all the used logic
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE_PARAM => $navigationPage));
}
else // Otherwise an error will be written in the output
{
// NOTE: Used echo to speed up the output before the exit otherwise it's not shown
echo 'Parameter "'.self::NAVIGATION_PAGE_PARAM.'" not provided!';
exit;
}
}
}
@@ -3,7 +3,7 @@
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Also shows infocenter-related data for a person and its prestudents, enables document and zgv checks,
* Shows infocenter-related data for a person and its prestudents, enables document and zgv checks,
* displays and saves Notizen for a person, logs infocenter-related actions for a person
*/
class InfoCenter extends FHC_Controller
@@ -11,13 +11,19 @@ class InfoCenter extends FHC_Controller
// App and Verarbeitungstaetigkeit name for logging
const APP = 'infocenter';
const TAETIGKEIT = 'bewerbung';
const FILTER_ID = 'filter_id';
// URL prefix for this controller
const URL_PREFIX = '/system/infocenter/InfoCenter';
const INFOCENTER_URI = 'system/infocenter/InfoCenter'; // URL prefix for this controller
const INDEX_PAGE = 'index';
const FREIGEGEBEN_PAGE = 'freigegeben';
const SHOW_DETAILS_PAGE = 'showDetails';
const NAVIGATION_PAGE = 'navigation_page';
const ORIGIN_PAGE = 'origin_page';
private $_uid; // contains the UID of the logged user
// Used to log with PersonLogLib
private $logparams = array(
private $_logparams = array(
'saveformalgep' => array(
'logtype' => 'Action',
'name' => 'Document formally checked',
@@ -53,7 +59,6 @@ class InfoCenter extends FHC_Controller
'success' => null
)
);
private $uid; // contains the UID of the logged user
/**
* Constructor
@@ -74,7 +79,6 @@ class InfoCenter extends FHC_Controller
$this->load->model('system/personLock_model', 'PersonLockModel');
// Loads libraries
$this->load->library('DmsLib');
$this->load->library('PersonLogLib');
$this->load->library('WidgetLib');
@@ -96,34 +100,42 @@ class InfoCenter extends FHC_Controller
show_error('You have no Permission! You need Infocenter Role');
$this->setControllerId(); // sets the controller id
$this->fhc_controller_id = $this->getControllerId();
$this->setNavigationMenuArray(); // sets property navigationMenuArray
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Default
* Main page of the InfoCenter tool
*/
public function index()
{
$this->load->view('system/infocenter/infocenter.php', array('fhc_controller_id' => $this->fhc_controller_id));
}
$this->_setNavigationMenuIndex(); // define the navigation menu for this page
public function infocenterFreigegeben()
{
$this->load->view('system/infocenter/infocenterFreigegeben.php', array('fhc_controller_id' => $this->fhc_controller_id));
$this->load->view('system/infocenter/infocenter.php');
}
/**
* Freigegeben page of the InfoCenter tool
*/
public function freigegeben()
{
$this->_setNavigationMenuFreigegeben(); // define the navigation menu for this page
$this->load->view('system/infocenter/infocenterFreigegeben.php');
}
/**
* Personal details page of the InfoCenter tool
* Initialization function, gets person and prestudent data and loads the view with the data
* @param $person_id
*/
public function showDetails($person_id)
public function showDetails()
{
$this->_setNavigationMenuShowDetails();
$person_id = $this->input->get('person_id');
if (!is_numeric($person_id))
show_error('person id is not numeric!');
@@ -135,13 +147,11 @@ class InfoCenter extends FHC_Controller
if (empty($personexists->retval))
show_error('person does not exist!');
$show_lock_link_get = $this->input->get('show_lock_link');
$show_lock_link = !isset($show_lock_link_get) || $show_lock_link_get === '1';
if ($show_lock_link)
$origin_page = $this->input->get(self::ORIGIN_PAGE);
if ($origin_page == self::INDEX_PAGE)
{
//mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP);
// mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->_uid, self::APP);
if (isError($result))
show_error($result->retval);
@@ -152,11 +162,11 @@ class InfoCenter extends FHC_Controller
$data = array_merge(
$persondata,
$prestudentdata,
array('show_lock_link' => $show_lock_link)
$prestudentdata
);
$data['fhc_controller_id'] = $this->fhc_controller_id;
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
$data[self::ORIGIN_PAGE] = $origin_page;
$this->load->view('system/infocenter/infocenterDetails.php', $data);
}
@@ -172,7 +182,7 @@ class InfoCenter extends FHC_Controller
if (isError($result))
show_error($result->retval);
redirect(self::URL_PREFIX.'?fhc_controller_id='.$this->fhc_controller_id);
redirect('/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId());
}
/**
@@ -211,9 +221,7 @@ class InfoCenter extends FHC_Controller
}
}
$this->output
->set_content_type('application/json')
->set_output(json_encode($json));
$this->output->set_content_type('application/json')->set_output(json_encode($json));
}
/**
@@ -224,9 +232,7 @@ class InfoCenter extends FHC_Controller
{
$prestudent = $this->PrestudentModel->getLastPrestudent($person_id, true);
$this->output
->set_content_type('application/json')
->set_output(json_encode($prestudent));
$this->output->set_content_type('application/json')->set_output(json_encode($prestudent));
}
/**
@@ -305,9 +311,7 @@ class InfoCenter extends FHC_Controller
$this->_log($logdata['person_id'], 'savezgv', array($logdata['studiengang_kurzbz'], $prestudent_id));
}
}
$this->output
->set_content_type('application/json')
->set_output(json_encode($result));
$this->output->set_content_type('application/json')->set_output(json_encode($result));
}
/**
@@ -318,7 +322,6 @@ class InfoCenter extends FHC_Controller
public function saveAbsage($prestudent_id)
{
$statusgrund = $this->input->post('statusgrund');
$this->fhc_controller_id = $this->input->post('fhc_controller_id');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
@@ -340,7 +343,7 @@ class InfoCenter extends FHC_Controller
'studienplan_id' => $lastStatus->retval[0]->studienplan_id,
'status_kurzbz' => 'Abgewiesener',
'statusgrund_id' => $statusgrund,
'insertvon' => $this->uid,
'insertvon' => $this->_uid,
'insertamum' => date('Y-m-d H:i:s')
)
);
@@ -396,9 +399,9 @@ class InfoCenter extends FHC_Controller
'ausbildungssemester' => $lastStatus->ausbildungssemester
),
array(
'bestaetigtvon' => $this->uid,
'bestaetigtvon' => $this->_uid,
'bestaetigtam' => date('Y-m-d'),
'updatevon' => $this->uid,
'updatevon' => $this->_uid,
'updateamum' => date('Y-m-d H:i:s')
)
);
@@ -454,16 +457,14 @@ class InfoCenter extends FHC_Controller
$text = $this->input->post('notiz');
$erledigt = false;
$result = $this->NotizModel->addNotizForPerson($person_id, $titel, $text, $erledigt, $this->uid);
$result = $this->NotizModel->addNotizForPerson($person_id, $titel, $text, $erledigt, $this->_uid);
if (isSuccess($result))
{
$this->_log($person_id, 'savenotiz', array($titel));
}
$this->output
->set_content_type('application/json')
->set_output(json_encode($result));
$this->output->set_content_type('application/json')->set_output(json_encode($result));
}
/**
@@ -482,9 +483,9 @@ class InfoCenter extends FHC_Controller
array(
'titel' => $titel,
'text' => $text,
'verfasser_uid' => $this->uid,
'verfasser_uid' => $this->_uid,
"updateamum" => 'NOW()',
"updatevon" => $this->uid
"updatevon" => $this->_uid
)
);
@@ -494,9 +495,7 @@ class InfoCenter extends FHC_Controller
$this->_log($person_id, 'updatenotiz', array($titel));
}
$this->output
->set_content_type('application/json')
->set_output(json_encode($result));
$this->output->set_content_type('application/json')->set_output(json_encode($result));
}
/**
@@ -531,6 +530,8 @@ class InfoCenter extends FHC_Controller
*/
public function outputAkteContent($akte_id)
{
$this->load->library('DmsLib');
$akte = $this->AkteModel->load($akte_id);
if (isError($akte))
@@ -561,9 +562,7 @@ class InfoCenter extends FHC_Controller
{
$result = $this->personloglib->getParkedDate($person_id);
$this->output
->set_content_type('application/json')
->set_output(json_encode($result));
$this->output->set_content_type('application/json')->set_output(json_encode($result));
}
/**
@@ -574,11 +573,9 @@ class InfoCenter extends FHC_Controller
$person_id = $this->input->post('person_id');
$date = $this->input->post('parkdate');
$result = $this->personloglib->park($person_id, date_format(date_create($date), 'Y-m-d'), self::TAETIGKEIT, self::APP, null, $this->uid);
$result = $this->personloglib->park($person_id, date_format(date_create($date), 'Y-m-d'), self::TAETIGKEIT, self::APP, null, $this->_uid);
$this->output
->set_content_type('application/json')
->set_output(json_encode($result));
$this->output->set_content_type('application/json')->set_output(json_encode($result));
}
/**
@@ -590,9 +587,7 @@ class InfoCenter extends FHC_Controller
$result = $this->personloglib->unPark($person_id);
$this->output
->set_content_type('application/json')
->set_output(json_encode($result));
$this->output->set_content_type('application/json')->set_output(json_encode($result));
}
/**
@@ -611,9 +606,26 @@ class InfoCenter extends FHC_Controller
$json = $result->retval[0]->ende;
}
$this->output
->set_content_type('application/json')
->set_output(json_encode($json));
$this->output->set_content_type('application/json')->set_output(json_encode($json));
}
/**
* Wrapper for setNavigationMenu, returns JSON message
*/
public function setNavigationMenuArrayJson()
{
$navigation_page = $this->input->get(self::NAVIGATION_PAGE);
if (strpos($navigation_page, self::INDEX_PAGE) !== false)
{
$this->_setNavigationMenuIndex();
}
else
{
$this->_setNavigationMenuFreigegeben();
}
$this->outputJsonSuccess('success');
}
// -----------------------------------------------------------------------------------------------------------------
@@ -624,18 +636,21 @@ class InfoCenter extends FHC_Controller
*/
private function _setAuthUID()
{
$this->uid = getAuthUID();
$this->_uid = getAuthUID();
if (!$this->uid) show_error('User authentification failed');
if (!$this->_uid) show_error('User authentification failed');
}
/**
*
* Define the navigation menu for the index page
*/
public function setNavigationMenuArray()
private function _setNavigationMenuIndex()
{
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.self::INDEX_PAGE));
$listFiltersSent = array();
$listFiltersNotSent = array();
$listCustomFilters = array();
$filtersSent = $this->FiltersModel->getFilterList('infocenter', 'PersonActions', '%InfoCenterSentApplication%');
if (hasData($filtersSent))
@@ -659,7 +674,7 @@ class InfoCenter extends FHC_Controller
}
}
$customFilters = $this->FiltersModel->getCustomFiltersList('infocenter', 'PersonActions', $this->uid);
$customFilters = $this->FiltersModel->getCustomFiltersList('infocenter', 'PersonActions', $this->_uid);
if (hasData($customFilters))
{
for ($filtersCounter = 0; $filtersCounter < count($customFilters->retval); $filtersCounter++)
@@ -670,95 +685,203 @@ class InfoCenter extends FHC_Controller
}
}
$filtersarray = array(
'abgeschickt' => array(
'link' => '#',
'description' => ucfirst($this->p->t('global', 'abgeschickt')),
'expand' => true,
'children' => array()
),
'nichtabgeschickt' => array(
'link' => '#',
'description' => ucfirst($this->p->t('global', 'nichtAbgeschickt')),
'expand' => true,
'children' => array()
)
$filtersArray = array();
$filtersArray['abgeschickt'] = $this->navigationlib->oneLevel(
ucfirst($this->p->t('global', 'abgeschickt')), // description
'#', // link
array(), // children
'', // icon
true // expand
);
$this->_fillFilters($listFiltersSent, $filtersarray['abgeschickt']);
$this->_fillFilters($listFiltersNotSent, $filtersarray['nichtabgeschickt']);
$filtersArray['nichtabgeschickt'] = $this->navigationlib->oneLevel(
ucfirst($this->p->t('global', 'nichtAbgeschickt')), // description
'#', // link
array(), // children
'', // icon
true // expand
);
if (isset($listCustomFilters) && is_array($listCustomFilters) && count($listCustomFilters) > 0)
$this->_fillFilters($listFiltersSent, $filtersArray['abgeschickt']);
$this->_fillFilters($listFiltersNotSent, $filtersArray['nichtabgeschickt']);
if (count($listCustomFilters) > 0)
{
$filtersarray['personal'] = array(
'link' => '#',
'description' => 'Personal filters',
'expand' => true,
'children' => array()
$filtersArray['personal'] = $this->navigationlib->oneLevel(
'Personal filters', // description
'#', // link
array(), // children
'', // icon
true // expand
);
$this->_fillCustomFilters($listCustomFilters, $filtersarray['personal']);
$this->_fillCustomFilters($listCustomFilters, $filtersArray['personal']);
}
if (!isset($_SESSION['navigation_menu']))
{
$_SESSION['navigation_menu'] = array();
}
$_SESSION['navigation_menu']['system/infocenter/InfoCenter/index'] = array(
'filters' => array(
'link' => '#',
'description' => 'Filter',
'icon' => 'filter',
'expand' => true,
'children' => $filtersarray
)
);
$_SESSION['navigation_menu']['system/infocenter/InfoCenter/showDetails'] = array(
'filters' => array(
'link' => '#',
'description' => 'Filter',
'icon' => 'filter',
'expand' => true,
'children' => $filtersarray
$this->navigationlib->setSessionMenu(
array(
'filters' => $this->navigationlib->oneLevel(
'Filter', // description
'#', // link
$filtersArray, // children
'', // icon
true // expand
)
)
);
}
/**
* Wrapper for setNavigationMenu, returns JSON message
* Define the navigation menu for the showDetails page
*/
public function setNavigationMenuArrayJson()
private function _setNavigationMenuShowDetails()
{
$this->setNavigationMenuArray();
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.self::SHOW_DETAILS_PAGE));
$this->output
->set_content_type('application/json')
->set_output(json_encode(success('success')));
$origin_page = $this->input->get(self::ORIGIN_PAGE);
$link = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE);
if ($origin_page == self::FREIGEGEBEN_PAGE)
{
$link = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
}
$this->navigationlib->setSessionMenu(
array(
'back' => $this->navigationlib->oneLevel(
'<< Züruck', // description
$link, // link
array(), // children
'', // icon
true // expand
)
)
);
}
/**
* Define the navigation menu for the freigegeben page
*/
private function _setNavigationMenuFreigegeben()
{
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE));
$listFilters = array();
$listCustomFilters = array();
$filters = $this->FiltersModel->getFilterList('infocenter', 'PersonActions', '%InfoCenterFreigegeben%');
if (hasData($filters))
{
for ($filtersCounter = 0; $filtersCounter < count($filters->retval); $filtersCounter++)
{
$filter = $filters->retval[$filtersCounter];
$listFilters[$filter->filter_id] = $filter->description[0];
}
}
$customFilters = $this->FiltersModel->getCustomFiltersList('infocenter', 'PersonActions', $this->_uid);
if (hasData($customFilters))
{
for ($filtersCounter = 0; $filtersCounter < count($customFilters->retval); $filtersCounter++)
{
$filter = $customFilters->retval[$filtersCounter];
$listCustomFilters[$filter->filter_id] = $filter->description[0];
}
}
$filtersArray = array();
$filtersArray['children'] = array();
$this->_fillFiltersFreigegeben($listFilters, $filtersArray);
if (count($listCustomFilters) > 0)
{
$filtersArray['children']['personal'] = $this->navigationlib->oneLevel(
'Personal filters', // description
'#', // link
array(), // children
'', // icon
true // expand
);
$this->_fillCustomFilters($listCustomFilters, $filtersArray['children']['personal']);
}
$this->navigationlib->setSessionMenu(
array(
'filters' => $this->navigationlib->oneLevel(
'Filter', // description
'#', // link
$filtersArray['children'], // children
'', // icon
true // expand
)
)
);
}
/**
* Utility method used to fill elements of the InfoCenter left menu of the main InfoCenter page
*/
private function _fillFilters($filters, &$tofill)
{
$toPrint = "%s?%s=%s&%s=%s";
foreach ($filters as $filterId => $description)
{
$toPrint = "%s?%s=%s";
$tofill['children'][] = array(
'link' => sprintf($toPrint, site_url('system/infocenter/InfoCenter'), 'filter_id', $filterId),
'link' => sprintf(
$toPrint,
site_url(self::INFOCENTER_URI), 'filter_id', $filterId,
FHC_Controller::FHC_CONTROLLER_ID,
$this->getControllerId()
),
'description' => $description
);
}
}
private function _fillCustomFilters($filters, &$tofill)
/**
* Utility method used to fill elements of the InfoCenter left menu of the freigegeben InfoCenter page
*/
private function _fillFiltersFreigegeben($filters, &$tofill)
{
$toPrint = "%s?%s=%s&%s=%s";
foreach ($filters as $filterId => $description)
{
$toPrint = "%s?%s=%s";
$tofill['children'][] = array(
'link' => sprintf($toPrint, site_url('system/infocenter/InfoCenter'), 'filter_id', $filterId),
'link' => sprintf(
$toPrint,
site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE), 'filter_id', $filterId,
FHC_Controller::FHC_CONTROLLER_ID,
$this->getControllerId()
),
'description' => $description
);
}
}
/**
* Utility method used to fill elements of the InfoCenter left menu
* with the list of the custom filter of the authenticated user
*/
private function _fillCustomFilters($filters, &$tofill)
{
$toPrint = "%s?%s=%s&%s=%s";
foreach ($filters as $filterId => $description)
{
$tofill['children'][] = array(
'link' => sprintf(
$toPrint,
site_url(self::INFOCENTER_URI), 'filter_id', $filterId,
FHC_Controller::FHC_CONTROLLER_ID,
$this->getControllerId()
),
'description' => $description,
'subscriptDescription' => 'Remove',
'subscriptLinkClass' => 'remove-custom-filter',
@@ -789,7 +912,7 @@ class InfoCenter extends FHC_Controller
if (isset($locked->retval[0]->uid))
{
$lockedby = $locked->retval[0]->uid;
if ($lockedby !== $this->uid)
if ($lockedby !== $this->_uid)
$lockedbyother = true;
}
@@ -840,7 +963,7 @@ class InfoCenter extends FHC_Controller
show_error($notizen_bewerbung->retval);
}
$user_person = $this->PersonModel->getByUid($this->uid);
$user_person = $this->PersonModel->getByUid($this->_uid);
if (isError($user_person))
{
@@ -949,7 +1072,18 @@ class InfoCenter extends FHC_Controller
$this->PrestudentModel->addSelect('person_id');
$person_id = $this->PrestudentModel->load($prestudent_id)->retval[0]->person_id;
redirect(self::URL_PREFIX.'/showDetails/'.$person_id.'?fhc_controller_id='.$this->fhc_controller_id.'#'.$section);
redirect(
sprintf(
'/%s/%s?%s=%s&%s=%s#%s',
self::INFOCENTER_URI,
self::SHOW_DETAILS_PAGE,
'person_id',
$person_id,
self::FHC_CONTROLLER_ID,
$this->getControllerId(),
$section
)
);
}
/**
@@ -981,7 +1115,7 @@ class InfoCenter extends FHC_Controller
*/
private function _log($person_id, $logname, $messageparams)
{
$logdata = $this->logparams[$logname];
$logdata = $this->_logparams[$logname];
$datatolog = array(
'name' => $logdata['name']
@@ -1000,7 +1134,7 @@ class InfoCenter extends FHC_Controller
self::TAETIGKEIT,
self::APP,
null,
$this->uid
$this->_uid
);
}