diff --git a/application/config/constants.php b/application/config/constants.php
index ac2ecc649..621f58ecb 100644
--- a/application/config/constants.php
+++ b/application/config/constants.php
@@ -64,7 +64,9 @@ define('LDAP_TOO_MANY_USER_DN', 11);
|--------------------------------------------------------------------------
*/
define('LANG_SESSION_NAME', 'LANGUAGE');
-define('LANG_SESSION_INDEXES', 'LANGUAGE_INDEXES');
+define('LANG_SESSION_INDEXES', 'INDEXES');
+define('LANG_SESSION_ACTIVE_LANGUAGES', 'ACTIVE_LANGUAGES');
+define('LANG_SESSION_CURRENT_LANGUAGE', 'sprache'); // NOTE: it is not under LANG_SESSION_NAME
/*
|--------------------------------------------------------------------------
diff --git a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
index 3c0808d42..dade1fb21 100644
--- a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
+++ b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php
@@ -26,7 +26,7 @@ class Lehrauftrag extends Auth_Controller
array(
'index' => 'lehre/lehrauftrag_bestellen:r',
'orderLehrauftrag' => 'lehre/lehrauftrag_bestellen:rw',
- 'Dashboard' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:rw'),
+ 'Dashboard' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:r'),
'LehrendeUebersicht' => array('lehre/lehrauftrag_erteilen:r')
)
);
@@ -107,7 +107,7 @@ class Lehrauftrag extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
- $studiensemester = $this->StudiensemesterModel->getNext();
+ $studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
diff --git a/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php b/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php
index b2282f6f2..4fc0a879b 100644
--- a/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php
+++ b/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php
@@ -71,7 +71,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
- $studiensemester = $this->StudiensemesterModel->getNext();
+ $studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
diff --git a/application/controllers/lehre/lehrauftrag/LehrauftragErteilen.php b/application/controllers/lehre/lehrauftrag/LehrauftragErteilen.php
index b70b6e2f9..b339c81a4 100644
--- a/application/controllers/lehre/lehrauftrag/LehrauftragErteilen.php
+++ b/application/controllers/lehre/lehrauftrag/LehrauftragErteilen.php
@@ -90,7 +90,7 @@ class LehrauftragErteilen extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
- $studiensemester = $this->StudiensemesterModel->getNext();
+ $studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
diff --git a/application/controllers/widgets/Language.php b/application/controllers/widgets/Language.php
new file mode 100644
index 000000000..8269d3b2d
--- /dev/null
+++ b/application/controllers/widgets/Language.php
@@ -0,0 +1,31 @@
+input->post('language');
+
+ $this->outputJson(setUserLanguage($language));
+ }
+}
diff --git a/application/core/FHC_Controller.php b/application/core/FHC_Controller.php
index 234cf6a6f..93c324b21 100644
--- a/application/core/FHC_Controller.php
+++ b/application/core/FHC_Controller.php
@@ -21,6 +21,9 @@ abstract class FHC_Controller extends CI_Controller
{
parent::__construct();
+ // NOTE: placed here before performing anything else!!!
+ $this->_checkHTTPS();
+
$this->_controllerId = null; // set _controllerId as null by default
// Loads helper message to manage returning messages
@@ -129,4 +132,20 @@ abstract class FHC_Controller extends CI_Controller
{
$this->output->set_content_type('application/json')->set_output(json_encode($mixed));
}
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Private methods
+
+ /**
+ * Checks if the call is performed via web and if HTTPS is enabled and used
+ * If NOT then an error is raised and the execution is terminated
+ */
+ private function _checkHTTPS()
+ {
+ // If NOT called from command line and if the HTTPS protocol is NOT enabled
+ if (!$this->input->is_cli_request() && !isset($_SERVER['HTTPS']))
+ {
+ show_error('This web site cannot work correctly without the HTTPS protocol enabled');
+ }
+ }
}
diff --git a/application/helpers/hlp_language_helper.php b/application/helpers/hlp_language_helper.php
index 4dfb53c7b..1678a4102 100644
--- a/application/helpers/hlp_language_helper.php
+++ b/application/helpers/hlp_language_helper.php
@@ -18,28 +18,48 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Function to retrieve the language of the logged user
- * If is not possible to retrieve it, then the default system language is returnd
- * If as parameter is given a valid language the it's returned useful to avoid
- * to write the same control structures for the language
+ * If is not possible to retrieve it, then the default system language is returned
+ * NOTE: If the given parameter is a valid language then it is returned
+ * It is useful to avoid to write a lot of "if else" structures
*/
function getUserLanguage($language = null)
{
+ // If the given parameter is a valid language then return it
if (!isEmptyString($language)) return $language;
- $ci =& get_instance(); // get CI instance
-
- // Use the default system language, if it's possible retrieves the language for the logged user
+ // Use the default system language as fallback
$language = DEFAULT_LANGUAGE;
- // Checks if the user is authenticated to retrieve the users's language
- // NOTE: this helper could be called when the user is not logged in the system
- // so this is why is checked if the function getAuthUID exists
- if (function_exists('getAuthUID'))
+
+ // If the language is present in the session and it is valid
+ if (isset($_SESSION[LANG_SESSION_CURRENT_LANGUAGE]) && !isEmptyString($_SESSION[LANG_SESSION_CURRENT_LANGUAGE]))
{
+ $language = $_SESSION[LANG_SESSION_CURRENT_LANGUAGE]; // then use it
+ }
+ // Otherwise checks if the user is authenticated to retrieve the users's language
+ // NOTE: this helper could be called when the user is NOT logged in the system
+ // therefore is checked if the user is logged
+ elseif (isLogged())
+ {
+ $ci =& get_instance(); // get CI instance
+
// NOTE: Stores the loaded model with the alias PersonModelLanguage to avoid to overwrite
// an already loaded PersonModel used somewhere else
$ci->load->model('person/Person_model', 'PersonModelLanguage');
- $language = $ci->PersonModelLanguage->getLanguage(getAuthUID());
+ // Retrieves language/s for the logged user
+ $languagesDB = $ci->PersonModelLanguage->getLanguage(getAuthUID());
+ if (hasData($languagesDB))
+ {
+ // Looks for the first valid language
+ foreach (getData($languagesDB) as $languageDB)
+ {
+ if (!isEmptyString($languageDB->sprache))
+ {
+ $language = $languageDB->sprache;
+ break;
+ }
+ }
+ }
}
return $language;
@@ -62,31 +82,21 @@ function getPhraseByLanguage($phraseLanguagesArray, $language)
$langArray = getSessionElement(LANG_SESSION_NAME, LANG_SESSION_INDEXES);
if ($langArray == null) // If not already loaded in session
{
- // Loads the Sprache_model to retrieve the language settings from the DB
- // NOTE: Stores the loaded model with the alias SpracheModelLanguage to avoid to overwrite
- // an already loaded SpracheModel used somewhere else
- $ci->load->model('system/Sprache_model', 'SpracheModelLanguage');
-
- // Add order clause by index and select only the sprache column
- $ci->SpracheModelLanguage->addOrder('index');
- $ci->SpracheModelLanguage->addSelect('sprache');
-
- // Retrieves from public.tbl_sprache
- $dbLanguages = $ci->SpracheModelLanguage->load();
+ // Retrieves active languages
+ $dbLanguages = getDBActiveLanguages();
if (hasData($dbLanguages)) // If everything is ok and contains data
{
$index = 0; // Incremental integer
- $languageIndexes = array(); // Array that will contains languages and their indexes
+ $langArray = array(); // Array that will contains languages and their indexes
// Loops through database results
foreach (getData($dbLanguages) as $dbLanguage)
{
- $languageIndexes[$dbLanguage->sprache] = $index++; // set $languageIndexes array elements
+ $langArray[$dbLanguage->sprache] = $index++; // set $languageIndexes array elements
}
}
- $langArray = $languageIndexes; // copy $languageIndexes to $langArray
- // Set session element $_SESSION['LANG']['LANG_INDEXES'] with $languageIndexes
+ // Set session element $_SESSION['LANG']['LANG_INDEXES'] with $langArray
setSessionElement(LANG_SESSION_NAME, LANG_SESSION_INDEXES, $langArray);
}
@@ -100,3 +110,78 @@ function getPhraseByLanguage($phraseLanguagesArray, $language)
return $phrase;
}
+
+/**
+ * Tries to load active languages from session, if not present then loads them from database and stores them in session
+ */
+function getActiveLanguages()
+{
+ $languagesArray = getSessionElement(LANG_SESSION_NAME, LANG_SESSION_ACTIVE_LANGUAGES);
+ if ($languagesArray == null)
+ {
+ $languagesArray = array();
+
+ // Retrieves from public.tbl_sprache
+ $dbLanguages = getDBActiveLanguages();
+ if (hasData($dbLanguages))
+ {
+ // Loops through database results
+ foreach (getData($dbLanguages) as $dbLanguage)
+ {
+ $languagesArray[$dbLanguage->sprache] = $dbLanguage->bezeichnung; // set $languageIndexes array elements
+ }
+ }
+
+ // Set session element $_SESSION['LANG']['LANG_SESSION_ACTIVE_LANGUAGES'] with $languagesArray
+ setSessionElement(LANG_SESSION_NAME, LANG_SESSION_ACTIVE_LANGUAGES, $languagesArray);
+ }
+
+ return $languagesArray;
+}
+
+/**
+ * Loads active languages from database
+ */
+function getDBActiveLanguages()
+{
+ $ci =& get_instance(); // get CI instance
+
+ // Loads the Sprache_model to retrieve the language settings from the DB
+ // NOTE: Stores the loaded model with the alias SpracheModelLanguage to avoid to overwrite
+ // an already loaded SpracheModel used somewhere else
+ $ci->load->model('system/Sprache_model', 'SpracheModelLanguage');
+
+ // Add order clause by index and select only the sprache column
+ $ci->SpracheModelLanguage->addOrder('index');
+ $ci->SpracheModelLanguage->addSelect('sprache, bezeichnung');
+
+ // Retrieves from public.tbl_sprache
+ return $ci->SpracheModelLanguage->loadWhere(array('content' => true));
+}
+
+/**
+ * Sets the current language to render the GUI in session
+ */
+function setUserLanguage($language)
+{
+ $languageValid = false;
+
+ // Checks if the given language is valid (present between active languages)
+ foreach (getActiveLanguages() as $languageName => $languageTranslation)
+ {
+ if ($language == $languageName)
+ {
+ $languageValid = true;
+ break;
+ }
+ }
+
+ if ($languageValid) // if the provided language is valid
+ {
+ $_SESSION[LANG_SESSION_CURRENT_LANGUAGE] = $language; // stores it in session
+
+ return success('Language successfully changed'); // return success!!
+ }
+
+ return error('The given language is not valid'); // return an error
+}
diff --git a/application/libraries/CryptLib.php b/application/libraries/CryptLib.php
new file mode 100644
index 000000000..ea19f3e5b
--- /dev/null
+++ b/application/libraries/CryptLib.php
@@ -0,0 +1,28 @@
+setBlockLength(256);
+ $cipher->setKey($key);
+
+ if ($paddingDisabled === true) $cipher->disablePadding();
+
+ return $cipher->encrypt($value);
+ }
+}
diff --git a/application/libraries/FilterWidgetLib.php b/application/libraries/FilterWidgetLib.php
index c2e57eed2..6e87833bd 100644
--- a/application/libraries/FilterWidgetLib.php
+++ b/application/libraries/FilterWidgetLib.php
@@ -101,7 +101,7 @@ class FilterWidgetLib
const FILTER_UNIQUE_ID = 'filterUniqueId'; // Filter page parameter name
const PERMISSION_FILTER_METHOD = 'FilterWidget'; // Name for fake method to be checked by the PermissionLib
- const PERMISSION_TYPE = 'rw';
+ const PERMISSION_TYPE = 'r';
// Name and array keys of the filters menu array
const NAV_MENU_FILTER_KEY = 'filters';
diff --git a/application/libraries/TableWidgetLib.php b/application/libraries/TableWidgetLib.php
index 139e5d6cb..dc746b6d5 100644
--- a/application/libraries/TableWidgetLib.php
+++ b/application/libraries/TableWidgetLib.php
@@ -66,7 +66,7 @@ class TableWidgetLib
const DATASET_REP_TABULATOR = 'tabulator';
const PERMISSION_TABLE_METHOD = 'TableWidget'; // Name for fake method to be checked by the PermissionLib
- const PERMISSION_TYPE = 'rw';
+ const PERMISSION_TYPE = 'r';
private $_ci; // Code igniter instance
private $_tableUniqueId; // unique id for this table widget
diff --git a/application/libraries/VariableLib.php b/application/libraries/VariableLib.php
index 3d732984f..2f038531b 100644
--- a/application/libraries/VariableLib.php
+++ b/application/libraries/VariableLib.php
@@ -57,7 +57,7 @@ class VariableLib
if (!isEmptyString($uid) && !isEmptyString($name) && is_numeric($change))
{
- $change = (int) $change;
+ $change = (int)$change;
$varres = $this->_ci->VariableModel->getVariables($uid, array($name));
if (isSuccess($varres))
diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php
index 9c1146632..388f77b0a 100644
--- a/application/models/person/Person_model.php
+++ b/application/models/person/Person_model.php
@@ -205,28 +205,12 @@ class Person_model extends DB_Model
*/
public function getLanguage($uid)
{
- $language = DEFAULT_LANGUAGE;
-
+ $this->addSelect('public.tbl_person.sprache');
$this->addJoin('public.tbl_benutzer', 'person_id');
+ $this->addJoin('public.tbl_sprache', 'sprache');
$this->addOrder('public.tbl_person.updateamum', 'DESC');
$this->addOrder('public.tbl_person.insertvon', 'DESC');
- $persons = $this->loadWhere(array('uid' => $uid));
-
- if (hasData($persons))
- {
- for ($i = 0; $i < count($persons->retval); $i++)
- {
- $person = $persons->retval[$i];
-
- if (!isEmptyString($person->sprache))
- {
- $language = $person->sprache;
- break;
- }
- }
- }
-
- return $language;
+ return $this->loadWhere(array('uid' => $uid, 'content' => true));
}
}
diff --git a/application/models/system/Variable_model.php b/application/models/system/Variable_model.php
index 1fcb5b274..875fc8876 100644
--- a/application/models/system/Variable_model.php
+++ b/application/models/system/Variable_model.php
@@ -24,30 +24,32 @@ class Variable_model extends DB_Model
*/
public function getVariables($uid, $names = null)
{
- if (isEmptyString($uid) || (isset($names) && !is_array($names)))
+ if (isEmptyString($uid))
$result = error('wrong parameters passed');
else
{
$vardata = array();
+ $parametersArray = array($uid);
$qry = "SELECT name, wert FROM public.tbl_variable WHERE uid = ?";
- if (isset($names))
+ if (!isEmptyArray($names))
{
- $qry .= " AND name IN ('".implode(',', $names)."')";
+ $qry .= " AND name IN ?";
+ $parametersArray[] = $names;
}
$qry .= ";";
- $varresults = $this->execQuery($qry, array($uid));
+ $varresults = $this->execQuery($qry, $parametersArray);
if (hasData($varresults))
{
$varresults = getData($varresults);
- foreach ($varresults as $varresult)
- {
- if (isset($varresult->wert))
- $vardata[$varresult->name] = $varresult->wert;
- }
+ foreach ($varresults as $varresult)
+ {
+ if (isset($varresult->wert))
+ $vardata[$varresult->name] = $varresult->wert;
+ }
}
$vardefaults = $this->VariablennameModel->getDefaults($names);
@@ -56,7 +58,6 @@ class Variable_model extends DB_Model
{
$vardefaults = getData($vardefaults);
-
foreach ($vardefaults as $vardefault)
{
if (!isset($vardata[$vardefault->name]) && isset($vardefault->defaultwert))
diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php
index 3c1327d5f..03ee011b7 100644
--- a/application/views/templates/FHC-Header.php
+++ b/application/views/templates/FHC-Header.php
@@ -18,6 +18,7 @@
$addons = isset($addons) ? $addons : false;
$ajaxlib = isset($ajaxlib) ? $ajaxlib : false;
$bootstrap = isset($bootstrap) ? $bootstrap : false;
+ $captcha = isset($captcha) ? $captcha : false;
$dialoglib = isset($dialoglib) ? $dialoglib : false;
$filterwidget = isset($filterwidget) ? $filterwidget : false;
$fontawesome = isset($fontawesome) ? $fontawesome : false;
@@ -62,12 +63,6 @@
// Font Awesome CSS
if ($fontawesome === true) generateCSSsInclude('vendor/components/font-awesome/css/font-awesome.min.css');
- // PivotUI CSS
- if ($pivotui === true)
- {
- generateCSSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.css');
- }
-
// SB Admin 2 template CSS
if ($sbadmintemplate === true)
{
@@ -75,6 +70,15 @@
generateCSSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/css/sb-admin-2.min.css');
}
+ // Securimage CSS
+ if ($captcha === true) generateCSSsInclude('vendor/dapphp/securimage/securimage.css');
+
+ // PivotUI CSS
+ if ($pivotui === true)
+ {
+ generateCSSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.css');
+ }
+
// Table sorter CSS
if ($tablesorter === true)
{
@@ -107,6 +111,9 @@
// Eventually required CSS
generateCSSsInclude($customCSSs); // Eventually required CSS
+ // CSS End
+ // --------------------------------------------------------------------------------------------------------
+
// --------------------------------------------------------------------------------------------------------
// Javascripts
@@ -132,19 +139,32 @@
}
// jQuery checkboxes
+ // NOTE: keep it after jQuery includes
if ($jquerycheckboxes === true)
{
generateJSsInclude('vendor/rmariuzzo/jquery-checkboxes/dist/jquery.checkboxes-1.0.7.min.js');
}
- // Bootstrap JS
- if ($bootstrap === true) generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js');
-
// jQuery treetable
// NOTE: keep it after jQuery includes
if ($jquerytreetable === true) generateJSsInclude('vendor/ludo/jquery-treetable/jquery.treetable.js');
- // MomentJS
+ // Bootstrap JS
+ if ($bootstrap === true) generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js');
+
+ // SB Admin 2 template JS
+ if ($sbadmintemplate === true)
+ {
+ generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/vendor/metisMenu/metisMenu.min.js');
+ generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/js/sb-admin-2.min.js');
+ generateBackwardCompatibleJSMsIe('vendor/afarkas/html5shiv/dist/html5shiv.min.js');
+ generateBackwardCompatibleJSMsIe('vendor/scottjehl/Respond/dest/respond.min.js');
+ }
+
+ // Securimage JS
+ if ($captcha === true) generateJSsInclude('vendor/dapphp/securimage/securimage.js');
+
+ // Moment JS
if ($momentjs === true)
{
generateJSsInclude('vendor/moment/momentjs/min/moment.min.js');
@@ -152,7 +172,7 @@
generateJSsInclude('vendor/moment/momentjs/locale/en-ie.js');
}
- // PivotUI CSS
+ // PivotUI JS
if ($pivotui === true)
{
generateJSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.js');
@@ -176,15 +196,6 @@
// Tinymce JS
if ($tinymce === true) generateJSsInclude('vendor/tinymce/tinymce/tinymce.min.js');
- // SB Admin 2 template JS
- if ($sbadmintemplate === true)
- {
- generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/vendor/metisMenu/metisMenu.min.js');
- generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/js/sb-admin-2.min.js');
- generateBackwardCompatibleJSMsIe('vendor/afarkas/html5shiv/dist/html5shiv.min.js');
- generateBackwardCompatibleJSMsIe('vendor/scottjehl/Respond/dest/respond.min.js');
- }
-
// --------------------------------------------------------------------------------------------------------
// From public folder
diff --git a/cis/index.php b/cis/index.php
index f9e18cbda..a6ec16786 100644
--- a/cis/index.php
+++ b/cis/index.php
@@ -70,13 +70,14 @@ if(defined('CIS_CHECK_PASSWORD_CHANGE') && CIS_CHECK_PASSWORD_CHANGE==true)
*/
function validURLCheck($param)
{
- if(strstr($param,':'))
+ if (strstr($param,':') || strstr($param,'//'))
{
// Der APP_ROOT muss in der URL vorkommen, sonfern es kein relativer Pfad ist
// HTTPS und HTTP
if(mb_strpos($param, APP_ROOT)!==0
&& mb_strpos(mb_str_replace("http://","https://", $param), APP_ROOT)!==0
- && mb_strpos(mb_str_replace("https://","http://", $param), APP_ROOT)!==0)
+ && mb_strpos(mb_str_replace("https://","http://", $param), APP_ROOT)!==0
+ && $param != 'about:blank')
{
$text="Dies ist eine automatische Mail.\nEs wurde eine mögliche XSS Attacke durchgefuehrt:\n";
$text.="\nFolgende URL wurde versucht aufzurufen: \n".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
diff --git a/cis/private/stud_in_grp.php b/cis/private/stud_in_grp.php
index abf3a67a1..d2f9e2d2c 100644
--- a/cis/private/stud_in_grp.php
+++ b/cis/private/stud_in_grp.php
@@ -183,7 +183,7 @@ else
AND studiengang_kz=".$db->db_add_param($_GET['kz']);
if (isset($_GET['sem']))
- $qry.=" AND semester=".$db->db_add_param($_GET['sem']);
+ $qry.=" AND semester=".$db->db_add_param($_GET['sem'], FHC_INTEGER);
if (isset($_GET['verband']))
$qry.=" AND verband=".$db->db_add_param($_GET['verband']);
diff --git a/cis/testtool/login.php b/cis/testtool/login.php
index e42a623b2..477901803 100644
--- a/cis/testtool/login.php
+++ b/cis/testtool/login.php
@@ -125,6 +125,9 @@ if (isset($_POST['prestudent']) && isset($gebdatum))
{
if($rt->freigeschaltet)
{
+ // regenerate Session ID after Login
+ session_regenerate_id();
+
$pruefling = new pruefling();
if($pruefling->getPruefling($ps->prestudent_id))
{
diff --git a/composer.json b/composer.json
index 2dfe2c38b..145927be0 100644
--- a/composer.json
+++ b/composer.json
@@ -254,6 +254,8 @@
"components/font-awesome": "4.*",
"components/angular.js": "1.3.*",
+ "dapphp/securimage": "3.6.7",
+
"easyrdf/easyrdf": "0.9.*",
"fzaninotto/faker": "1.*",
diff --git a/composer.lock b/composer.lock
index 9fc4fab12..d707ce776 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "59fc693321fbae0364ec7174a0d0dcb1",
- "content-hash": "b377fd50d87a28fdedf6214e4ffb6a6d",
+ "hash": "d9941245360c86434d18413999bdc812",
+ "content-hash": "fbeb5d4ef943f6d1d55220cb844d11f1",
"packages": [
{
"name": "BlackrockDigital/startbootstrap-sb-admin-2",
@@ -627,6 +627,55 @@
"description": "jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.",
"time": "2016-09-16 05:47:55"
},
+ {
+ "name": "dapphp/securimage",
+ "version": "3.6.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dapphp/securimage.git",
+ "reference": "1ecb884797c66e01a875c058def46c85aecea45b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dapphp/securimage/zipball/1ecb884797c66e01a875c058def46c85aecea45b",
+ "reference": "1ecb884797c66e01a875c058def46c85aecea45b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-gd": "*",
+ "php": ">=5.4"
+ },
+ "suggest": {
+ "ext-pdo": "For database storage support",
+ "ext-pdo_mysql": "For MySQL database support",
+ "ext-pdo_sqlite": "For SQLite3 database support"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "securimage.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Drew Phillips",
+ "email": "drew@drew-phillips.com"
+ }
+ ],
+ "description": "PHP CAPTCHA Library",
+ "homepage": "https://www.phpcaptcha.org",
+ "keywords": [
+ "Forms",
+ "anti-spam",
+ "captcha",
+ "security"
+ ],
+ "time": "2018-03-09 06:07:41"
+ },
{
"name": "easyrdf/easyrdf",
"version": "0.9.1",
@@ -1455,16 +1504,16 @@
},
{
"name": "tinymce/tinymce",
- "version": "4.9.7",
+ "version": "4.9.8",
"source": {
"type": "git",
"url": "https://github.com/tinymce/tinymce-dist.git",
- "reference": "e14935a4ba07beb716ccdb192ee9823dbb4a73d5"
+ "reference": "912df2bc85015c758e32d1262219f1653bbf9783"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/e14935a4ba07beb716ccdb192ee9823dbb4a73d5",
- "reference": "e14935a4ba07beb716ccdb192ee9823dbb4a73d5",
+ "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/912df2bc85015c758e32d1262219f1653bbf9783",
+ "reference": "912df2bc85015c758e32d1262219f1653bbf9783",
"shasum": ""
},
"type": "component",
@@ -1497,7 +1546,7 @@
"tinymce",
"wysiwyg"
],
- "time": "2019-12-19 06:05:16"
+ "time": "2020-01-28 05:03:01"
},
{
"name": "tomazdragar/SimpleCropper",
diff --git a/content/fas.xul.php b/content/fas.xul.php
index 2aecae047..3b273cd54 100644
--- a/content/fas.xul.php
+++ b/content/fas.xul.php
@@ -96,7 +96,6 @@ foreach($addon_obj->result as $addon)