mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Merge branch 'master' into feature-4092/Berechtigung_aendern_der_ZGV_FAS
This commit is contained in:
@@ -503,3 +503,15 @@ $config['rewrite_short_tags'] = FALSE;
|
||||
| Array: array('10.0.1.200', '192.168.5.0/24')
|
||||
*/
|
||||
$config['proxy_ips'] = '';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| FHComplete Build Version
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Version Number of the Current Build
|
||||
| This is used to invalidate Cache for JS and CSS Files
|
||||
|
|
||||
| Example: 2019102901
|
||||
*/
|
||||
$config['fhcomplete_build_version'] = '2019102903';
|
||||
|
||||
@@ -82,6 +82,13 @@ $config['navigation_header'] = array(
|
||||
'expand' => true,
|
||||
'sort' => 10,
|
||||
'requiredPermissions' => 'admin:r'
|
||||
),
|
||||
'logsviewer' => array(
|
||||
'link' => site_url('system/LogsViewer'),
|
||||
'description' => 'Logs',
|
||||
'expand' => true,
|
||||
'sort' => 20,
|
||||
'requiredPermissions' => 'system/developer:r'
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
+19
-372
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -10,79 +10,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
| Set to force the use of HTTPS for REST API calls
|
||||
|
|
||||
*/
|
||||
$config['force_https'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Output Format
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The default format of the response
|
||||
|
|
||||
| 'array': Array data structure
|
||||
| 'csv': Comma separated file
|
||||
| 'json': Uses json_encode(). Note: If a GET query string
|
||||
| called 'callback' is passed, then jsonp will be returned
|
||||
| 'html' HTML using the table library in CodeIgniter
|
||||
| 'php': Uses var_export()
|
||||
| 'serialized': Uses serialize()
|
||||
| 'xml': Uses simplexml_load_string()
|
||||
|
|
||||
*/
|
||||
$config['rest_default_format'] = 'json';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Supported Output Formats
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following setting contains a list of the supported/allowed formats.
|
||||
| You may remove those formats that you don't want to use.
|
||||
| If the default format $config['rest_default_format'] is missing within
|
||||
| $config['rest_supported_formats'], it will be added silently during
|
||||
| REST_Controller initialization.
|
||||
|
|
||||
*/
|
||||
$config['rest_supported_formats'] = [
|
||||
'json',
|
||||
'array',
|
||||
'csv',
|
||||
'html',
|
||||
'jsonp',
|
||||
'php',
|
||||
'serialized',
|
||||
'xml',
|
||||
];
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Status Field Name
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The field name for the status inside the response
|
||||
|
|
||||
*/
|
||||
$config['rest_status_field_name'] = 'status';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Message Field Name
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The field name for the message inside the response
|
||||
|
|
||||
*/
|
||||
$config['rest_message_field_name'] = 'error';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Enable Emulate Request
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Should we enable emulation of the request (e.g. used in Mootools request)
|
||||
|
|
||||
*/
|
||||
$config['enable_emulate_request'] = TRUE;
|
||||
$config['force_https'] = TRUE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -104,8 +32,8 @@ $config['rest_realm'] = 'FHC REST API';
|
||||
| Set to specify the REST API requires to be logged in
|
||||
|
|
||||
| FALSE No login required
|
||||
| 'basic' Unsecure login
|
||||
| 'digest' More secure login
|
||||
| 'basic' Unsecured login
|
||||
| 'digest' More secured login
|
||||
| 'session' Check for a PHP session variable. See 'auth_source' to set the
|
||||
| authorization key
|
||||
|
|
||||
@@ -119,8 +47,7 @@ $config['rest_auth'] = 'basic';
|
||||
|
|
||||
| Is login required and if so, the user store to use
|
||||
|
|
||||
| '' Use config based users or wildcard testing, only for testing purpose
|
||||
| it would be very unsecure to let unset in a production environment
|
||||
| '' Use config based users or wildcard testing
|
||||
| 'ldap' Use LDAP authentication
|
||||
| 'library' Use a authentication library
|
||||
|
|
||||
@@ -140,94 +67,34 @@ $config['auth_source'] = 'library';
|
||||
| In other cases override the function _perform_library_auth in your controller
|
||||
|
|
||||
| For digest authentication the library function should return already a stored
|
||||
| password for that username, even if it is hashed
|
||||
| md5(username:restrealm:password) for that username
|
||||
|
|
||||
| e.g: md5('admin:REST API:1234') = '1e957ebc35631ab22d5bd6526bd14ea2'
|
||||
|
|
||||
*/
|
||||
$config['auth_library_class'] = 'AuthLib';
|
||||
|
||||
// rest_auth is basic
|
||||
$config['auth_library_function'] = 'basicAuthentication';
|
||||
|
||||
// rest_auth is digest
|
||||
//$config['auth_library_function'] = 'digestAuthentication';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Override auth types for specific class/method
|
||||
| Global IP White-listing
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Set specific authentication types for methods within a class (controller)
|
||||
|
|
||||
| Set as many config entries as needed. Any methods not set will use the default 'rest_auth' config value.
|
||||
|
|
||||
| e.g:
|
||||
|
|
||||
| $config['auth_override_class_method']['deals']['view'] = 'none';
|
||||
| $config['auth_override_class_method']['deals']['insert'] = 'digest';
|
||||
| $config['auth_override_class_method']['accounts']['user'] = 'basic';
|
||||
| $config['auth_override_class_method']['dashboard']['*'] = 'none|digest|basic';
|
||||
|
|
||||
| Here 'deals', 'accounts' and 'dashboard' are controller names, 'view', 'insert' and 'user' are methods within.
|
||||
* An asterisk may also be used to specify an authentication method for an entire classes methods.
|
||||
* Ex: $config['auth_override_class_method']['dashboard']['*'] = 'basic'; (NOTE: leave off the '_get' or '_post' from the end
|
||||
* of the method name)
|
||||
| Acceptable values are; 'none', 'digest' and 'basic'.
|
||||
|
|
||||
*/
|
||||
// $config['auth_override_class_method']['deals']['view'] = 'none';
|
||||
// $config['auth_override_class_method']['deals']['insert'] = 'digest';
|
||||
// $config['auth_override_class_method']['accounts']['user'] = 'basic';
|
||||
// $config['auth_override_class_method']['dashboard']['*'] = 'basic';
|
||||
|
||||
|
||||
// ---Uncomment list line for the wildard unit test
|
||||
// $config['auth_override_class_method']['wildcard_test_cases']['*'] = 'basic';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Override auth types for specfic 'class/method/HTTP method'
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| example:
|
||||
|
|
||||
| $config['auth_override_class_method_http']['deals']['view']['get'] = 'none';
|
||||
| $config['auth_override_class_method_http']['deals']['insert']['post'] = 'none';
|
||||
| $config['auth_override_class_method_http']['deals']['*']['options'] = 'none';
|
||||
*/
|
||||
|
||||
// ---Uncomment list line for the wildard unit test
|
||||
// $config['auth_override_class_method_http']['wildcard_test_cases']['*']['options'] = 'basic';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Login Usernames
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Array of usernames and passwords for login, if ldap (even library) is configured this is ignored
|
||||
|
|
||||
*/
|
||||
//$config['rest_valid_logins'] = ['admin' => '1234', 'test' => 'test'];
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Global IP Whitelisting
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Limit connections to your REST server to whitelisted IP addresses
|
||||
| Limit connections to your REST server to White-listed IP addresses
|
||||
|
|
||||
| Usage:
|
||||
| 1. Set to TRUE and select an auth option for extreme security (client's IP
|
||||
| address must be in whitelist and they must also log in)
|
||||
| 2. Set to TRUE with auth set to FALSE to allow whitelisted IPs access with no login
|
||||
| 3. Set to FALSE but set 'auth_override_class_method' to 'whitelist' to
|
||||
| restrict certain methods to IPs in your whitelist
|
||||
| address must be in white-list and they must also log in)
|
||||
| 2. Set to TRUE with auth set to FALSE to allow White-listed IPs access with no login
|
||||
| 3. Set to FALSE but set 'auth_override_class_method' to 'white-list' to
|
||||
| restrict certain methods to IPs in your white-list
|
||||
|
|
||||
*/
|
||||
$config['rest_ip_whitelist_enabled'] = TRUE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST IP Whitelist
|
||||
| REST IP White-list
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Limit connections to your REST server with a comma separated
|
||||
@@ -240,42 +107,6 @@ $config['rest_ip_whitelist_enabled'] = TRUE;
|
||||
*/
|
||||
$config['rest_ip_whitelist'] = '127.0.0.1';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Global IP Blacklisting
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Prevent connections to the REST server from blacklisted IP addresses
|
||||
|
|
||||
| Usage:
|
||||
| 1. Set to TRUE and add any IP address to 'rest_ip_blacklist'
|
||||
|
|
||||
*/
|
||||
$config['rest_ip_blacklist_enabled'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST IP Blacklist
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Prevent connections from the following IP addresses
|
||||
|
|
||||
| e.g: '123.456.789.0, 987.654.32.1'
|
||||
|
|
||||
*/
|
||||
$config['rest_ip_blacklist'] = '';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Database Group
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Connect to a database group for keys, logging, etc. It will only connect
|
||||
| if you have any of these features enabled
|
||||
|
|
||||
*/
|
||||
$config['rest_database_group'] = 'default';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST API Keys Table Name
|
||||
@@ -298,6 +129,7 @@ $config['rest_keys_table'] = 'ci_apikey';
|
||||
| Default table schema:
|
||||
| CREATE TABLE `keys` (
|
||||
| `id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
| `user_id` INT(11) NOT NULL,
|
||||
| `key` VARCHAR(40) NOT NULL,
|
||||
| `level` INT(2) NOT NULL,
|
||||
| `ignore_limits` TINYINT(1) NOT NULL DEFAULT '0',
|
||||
@@ -310,45 +142,6 @@ $config['rest_keys_table'] = 'ci_apikey';
|
||||
*/
|
||||
$config['rest_enable_keys'] = TRUE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Table Key Column Name
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If not using the default table schema in 'rest_enable_keys', specify the
|
||||
| column name to match e.g. my_key
|
||||
|
|
||||
*/
|
||||
$config['rest_key_column'] = 'key';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST API Limits method
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Specify the method used to limit the API calls
|
||||
|
|
||||
| Available methods are :
|
||||
| $config['rest_limits_method'] = 'API_KEY'; // Put a limit per api key
|
||||
| $config['rest_limits_method'] = 'METHOD_NAME'; // Put a limit on method calls
|
||||
| $config['rest_limits_method'] = 'ROUTED_URL'; // Put a limit on the routed URL
|
||||
|
|
||||
*/
|
||||
$config['rest_limits_method'] = 'ROUTED_URL';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Key Length
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Length of the created keys. Check your default database schema on the
|
||||
| maximum length allowed
|
||||
|
|
||||
| Note: The maximum length is 40
|
||||
|
|
||||
*/
|
||||
$config['rest_key_length'] = 40;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST API Key Variable
|
||||
@@ -364,156 +157,10 @@ $config['rest_key_name'] = 'FHC-API-KEY';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Enable Logging
|
||||
| REST Methods name format
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When set to TRUE, the REST API will log actions based on the column names 'key', 'date',
|
||||
| 'time' and 'ip_address'. This is a general rule that can be overridden in the
|
||||
| $this->method array for each controller
|
||||
|
|
||||
| Default table schema:
|
||||
| CREATE TABLE `logs` (
|
||||
| `id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
| `uri` VARCHAR(255) NOT NULL,
|
||||
| `method` VARCHAR(6) NOT NULL,
|
||||
| `params` TEXT DEFAULT NULL,
|
||||
| `api_key` VARCHAR(40) NOT NULL,
|
||||
| `ip_address` VARCHAR(45) NOT NULL,
|
||||
| `time` INT(11) NOT NULL,
|
||||
| `rtime` FLOAT DEFAULT NULL,
|
||||
| `authorized` VARCHAR(1) NOT NULL,
|
||||
| `response_code` smallint(3) DEFAULT '0',
|
||||
| PRIMARY KEY (`id`)
|
||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
| REST Controllers methods name format
|
||||
|
|
||||
*/
|
||||
$config['rest_enable_logging'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST API Logs Table Name
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If not using the default table schema in 'rest_enable_logging', specify the
|
||||
| table name to match e.g. my_logs
|
||||
|
|
||||
*/
|
||||
$config['rest_logs_table'] = 'logs';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Method Access Control
|
||||
|--------------------------------------------------------------------------
|
||||
| When set to TRUE, the REST API will check the access table to see if
|
||||
| the API key can access that controller. 'rest_enable_keys' must be enabled
|
||||
| to use this
|
||||
|
|
||||
| Default table schema:
|
||||
| CREATE TABLE `access` (
|
||||
| `id` INT(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
| `key` VARCHAR(40) NOT NULL DEFAULT '',
|
||||
| `controller` VARCHAR(50) NOT NULL DEFAULT '',
|
||||
| `date_created` DATETIME DEFAULT NULL,
|
||||
| `date_modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
| PRIMARY KEY (`id`)
|
||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
|
||||
*/
|
||||
$config['rest_enable_access'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST API Access Table Name
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If not using the default table schema in 'rest_enable_access', specify the
|
||||
| table name to match e.g. my_access
|
||||
|
|
||||
*/
|
||||
$config['rest_access_table'] = 'access';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST API Param Log Format
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When set to TRUE, the REST API log parameters will be stored in the database as JSON
|
||||
| Set to FALSE to log as serialized PHP
|
||||
|
|
||||
*/
|
||||
$config['rest_logs_json_params'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Enable Limits
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When set to TRUE, the REST API will count the number of uses of each method
|
||||
| by an API key each hour. This is a general rule that can be overridden in the
|
||||
| $this->method array in each controller
|
||||
|
|
||||
| Default table schema:
|
||||
| CREATE TABLE `limits` (
|
||||
| `id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
| `uri` VARCHAR(255) NOT NULL,
|
||||
| `count` INT(10) NOT NULL,
|
||||
| `hour_started` INT(11) NOT NULL,
|
||||
| `api_key` VARCHAR(40) NOT NULL,
|
||||
| PRIMARY KEY (`id`)
|
||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
|
||||
| To specify the limits within the controller's __construct() method, add per-method
|
||||
| limits with:
|
||||
|
|
||||
| $this->method['METHOD_NAME']['limit'] = [NUM_REQUESTS_PER_HOUR];
|
||||
|
|
||||
| See application/controllers/api/example.php for examples
|
||||
*/
|
||||
$config['rest_enable_limits'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST API Limits Table Name
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If not using the default table schema in 'rest_enable_limits', specify the
|
||||
| table name to match e.g. my_limits
|
||||
|
|
||||
*/
|
||||
$config['rest_limits_table'] = 'limits';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Ignore HTTP Accept
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Set to TRUE to ignore the HTTP Accept and speed up each request a little.
|
||||
| Only do this if you are using the $this->rest_format or /format/xml in URLs
|
||||
|
|
||||
*/
|
||||
$config['rest_ignore_http_accept'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST AJAX Only
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Set to TRUE to allow AJAX requests only. Set to FALSE to accept HTTP requests
|
||||
|
|
||||
| Note: If set to TRUE and the request is not AJAX, a 505 response with the
|
||||
| error message 'Only AJAX requests are accepted.' will be returned.
|
||||
|
|
||||
| Hint: This is good for production environments
|
||||
|
|
||||
*/
|
||||
$config['rest_ajax_only'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| REST Language File
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Language file to load from the language directory
|
||||
|
|
||||
*/
|
||||
$config['rest_language'] = 'english';
|
||||
$config['rest_methods_name_format'] = '%2$s%1$s';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
/*
|
||||
| -------------------------------------------------------------------------
|
||||
@@ -11,7 +12,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
| and its corresponding controller class/method. The segments in a
|
||||
| URL normally follow this pattern:
|
||||
|
|
||||
| example.com/class/method/id/
|
||||
| example.com/class/method/id/
|
||||
|
|
||||
| In some instances, however, you may want to remap this relationship
|
||||
| so that a different class/function is called than the one
|
||||
@@ -19,7 +20,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
|
||||
| Please see the user guide for complete details:
|
||||
|
|
||||
| http://codeigniter.com/user_guide/general/routing.html
|
||||
| https://codeigniter.com/user_guide/general/routing.html
|
||||
|
|
||||
| -------------------------------------------------------------------------
|
||||
| RESERVED ROUTES
|
||||
@@ -27,18 +28,18 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
|
||||
| There are three reserved routes:
|
||||
|
|
||||
| $route['default_controller'] = 'welcome';
|
||||
| $route['default_controller'] = 'welcome';
|
||||
|
|
||||
| This route indicates which controller class should be loaded if the
|
||||
| URI contains no data. In the above example, the "welcome" class
|
||||
| would be loaded.
|
||||
|
|
||||
| $route['404_override'] = 'errors/page_missing';
|
||||
| $route['404_override'] = 'errors/page_missing';
|
||||
|
|
||||
| This route will tell the Router which controller/method to use if those
|
||||
| provided in the URL cannot be matched to a valid route.
|
||||
|
|
||||
| $route['translate_uri_dashes'] = FALSE;
|
||||
| $route['translate_uri_dashes'] = FALSE;
|
||||
|
|
||||
| This is not exactly a route, but allows you to automatically route
|
||||
| controller and method names that contain dashes. '-' isn't a valid
|
||||
@@ -46,11 +47,10 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
| When you set this option to TRUE, it will replace ALL dashes in the
|
||||
| controller and method URI segments.
|
||||
|
|
||||
| Examples: my-controller/index -> my_controller/index
|
||||
| my-controller/my-method -> my_controller/my_method
|
||||
| Examples: my-controller/index -> my_controller/index
|
||||
| my-controller/my-method -> my_controller/my_method
|
||||
*/
|
||||
$route['default_controller'] = 'Vilesci';
|
||||
$route['404_override'] = '';
|
||||
$route['translate_uri_dashes'] = FALSE;
|
||||
|
||||
// Class name conflicts
|
||||
@@ -59,4 +59,4 @@ $route['api/v1/organisation/[F|f]achbereich/(:any)'] = 'api/v1/organisation/fach
|
||||
$route['api/v1/organisation/[G|g]eschaeftsjahr/(:any)'] = 'api/v1/organisation/geschaeftsjahr2/$1';
|
||||
$route['api/v1/organisation/[O|o]rganisationseinheit/(:any)'] = 'api/v1/organisation/organisationseinheit2/$1';
|
||||
$route['api/v1/ressource/[B|b]etriebsmittelperson/(:any)'] = 'api/v1/ressource/betriebsmittelperson2/$1';
|
||||
$route['api/v1/system/[S|s]prache/(:any)'] = 'api/v1/system/sprache2/$1';
|
||||
$route['api/v1/system/[S|s]prache/(:any)'] = 'api/v1/system/sprache2/$1';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class CheckUserAuth extends REST_Controller
|
||||
class CheckUserAuth extends RESTFul_Controller
|
||||
{
|
||||
/**
|
||||
* Course API constructor.
|
||||
|
||||
@@ -5,7 +5,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/**
|
||||
* Testing class for REST calls and authentication
|
||||
*/
|
||||
class Test extends REST_Controller
|
||||
class Test extends RESTFul_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
@@ -37,7 +37,7 @@ class Benutzer extends APIv1_Controller
|
||||
|
||||
if (isset($uid))
|
||||
{
|
||||
$result = $this->BenutzerModel->load($uid);
|
||||
$result = $this->BenutzerModel->load(array('uid' => $uid));
|
||||
|
||||
$this->response($result, REST_Controller::HTTP_OK);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ class LogsViewer extends Auth_Controller
|
||||
{
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'admin:r'
|
||||
'index' => 'system/developer:r'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@ class InfoCenter extends Auth_Controller
|
||||
|
||||
const FILTER_ID = 'filter_id';
|
||||
const PREV_FILTER_ID = 'prev_filter_id';
|
||||
const RELOAD_DATASET = 'reloadDataset';
|
||||
const KEEP_TABLESORTER_FILTER = 'keepTsFilter';
|
||||
|
||||
private $_uid; // contains the UID of the logged user
|
||||
|
||||
@@ -100,9 +102,11 @@ class InfoCenter extends Auth_Controller
|
||||
'reloadNotizen' => 'infocenter:r',
|
||||
'reloadLogs' => 'infocenter:r',
|
||||
'outputAkteContent' => 'infocenter:r',
|
||||
'getParkedDate' => 'infocenter:r',
|
||||
'getPostponeDate' => 'infocenter:r',
|
||||
'park' => 'infocenter:rw',
|
||||
'unpark' => 'infocenter:rw',
|
||||
'setOnHold' => 'infocenter:rw',
|
||||
'removeOnHold' => 'infocenter:rw',
|
||||
'getStudienjahrEnd' => 'infocenter:r',
|
||||
'setNavigationMenuArrayJson' => 'infocenter:r'
|
||||
)
|
||||
@@ -234,7 +238,7 @@ class InfoCenter extends Auth_Controller
|
||||
$redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
|
||||
|
||||
// Force reload of Dataset after Unlock
|
||||
$redirectLink .= '&reloadDataset=true';
|
||||
$redirectLink .= '&'.self::RELOAD_DATASET.'=true&'.self::KEEP_TABLESORTER_FILTER.'=true';
|
||||
|
||||
$currentFilterId = $this->input->get(self::FILTER_ID);
|
||||
if (isset($currentFilterId))
|
||||
@@ -711,11 +715,32 @@ class InfoCenter extends Auth_Controller
|
||||
* Gets the date until which a person is parked
|
||||
* @param $person_id
|
||||
*/
|
||||
public function getParkedDate($person_id)
|
||||
public function getPostponeDate($person_id)
|
||||
{
|
||||
$result = array(
|
||||
'type' => null,
|
||||
'date' => null
|
||||
);
|
||||
|
||||
$parkedDate = $this->personloglib->getParkedDate($person_id);
|
||||
|
||||
$this->outputJsonSuccess(array($parkedDate));
|
||||
if (isset($parkedDate))
|
||||
{
|
||||
$result['type'] = 'parked';
|
||||
$result['date'] = $parkedDate;
|
||||
}
|
||||
else
|
||||
{
|
||||
$onholdDate = $this->personloglib->getOnHoldDate($person_id);
|
||||
|
||||
if (isset($onholdDate))
|
||||
{
|
||||
$result['type'] = 'onhold';
|
||||
$result['date'] = $onholdDate;
|
||||
}
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess($result);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -743,6 +768,31 @@ class InfoCenter extends Auth_Controller
|
||||
$this->outputJson($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a person on hold ("zurückstellen")
|
||||
*/
|
||||
public function setOnHold()
|
||||
{
|
||||
$person_id = $this->input->post('person_id');
|
||||
$date = $this->input->post('onholddate');
|
||||
|
||||
$result = $this->personloglib->setOnHold($person_id, date_format(date_create($date), 'Y-m-d'), self::TAETIGKEIT, self::APP, null, $this->_uid);
|
||||
|
||||
$this->outputJson($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removed on hold status of a person
|
||||
*/
|
||||
public function removeOnHold()
|
||||
{
|
||||
$person_id = $this->input->post('person_id');
|
||||
|
||||
$result = $this->personloglib->removeOnHold($person_id);
|
||||
|
||||
$this->outputJson($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the End date of the current Studienjahr
|
||||
*/
|
||||
@@ -894,10 +944,16 @@ class InfoCenter extends Auth_Controller
|
||||
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
|
||||
$reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
|
||||
$currentFilterId = $this->input->get(self::FILTER_ID);
|
||||
$reloadDatasetParam = self::RELOAD_DATASET.'=true';
|
||||
if (isset($currentFilterId))
|
||||
{
|
||||
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
|
||||
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
|
||||
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId.'&'.$reloadDatasetParam;
|
||||
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId.'&'.$reloadDatasetParam;
|
||||
}
|
||||
else
|
||||
{
|
||||
$freigegebenLink .= '?'.$reloadDatasetParam;
|
||||
$reihungstestAbsolviertLink .= '?'.$reloadDatasetParam;
|
||||
}
|
||||
|
||||
$this->navigationlib->setSessionMenu(
|
||||
@@ -950,7 +1006,7 @@ class InfoCenter extends Auth_Controller
|
||||
|
||||
$origin_page = $this->input->get(self::ORIGIN_PAGE);
|
||||
|
||||
$link = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE);
|
||||
$link = site_url(self::INFOCENTER_URI);
|
||||
if ($origin_page == self::FREIGEGEBEN_PAGE)
|
||||
{
|
||||
$link = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
|
||||
@@ -963,7 +1019,7 @@ class InfoCenter extends Auth_Controller
|
||||
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
|
||||
if (isset($prevFilterId))
|
||||
{
|
||||
$link .= '?'.self::FILTER_ID.'='.$prevFilterId;
|
||||
$link .= '?'.self::FILTER_ID.'='.$prevFilterId.'&'.self::RELOAD_DATASET.'=true&'.self::KEEP_TABLESORTER_FILTER.'=true';
|
||||
}
|
||||
|
||||
$this->navigationlib->setSessionMenu(
|
||||
@@ -993,13 +1049,14 @@ class InfoCenter extends Auth_Controller
|
||||
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.$page));
|
||||
|
||||
// Generate the home link with the eventually loaded filter
|
||||
$homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE);
|
||||
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
|
||||
$absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
|
||||
$reloadDatasetParam = '?'.self::RELOAD_DATASET.'=true';
|
||||
$homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE.$reloadDatasetParam);
|
||||
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE.$reloadDatasetParam);
|
||||
$absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE.$reloadDatasetParam);
|
||||
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
|
||||
if (isset($prevFilterId))
|
||||
{
|
||||
$homeLink .= '?'.self::FILTER_ID.'='.$prevFilterId;
|
||||
$homeLink .= '&'.self::FILTER_ID.'='.$prevFilterId;
|
||||
}
|
||||
|
||||
$this->navigationlib->setSessionElementMenu(
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* REST_Controller takes care about authentication and it loads the AuthLib
|
||||
*
|
||||
*/
|
||||
abstract class APIv1_Controller extends REST_Controller
|
||||
abstract class APIv1_Controller extends RESTFul_Controller
|
||||
{
|
||||
private $_requiredPermissions;
|
||||
|
||||
@@ -23,13 +23,14 @@ abstract class APIv1_Controller extends REST_Controller
|
||||
|
||||
/**
|
||||
* This method is automatically called by CodeIgniter after the execution of the constructor is completed
|
||||
* - Cheks if the AuthLib was loaded, if not it means that the authentication failed
|
||||
* - Cheks if the Authlib was loaded, if not it means that the authentication failed
|
||||
* - Loads the permsission lib and calls permissionlib->isEntitled
|
||||
* - Checks if the caller is allowed to access to this content with the given permissions
|
||||
* if it is not allowed will set the HTTP header with code 401
|
||||
* - Calls the parent (REST_Controller) _remap method to performs other checks
|
||||
* NOTE: this methods override the parent method!!!
|
||||
*/
|
||||
public function _remap($object_called, $arguments)
|
||||
public function _remap($object_called, $arguments = [])
|
||||
{
|
||||
if (isset($this->authlib)) // if set then the authentication is ok
|
||||
{
|
||||
|
||||
@@ -0,0 +1,215 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* NOTE: this class overrides parent's methods and properties
|
||||
*/
|
||||
class RESTFul_Controller extends REST_Controller
|
||||
{
|
||||
protected $is_valid_request = TRUE; // Change the accessibility of this property
|
||||
|
||||
/**
|
||||
* Totally overriden
|
||||
*/
|
||||
protected function early_checks()
|
||||
{
|
||||
// Loads helper message to manage returning messages
|
||||
$this->load->helper('hlp_return_object');
|
||||
|
||||
// Loads helper session to manage the php session
|
||||
$this->load->helper('hlp_session');
|
||||
|
||||
// Loads helper with generic utility function
|
||||
$this->load->helper('hlp_common');
|
||||
}
|
||||
|
||||
/**
|
||||
* Totally overrode parent's _perform_library_auth method to keep file and class name
|
||||
* for AuthLib and to call AuthLib with the extra parameter
|
||||
*/
|
||||
protected function _perform_library_auth($username = '', $password = NULL)
|
||||
{
|
||||
if (empty($username))
|
||||
{
|
||||
log_message('error', 'Library Auth: Failure, empty username');
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$auth_library_class = $this->config->item('auth_library_class');
|
||||
$auth_library_function = $this->config->item('auth_library_function');
|
||||
|
||||
if (empty($auth_library_class))
|
||||
{
|
||||
log_message('debug', 'Library Auth: Failure, empty auth_library_class');
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (empty($auth_library_function))
|
||||
{
|
||||
log_message('debug', 'Library Auth: Failure, empty auth_library_function');
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (is_callable([$auth_library_class, $auth_library_function]) === FALSE)
|
||||
{
|
||||
$this->load->library($auth_library_class, array(false));
|
||||
}
|
||||
|
||||
return $this->{strtolower($auth_library_class)}->$auth_library_function($username, $password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Totally overrode parent's _remap method to change the naming convention of controllers methods
|
||||
*/
|
||||
public function _remap($object_called, $arguments = [])
|
||||
{
|
||||
// Should we answer if not over SSL?
|
||||
if ($this->config->item('force_https') && $this->request->ssl === FALSE)
|
||||
{
|
||||
$this->response([
|
||||
$this->config->item('rest_status_field_name') => FALSE,
|
||||
$this->config->item('rest_message_field_name') => $this->lang->line('text_rest_unsupported')
|
||||
], self::HTTP_FORBIDDEN);
|
||||
|
||||
$this->is_valid_request = false;
|
||||
}
|
||||
|
||||
// Remove the supported format from the function name e.g. index.json => index
|
||||
$object_called = preg_replace('/^(.*)\.(?:'.implode('|', array_keys($this->_supported_formats)).')$/', '$1', $object_called);
|
||||
|
||||
// NOTE: START changes
|
||||
$controller_method = $object_called.'_'.$this->request->method; // Method name fallback
|
||||
// If the config entry rest_methods_name_format is provided and is not empty then use it to produce the method name
|
||||
if (!empty($this->config->item('rest_methods_name_format')))
|
||||
{
|
||||
$controller_method = sprintf($this->config->item('rest_methods_name_format'), $object_called, $this->request->method);
|
||||
}
|
||||
// END changes
|
||||
|
||||
// Does this method exist? If not, try executing an index method
|
||||
if (!method_exists($this, $controller_method)) {
|
||||
$controller_method = "index_" . $this->request->method;
|
||||
array_unshift($arguments, $object_called);
|
||||
}
|
||||
|
||||
// Do we want to log this method (if allowed by config)?
|
||||
$log_method = ! (isset($this->methods[$controller_method]['log']) && $this->methods[$controller_method]['log'] === FALSE);
|
||||
|
||||
// Use keys for this method?
|
||||
$use_key = ! (isset($this->methods[$controller_method]['key']) && $this->methods[$controller_method]['key'] === FALSE);
|
||||
|
||||
// They provided a key, but it wasn't valid, so get them out of here
|
||||
if ($this->config->item('rest_enable_keys') && $use_key && $this->_allow === FALSE)
|
||||
{
|
||||
if ($this->config->item('rest_enable_logging') && $log_method)
|
||||
{
|
||||
$this->_log_request();
|
||||
}
|
||||
|
||||
// fix cross site to option request error
|
||||
if($this->request->method == 'options') {
|
||||
exit;
|
||||
}
|
||||
|
||||
$this->response([
|
||||
$this->config->item('rest_status_field_name') => FALSE,
|
||||
$this->config->item('rest_message_field_name') => sprintf($this->lang->line('text_rest_invalid_api_key'), $this->rest->key)
|
||||
], self::HTTP_FORBIDDEN);
|
||||
|
||||
$this->is_valid_request = false;
|
||||
}
|
||||
|
||||
// Check to see if this key has access to the requested controller
|
||||
if ($this->config->item('rest_enable_keys') && $use_key && empty($this->rest->key) === FALSE && $this->_check_access() === FALSE)
|
||||
{
|
||||
if ($this->config->item('rest_enable_logging') && $log_method)
|
||||
{
|
||||
$this->_log_request();
|
||||
}
|
||||
|
||||
$this->response([
|
||||
$this->config->item('rest_status_field_name') => FALSE,
|
||||
$this->config->item('rest_message_field_name') => $this->lang->line('text_rest_api_key_unauthorized')
|
||||
], self::HTTP_UNAUTHORIZED);
|
||||
|
||||
$this->is_valid_request = false;
|
||||
}
|
||||
|
||||
// Sure it exists, but can they do anything with it?
|
||||
if (! method_exists($this, $controller_method))
|
||||
{
|
||||
$this->response([
|
||||
$this->config->item('rest_status_field_name') => FALSE,
|
||||
$this->config->item('rest_message_field_name') => $this->lang->line('text_rest_unknown_method')
|
||||
], self::HTTP_METHOD_NOT_ALLOWED);
|
||||
|
||||
$this->is_valid_request = false;
|
||||
}
|
||||
|
||||
// Doing key related stuff? Can only do it if they have a key right?
|
||||
if ($this->config->item('rest_enable_keys') && empty($this->rest->key) === FALSE)
|
||||
{
|
||||
// Check the limit
|
||||
if ($this->config->item('rest_enable_limits') && $this->_check_limit($controller_method) === FALSE)
|
||||
{
|
||||
$response = [$this->config->item('rest_status_field_name') => FALSE, $this->config->item('rest_message_field_name') => $this->lang->line('text_rest_api_key_time_limit')];
|
||||
$this->response($response, self::HTTP_UNAUTHORIZED);
|
||||
|
||||
$this->is_valid_request = false;
|
||||
}
|
||||
|
||||
// If no level is set use 0, they probably aren't using permissions
|
||||
$level = isset($this->methods[$controller_method]['level']) ? $this->methods[$controller_method]['level'] : 0;
|
||||
|
||||
// If no level is set, or it is lower than/equal to the key's level
|
||||
$authorized = $level <= $this->rest->level;
|
||||
// IM TELLIN!
|
||||
if ($this->config->item('rest_enable_logging') && $log_method)
|
||||
{
|
||||
$this->_log_request($authorized);
|
||||
}
|
||||
if($authorized === FALSE)
|
||||
{
|
||||
// They don't have good enough perms
|
||||
$response = [$this->config->item('rest_status_field_name') => FALSE, $this->config->item('rest_message_field_name') => $this->lang->line('text_rest_api_key_permissions')];
|
||||
$this->response($response, self::HTTP_UNAUTHORIZED);
|
||||
|
||||
$this->is_valid_request = false;
|
||||
}
|
||||
}
|
||||
|
||||
//check request limit by ip without login
|
||||
elseif ($this->config->item('rest_limits_method') == "IP_ADDRESS" && $this->config->item('rest_enable_limits') && $this->_check_limit($controller_method) === FALSE)
|
||||
{
|
||||
$response = [$this->config->item('rest_status_field_name') => FALSE, $this->config->item('rest_message_field_name') => $this->lang->line('text_rest_ip_address_time_limit')];
|
||||
$this->response($response, self::HTTP_UNAUTHORIZED);
|
||||
|
||||
$this->is_valid_request = false;
|
||||
}
|
||||
|
||||
// No key stuff, but record that stuff is happening
|
||||
elseif ($this->config->item('rest_enable_logging') && $log_method)
|
||||
{
|
||||
$this->_log_request($authorized = TRUE);
|
||||
}
|
||||
|
||||
// Call the controller method and passed arguments
|
||||
try
|
||||
{
|
||||
if ($this->is_valid_request) {
|
||||
call_user_func_array([$this, $controller_method], $arguments);
|
||||
}
|
||||
}
|
||||
catch (Exception $ex)
|
||||
{
|
||||
if ($this->config->item('rest_handle_exceptions') === FALSE) {
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
// If the method doesn't exist, then the error will be caught and an error response shown
|
||||
$_error = &load_class('Exceptions', 'core');
|
||||
$_error->show_exception($ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -34,3 +34,31 @@ function getAuthUID()
|
||||
|
||||
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_USERNAME} : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the user is NOT logged then a null value is returned.
|
||||
* If the user is alredy logged, then it is possible to access to the authentication object
|
||||
* that contains the firstname of the logged user
|
||||
* NOTE: if the user is logged with a "foreign" method (ex. Bewerbungstool),
|
||||
* then it is possible that the firstname is null!
|
||||
*/
|
||||
function getAuthFirstname()
|
||||
{
|
||||
$ci =& get_instance(); // get CI instance
|
||||
|
||||
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_NAME} : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the user is NOT logged then a null value is returned.
|
||||
* If the user is alredy logged, then it is possible to access to the authentication object
|
||||
* that contains the surname of the logged user
|
||||
* NOTE: if the user is logged with a "foreign" method (ex. Bewerbungstool),
|
||||
* then it is possible that the surname is null!
|
||||
*/
|
||||
function getAuthSurname()
|
||||
{
|
||||
$ci =& get_instance(); // get CI instance
|
||||
|
||||
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_SURNAME} : null;
|
||||
}
|
||||
|
||||
@@ -46,13 +46,16 @@ function generateCSSsInclude($CSSs)
|
||||
{
|
||||
$cssLink = '<link rel="stylesheet" type="text/css" href="%s" />';
|
||||
|
||||
$ci =& get_instance();
|
||||
$cachetoken = '?'.$ci->config->item('fhcomplete_build_version');
|
||||
|
||||
if (isset($CSSs))
|
||||
{
|
||||
$tmpCSSs = is_array($CSSs) ? $CSSs : array($CSSs);
|
||||
|
||||
for ($tmpCSSsCounter = 0; $tmpCSSsCounter < count($tmpCSSs); $tmpCSSsCounter++)
|
||||
{
|
||||
$toPrint = sprintf($cssLink, base_url($tmpCSSs[$tmpCSSsCounter])).PHP_EOL;
|
||||
$toPrint = sprintf($cssLink, base_url($tmpCSSs[$tmpCSSsCounter]).$cachetoken).PHP_EOL;
|
||||
|
||||
if ($tmpCSSsCounter > 0) $toPrint = "\t\t".$toPrint;
|
||||
|
||||
@@ -108,13 +111,16 @@ function generateJSsInclude($JSs)
|
||||
{
|
||||
$jsInclude = '<script type="text/javascript" src="%s"></script>';
|
||||
|
||||
$ci =& get_instance();
|
||||
$cachetoken = '?'.$ci->config->item('fhcomplete_build_version');
|
||||
|
||||
if (isset($JSs))
|
||||
{
|
||||
$tmpJSs = is_array($JSs) ? $JSs : array($JSs);
|
||||
|
||||
for ($tmpJSsCounter = 0; $tmpJSsCounter < count($tmpJSs); $tmpJSsCounter++)
|
||||
{
|
||||
$toPrint = sprintf($jsInclude, base_url($tmpJSs[$tmpJSsCounter])).PHP_EOL;
|
||||
$toPrint = sprintf($jsInclude, base_url($tmpJSs[$tmpJSsCounter].$cachetoken)).PHP_EOL;
|
||||
|
||||
if ($tmpJSsCounter > 0) $toPrint = "\t\t".$toPrint;
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* English language
|
||||
*/
|
||||
|
||||
$lang['text_rest_invalid_api_key'] = 'Invalid API key %s'; // %s is the REST API key
|
||||
$lang['text_rest_invalid_credentials'] = 'Invalid credentials';
|
||||
$lang['text_rest_ip_denied'] = 'IP denied';
|
||||
$lang['text_rest_ip_unauthorized'] = 'IP unauthorized';
|
||||
$lang['text_rest_unauthorized'] = 'Unauthorized';
|
||||
$lang['text_rest_ajax_only'] = 'Only AJAX requests are allowed';
|
||||
$lang['text_rest_api_key_unauthorized'] = 'This API key does not have access to the requested controller';
|
||||
$lang['text_rest_api_key_permissions'] = 'This API key does not have enough permissions';
|
||||
$lang['text_rest_api_key_time_limit'] = 'This API key has reached the time limit for this method';
|
||||
$lang['text_rest_unknown_method'] = 'Unknown method';
|
||||
$lang['text_rest_unsupported'] = 'Unsupported protocol';
|
||||
@@ -1,531 +0,0 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Format class
|
||||
* Help convert between various formats such as XML, JSON, CSV, etc.
|
||||
*
|
||||
* @author Phil Sturgeon, Chris Kacerguis, @softwarespot
|
||||
* @license http://www.dbad-license.org/
|
||||
*/
|
||||
class Format {
|
||||
|
||||
/**
|
||||
* Array output format
|
||||
*/
|
||||
const ARRAY_FORMAT = 'array';
|
||||
|
||||
/**
|
||||
* Comma Separated Value (CSV) output format
|
||||
*/
|
||||
const CSV_FORMAT = 'csv';
|
||||
|
||||
/**
|
||||
* Json output format
|
||||
*/
|
||||
const JSON_FORMAT = 'json';
|
||||
|
||||
/**
|
||||
* HTML output format
|
||||
*/
|
||||
const HTML_FORMAT = 'html';
|
||||
|
||||
/**
|
||||
* PHP output format
|
||||
*/
|
||||
const PHP_FORMAT = 'php';
|
||||
|
||||
/**
|
||||
* Serialized output format
|
||||
*/
|
||||
const SERIALIZED_FORMAT = 'serialized';
|
||||
|
||||
/**
|
||||
* XML output format
|
||||
*/
|
||||
const XML_FORMAT = 'xml';
|
||||
|
||||
/**
|
||||
* Default format of this class
|
||||
*/
|
||||
const DEFAULT_FORMAT = self::JSON_FORMAT; // Couldn't be DEFAULT, as this is a keyword
|
||||
|
||||
/**
|
||||
* CodeIgniter instance
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
private $_CI;
|
||||
|
||||
/**
|
||||
* Data to parse
|
||||
*
|
||||
* @var mixed
|
||||
*/
|
||||
protected $_data = [];
|
||||
|
||||
/**
|
||||
* Type to convert from
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_from_type = NULL;
|
||||
|
||||
/**
|
||||
* DO NOT CALL THIS DIRECTLY, USE factory()
|
||||
*
|
||||
* @param NULL $data
|
||||
* @param NULL $from_type
|
||||
* @throws Exception
|
||||
*/
|
||||
|
||||
public function __construct($data = NULL, $from_type = NULL)
|
||||
{
|
||||
// Get the CodeIgniter reference
|
||||
$this->_CI = &get_instance();
|
||||
|
||||
// Load the inflector helper
|
||||
$this->_CI->load->helper('inflector');
|
||||
|
||||
// If the provided data is already formatted we should probably convert it to an array
|
||||
if ($from_type !== NULL)
|
||||
{
|
||||
if (method_exists($this, '_from_' . $from_type))
|
||||
{
|
||||
$data = call_user_func([$this, '_from_' . $from_type], $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception('Format class does not support conversion from "' . $from_type . '".');
|
||||
}
|
||||
}
|
||||
|
||||
// Set the member variable to the data passed
|
||||
$this->_data = $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an instance of the format class
|
||||
* e.g: echo $this->format->factory(['foo' => 'bar'])->to_csv();
|
||||
*
|
||||
* @param mixed $data Data to convert/parse
|
||||
* @param string $from_type Type to convert from e.g. json, csv, html
|
||||
*
|
||||
* @return object Instance of the format class
|
||||
*/
|
||||
public function factory($data, $from_type = NULL)
|
||||
{
|
||||
// $class = __CLASS__;
|
||||
// return new $class();
|
||||
|
||||
return new static($data, $from_type);
|
||||
}
|
||||
|
||||
// FORMATTING OUTPUT ---------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Format data as an array
|
||||
*
|
||||
* @param mixed|NULL $data Optional data to pass, so as to override the data passed
|
||||
* to the constructor
|
||||
* @return array Data parsed as an array; otherwise, an empty array
|
||||
*/
|
||||
public function to_array($data = NULL)
|
||||
{
|
||||
// If no data is passed as a parameter, then use the data passed
|
||||
// via the constructor
|
||||
if ($data === NULL && func_num_args() === 0)
|
||||
{
|
||||
$data = $this->_data;
|
||||
}
|
||||
|
||||
// Cast as an array if not already
|
||||
if (is_array($data) === FALSE)
|
||||
{
|
||||
$data = (array) $data;
|
||||
}
|
||||
|
||||
$array = [];
|
||||
foreach ((array) $data as $key => $value)
|
||||
{
|
||||
if (is_object($value) === TRUE || is_array($value) === TRUE)
|
||||
{
|
||||
$array[$key] = $this->to_array($value);
|
||||
}
|
||||
else
|
||||
{
|
||||
$array[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format data as XML
|
||||
*
|
||||
* @param mixed|NULL $data Optional data to pass, so as to override the data passed
|
||||
* to the constructor
|
||||
* @param NULL $structure
|
||||
* @param string $basenode
|
||||
* @return mixed
|
||||
*/
|
||||
public function to_xml($data = NULL, $structure = NULL, $basenode = 'xml')
|
||||
{
|
||||
if ($data === NULL && func_num_args() === 0)
|
||||
{
|
||||
$data = $this->_data;
|
||||
}
|
||||
|
||||
// turn off compatibility mode as simple xml throws a wobbly if you don't.
|
||||
if (ini_get('zend.ze1_compatibility_mode') == 1)
|
||||
{
|
||||
ini_set('zend.ze1_compatibility_mode', 0);
|
||||
}
|
||||
|
||||
if ($structure === NULL)
|
||||
{
|
||||
$structure = simplexml_load_string("<?xml version='1.0' encoding='utf-8'?><$basenode />");
|
||||
}
|
||||
|
||||
// Force it to be something useful
|
||||
if (is_array($data) === FALSE && is_object($data) === FALSE)
|
||||
{
|
||||
$data = (array) $data;
|
||||
}
|
||||
|
||||
foreach ($data as $key => $value)
|
||||
{
|
||||
|
||||
//change false/true to 0/1
|
||||
if (is_bool($value))
|
||||
{
|
||||
$value = (int) $value;
|
||||
}
|
||||
|
||||
// no numeric keys in our xml please!
|
||||
if (is_numeric($key))
|
||||
{
|
||||
// make string key...
|
||||
$key = (singular($basenode) != $basenode) ? singular($basenode) : 'item';
|
||||
}
|
||||
|
||||
// replace anything not alpha numeric
|
||||
$key = preg_replace('/[^a-z_\-0-9]/i', '', $key);
|
||||
|
||||
if ($key === '_attributes' && (is_array($value) || is_object($value)))
|
||||
{
|
||||
$attributes = $value;
|
||||
if (is_object($attributes))
|
||||
{
|
||||
$attributes = get_object_vars($attributes);
|
||||
}
|
||||
|
||||
foreach ($attributes as $attribute_name => $attribute_value)
|
||||
{
|
||||
$structure->addAttribute($attribute_name, $attribute_value);
|
||||
}
|
||||
}
|
||||
// if there is another array found recursively call this function
|
||||
elseif (is_array($value) || is_object($value))
|
||||
{
|
||||
$node = $structure->addChild($key);
|
||||
|
||||
// recursive call.
|
||||
$this->to_xml($value, $node, $key);
|
||||
}
|
||||
else
|
||||
{
|
||||
// add single node.
|
||||
$value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
|
||||
|
||||
$structure->addChild($key, $value);
|
||||
}
|
||||
}
|
||||
|
||||
return $structure->asXML();
|
||||
}
|
||||
|
||||
/**
|
||||
* Format data as HTML
|
||||
*
|
||||
* @param mixed|NULL $data Optional data to pass, so as to override the data passed
|
||||
* to the constructor
|
||||
* @return mixed
|
||||
*/
|
||||
public function to_html($data = NULL)
|
||||
{
|
||||
// If no data is passed as a parameter, then use the data passed
|
||||
// via the constructor
|
||||
if ($data === NULL && func_num_args() === 0)
|
||||
{
|
||||
$data = $this->_data;
|
||||
}
|
||||
|
||||
// Cast as an array if not already
|
||||
if (is_array($data) === FALSE)
|
||||
{
|
||||
$data = (array) $data;
|
||||
}
|
||||
|
||||
// Check if it's a multi-dimensional array
|
||||
if (isset($data[0]) && count($data) !== count($data, COUNT_RECURSIVE))
|
||||
{
|
||||
// Multi-dimensional array
|
||||
$headings = array_keys($data[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Single array
|
||||
$headings = array_keys($data);
|
||||
$data = [$data];
|
||||
}
|
||||
|
||||
// Load the table library
|
||||
$this->_CI->load->library('table');
|
||||
|
||||
$this->_CI->table->set_heading($headings);
|
||||
|
||||
foreach ($data as $row)
|
||||
{
|
||||
// Suppressing the "array to string conversion" notice
|
||||
// Keep the "evil" @ here
|
||||
$row = @array_map('strval', $row);
|
||||
|
||||
$this->_CI->table->add_row($row);
|
||||
}
|
||||
|
||||
return $this->_CI->table->generate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @link http://www.metashock.de/2014/02/create-csv-file-in-memory-php/
|
||||
* @param mixed|NULL $data Optional data to pass, so as to override the data passed
|
||||
* to the constructor
|
||||
* @param string $delimiter The optional delimiter parameter sets the field
|
||||
* delimiter (one character only). NULL will use the default value (,)
|
||||
* @param string $enclosure The optional enclosure parameter sets the field
|
||||
* enclosure (one character only). NULL will use the default value (")
|
||||
* @return string A csv string
|
||||
*/
|
||||
public function to_csv($data = NULL, $delimiter = ',', $enclosure = '"')
|
||||
{
|
||||
// Use a threshold of 1 MB (1024 * 1024)
|
||||
$handle = fopen('php://temp/maxmemory:1048576', 'w');
|
||||
if ($handle === FALSE)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// If no data is passed as a parameter, then use the data passed
|
||||
// via the constructor
|
||||
if ($data === NULL && func_num_args() === 0)
|
||||
{
|
||||
$data = $this->_data;
|
||||
}
|
||||
|
||||
// If NULL, then set as the default delimiter
|
||||
if ($delimiter === NULL)
|
||||
{
|
||||
$delimiter = ',';
|
||||
}
|
||||
|
||||
// If NULL, then set as the default enclosure
|
||||
if ($enclosure === NULL)
|
||||
{
|
||||
$enclosure = '"';
|
||||
}
|
||||
|
||||
// Cast as an array if not already
|
||||
if (is_array($data) === FALSE)
|
||||
{
|
||||
$data = (array) $data;
|
||||
}
|
||||
|
||||
// Check if it's a multi-dimensional array
|
||||
if (isset($data[0]) && count($data) !== count($data, COUNT_RECURSIVE))
|
||||
{
|
||||
// Multi-dimensional array
|
||||
$headings = array_keys($data[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Single array
|
||||
$headings = array_keys($data);
|
||||
$data = [$data];
|
||||
}
|
||||
|
||||
// Apply the headings
|
||||
fputcsv($handle, $headings, $delimiter, $enclosure);
|
||||
|
||||
foreach ($data as $record)
|
||||
{
|
||||
// If the record is not an array, then break. This is because the 2nd param of
|
||||
// fputcsv() should be an array
|
||||
if (is_array($record) === FALSE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Suppressing the "array to string conversion" notice.
|
||||
// Keep the "evil" @ here.
|
||||
$record = @ array_map('strval', $record);
|
||||
|
||||
// Returns the length of the string written or FALSE
|
||||
fputcsv($handle, $record, $delimiter, $enclosure);
|
||||
}
|
||||
|
||||
// Reset the file pointer
|
||||
rewind($handle);
|
||||
|
||||
// Retrieve the csv contents
|
||||
$csv = stream_get_contents($handle);
|
||||
|
||||
// Close the handle
|
||||
fclose($handle);
|
||||
|
||||
return $csv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode data as json
|
||||
*
|
||||
* @param mixed|NULL $data Optional data to pass, so as to override the data passed
|
||||
* to the constructor
|
||||
* @return string Json representation of a value
|
||||
*/
|
||||
public function to_json($data = NULL)
|
||||
{
|
||||
// If no data is passed as a parameter, then use the data passed
|
||||
// via the constructor
|
||||
if ($data === NULL && func_num_args() === 0)
|
||||
{
|
||||
$data = $this->_data;
|
||||
}
|
||||
|
||||
// Get the callback parameter (if set)
|
||||
$callback = $this->_CI->input->get('callback');
|
||||
|
||||
if (empty($callback) === TRUE)
|
||||
{
|
||||
return json_encode($data);
|
||||
}
|
||||
|
||||
// We only honour a jsonp callback which are valid javascript identifiers
|
||||
elseif (preg_match('/^[a-z_\$][a-z0-9\$_]*(\.[a-z_\$][a-z0-9\$_]*)*$/i', $callback))
|
||||
{
|
||||
// Return the data as encoded json with a callback
|
||||
return $callback . '(' . json_encode($data) . ');';
|
||||
}
|
||||
|
||||
// An invalid jsonp callback function provided.
|
||||
// Though I don't believe this should be hardcoded here
|
||||
$data['warning'] = 'INVALID JSONP CALLBACK: ' . $callback;
|
||||
|
||||
return json_encode($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode data as a serialized array
|
||||
*
|
||||
* @param mixed|NULL $data Optional data to pass, so as to override the data passed
|
||||
* to the constructor
|
||||
* @return string Serialized data
|
||||
*/
|
||||
public function to_serialized($data = NULL)
|
||||
{
|
||||
// If no data is passed as a parameter, then use the data passed
|
||||
// via the constructor
|
||||
if ($data === NULL && func_num_args() === 0)
|
||||
{
|
||||
$data = $this->_data;
|
||||
}
|
||||
|
||||
return serialize($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format data using a PHP structure
|
||||
*
|
||||
* @param mixed|NULL $data Optional data to pass, so as to override the data passed
|
||||
* to the constructor
|
||||
* @return mixed String representation of a variable
|
||||
*/
|
||||
public function to_php($data = NULL)
|
||||
{
|
||||
// If no data is passed as a parameter, then use the data passed
|
||||
// via the constructor
|
||||
if ($data === NULL && func_num_args() === 0)
|
||||
{
|
||||
$data = $this->_data;
|
||||
}
|
||||
|
||||
return var_export($data, TRUE);
|
||||
}
|
||||
|
||||
// INTERNAL FUNCTIONS
|
||||
|
||||
/**
|
||||
* @param $data XML string
|
||||
* @return SimpleXMLElement XML element object; otherwise, empty array
|
||||
*/
|
||||
protected function _from_xml($data)
|
||||
{
|
||||
return $data ? (array) simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $data CSV string
|
||||
* @param string $delimiter The optional delimiter parameter sets the field
|
||||
* delimiter (one character only). NULL will use the default value (,)
|
||||
* @param string $enclosure The optional enclosure parameter sets the field
|
||||
* enclosure (one character only). NULL will use the default value (")
|
||||
* @return array A multi-dimensional array with the outer array being the number of rows
|
||||
* and the inner arrays the individual fields
|
||||
*/
|
||||
protected function _from_csv($data, $delimiter = ',', $enclosure = '"')
|
||||
{
|
||||
// If NULL, then set as the default delimiter
|
||||
if ($delimiter === NULL)
|
||||
{
|
||||
$delimiter = ',';
|
||||
}
|
||||
|
||||
// If NULL, then set as the default enclosure
|
||||
if ($enclosure === NULL)
|
||||
{
|
||||
$enclosure = '"';
|
||||
}
|
||||
|
||||
return str_getcsv($data, $delimiter, $enclosure);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data Encoded json string
|
||||
* @return mixed Decoded json string with leading and trailing whitespace removed
|
||||
*/
|
||||
protected function _from_json($data)
|
||||
{
|
||||
return json_decode(trim($data));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string Data to unserialized
|
||||
* @return mixed Unserialized data
|
||||
*/
|
||||
protected function _from_serialize($data)
|
||||
{
|
||||
return unserialize(trim($data));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data Data to trim leading and trailing whitespace
|
||||
* @return string Data with leading and trailing whitespace removed
|
||||
*/
|
||||
protected function _from_php($data)
|
||||
{
|
||||
return trim($data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
class PersonLogLib
|
||||
{
|
||||
const PARKED_LOGNAME = 'Parked';
|
||||
const ONHOLD_LOGNAME = 'Onhold';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
@@ -91,26 +92,20 @@ class PersonLogLib
|
||||
*/
|
||||
public function park($person_id, $date, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null)
|
||||
{
|
||||
$logdata = array(
|
||||
$onhold = $this->getOnHoldDate($person_id);
|
||||
|
||||
if (hasData($onhold))
|
||||
return error("Person already on hold");
|
||||
|
||||
$logjson = array(
|
||||
'name' => self::PARKED_LOGNAME
|
||||
);
|
||||
|
||||
$data = array(
|
||||
'person_id' => $person_id,
|
||||
'zeitpunkt' => $date,
|
||||
'taetigkeit_kurzbz' => $taetigkeit_kurzbz,
|
||||
'app' => $app,
|
||||
'oe_kurzbz' => $oe_kurzbz,
|
||||
'logtype_kurzbz' => 'Processstate',
|
||||
'logdata' => json_encode($logdata),
|
||||
'insertvon' => $user
|
||||
);
|
||||
|
||||
return $this->ci->PersonLogModel->insert($data);
|
||||
return $this->_savePsLog($person_id, $date, $taetigkeit_kurzbz, $logjson, $app, $oe_kurzbz, $user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unparks a person, i.e. removes all log entries in the future
|
||||
* Unparks a person, i.e. removes all log entries in the future with logname for parking
|
||||
* @param $person_id
|
||||
* @return array with deleted logids
|
||||
*/
|
||||
@@ -131,17 +126,9 @@ class PersonLogLib
|
||||
{
|
||||
$deleted[] = $log->log_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $delresult;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
|
||||
return success($deleted);
|
||||
}
|
||||
@@ -172,4 +159,111 @@ class PersonLogLib
|
||||
|
||||
return $parkeddate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets person on hold, i.e. marks a person so no actions are expected for the person (e.g. as a prestudent).
|
||||
* Done by adding a logentry with a special name. can be undone only manually by clicking button.
|
||||
* @param $person_id
|
||||
* @param $date
|
||||
* @param $taetigkeit_kurzbz
|
||||
* @param string $app
|
||||
* @param null $oe_kurzbz
|
||||
* @param null $user
|
||||
* @return array
|
||||
*/
|
||||
public function setOnHold($person_id, $date, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null)
|
||||
{
|
||||
$parked = $this->getParkedDate($person_id);
|
||||
|
||||
if (hasData($parked))
|
||||
return error("Person already parked");
|
||||
|
||||
$logjson = array(
|
||||
'name' => self::ONHOLD_LOGNAME
|
||||
);
|
||||
|
||||
return $this->_savePsLog($person_id, $date, $taetigkeit_kurzbz, $logjson, $app, $oe_kurzbz, $user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes on hold status, i.e. removes all log entries with logname for on hold
|
||||
* @param $person_id
|
||||
* @return array
|
||||
*/
|
||||
public function removeOnHold($person_id)
|
||||
{
|
||||
$deleted = array();
|
||||
|
||||
$result = $this->ci->PersonLogModel->filterLog($person_id);
|
||||
if (hasData($result))
|
||||
{
|
||||
foreach ($result->retval as $log)
|
||||
{
|
||||
$logdata = json_decode($log->logdata);
|
||||
if (isset($logdata->name) && $logdata->name === self::ONHOLD_LOGNAME)
|
||||
{
|
||||
$delresult = $this->ci->PersonLogModel->deleteLog($log->log_id);
|
||||
if (isSuccess($delresult))
|
||||
{
|
||||
$deleted[] = $log->log_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return success($deleted);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets date until which a person is on hold
|
||||
* @param $person_id
|
||||
* @return the date if person is on hold, null otherwise
|
||||
*/
|
||||
public function getOnHoldDate($person_id)
|
||||
{
|
||||
$result = $this->ci->PersonLogModel->filterLog($person_id);
|
||||
|
||||
$onholddate = null;
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
foreach ($result->retval as $log)
|
||||
{
|
||||
$logdata = json_decode($log->logdata);
|
||||
if (isset($logdata->name) && $logdata->name === self::ONHOLD_LOGNAME)
|
||||
{
|
||||
$onholddate = $log->zeitpunkt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $onholddate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves a processstate log with specified parameters, including a specified log date.
|
||||
* @param $person_id
|
||||
* @param $date
|
||||
* @param $taetigkeit_kurzbz
|
||||
* @param $logjson
|
||||
* @param string $app
|
||||
* @param null $oe_kurzbz
|
||||
* @param null $user
|
||||
* @return mixed
|
||||
*/
|
||||
private function _savePsLog($person_id, $date, $taetigkeit_kurzbz, $logjson, $app = 'core', $oe_kurzbz = null, $user = null)
|
||||
{
|
||||
$data = array(
|
||||
'person_id' => $person_id,
|
||||
'zeitpunkt' => $date,
|
||||
'taetigkeit_kurzbz' => $taetigkeit_kurzbz,
|
||||
'app' => $app,
|
||||
'oe_kurzbz' => $oe_kurzbz,
|
||||
'logtype_kurzbz' => 'Processstate',
|
||||
'logdata' => json_encode($logjson),
|
||||
'insertvon' => $user
|
||||
);
|
||||
|
||||
return $this->ci->PersonLogModel->insert($data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\', \'Interessent rejected\'';
|
||||
$LOGDATA_NAME_PARKED = '\'Parked\'';
|
||||
$LOGDATA_NAME_ONHOLD = '\'Onhold\'';
|
||||
$LOGTYPE_KURZBZ = '\'Processstate\'';
|
||||
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
|
||||
$ADDITIONAL_STG = '10021,10027';
|
||||
@@ -24,6 +25,7 @@
|
||||
pl.zeitpunkt AS "LockDate",
|
||||
pl.lockuser AS "LockUser",
|
||||
pd.parkdate AS "ParkDate",
|
||||
ohd.onholddate AS "OnholdDate",
|
||||
(
|
||||
SELECT l.zeitpunkt
|
||||
FROM system.tbl_log l
|
||||
@@ -228,6 +230,14 @@
|
||||
AND l.logdata->>\'name\' = '.$LOGDATA_NAME_PARKED.'
|
||||
AND l.zeitpunkt >= NOW()
|
||||
) pd USING(person_id)
|
||||
LEFT JOIN (
|
||||
SELECT l.person_id,
|
||||
l.zeitpunkt AS onholddate
|
||||
FROM system.tbl_log l
|
||||
WHERE l.logtype_kurzbz = '.$LOGTYPE_KURZBZ.'
|
||||
AND l.logdata->>\'name\' = '.$LOGDATA_NAME_ONHOLD.'
|
||||
AND l.zeitpunkt >= NOW()
|
||||
) ohd USING(person_id)
|
||||
WHERE
|
||||
EXISTS (
|
||||
SELECT 1
|
||||
@@ -278,6 +288,7 @@
|
||||
ucfirst($this->p->t('global', 'sperrdatum')),
|
||||
ucfirst($this->p->t('global', 'gesperrtVon')),
|
||||
ucfirst($this->p->t('global', 'parkdatum')),
|
||||
ucfirst($this->p->t('global', 'rueckstelldatum')),
|
||||
ucfirst($this->p->t('global', 'letzteAktion')),
|
||||
'Aktionstyp',
|
||||
'AnzahlAktePflicht',
|
||||
@@ -340,6 +351,11 @@
|
||||
$datasetRaw->{'ParkDate'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'OnholdDate'} == null)
|
||||
{
|
||||
$datasetRaw->{'OnholdDate'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'StgAbgeschickt'} == null)
|
||||
{
|
||||
$datasetRaw->{'StgAbgeschickt'} = '-';
|
||||
@@ -376,6 +392,11 @@
|
||||
$mark = FilterWidget::DEFAULT_MARK_ROW_CLASS;
|
||||
}
|
||||
|
||||
if ($datasetRaw->OnholdDate != null)
|
||||
{
|
||||
$mark = "text-success";
|
||||
}
|
||||
|
||||
// Parking has priority over locking
|
||||
if ($datasetRaw->ParkDate != null)
|
||||
{
|
||||
|
||||
@@ -34,7 +34,14 @@
|
||||
'nichtsZumAusparken',
|
||||
'fehlerBeimAusparken',
|
||||
'fehlerBeimParken',
|
||||
'bewerberGeparktBis'
|
||||
'bewerberGeparktBis',
|
||||
'bewerberOnHold',
|
||||
'bewerberOnHoldEntfernen',
|
||||
'bewerberOnHoldBis',
|
||||
'nichtsZumEntfernen',
|
||||
'fehlerBeimEntfernen',
|
||||
'rueckstelldatumUeberschritten',
|
||||
'parkenZurueckstellenInfo'
|
||||
),
|
||||
'ui' => array(
|
||||
'gespeichert',
|
||||
@@ -176,7 +183,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div id="parking"></div>
|
||||
<div id="postponing"></div>
|
||||
<div id="logs">
|
||||
<?php $this->load->view('system/infocenter/logs.php'); ?>
|
||||
</div>
|
||||
|
||||
@@ -235,6 +235,7 @@
|
||||
'filter_id' => $this->input->get('filter_id'),
|
||||
'requiredPermissions' => 'infocenter',
|
||||
'datasetRepresentation' => 'tablesorter',
|
||||
'reloadDataset' => ($this->input->get('reloadDataset')=='true'?true:false),
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
'columnsAliases' => array(
|
||||
|
||||
@@ -204,6 +204,7 @@
|
||||
'filter_id' => $this->input->get('filter_id'),
|
||||
'requiredPermissions' => 'infocenter',
|
||||
'datasetRepresentation' => 'tablesorter',
|
||||
'reloadDataset' => ($this->input->get('reloadDataset')=='true'?true:false),
|
||||
'checkboxes' => 'PersonId',
|
||||
'additionalColumns' => array('Details'),
|
||||
'columnsAliases' => array(
|
||||
|
||||
@@ -35,6 +35,7 @@ require_once('../../../include/ort.class.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/mitarbeiter.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
@@ -231,11 +232,21 @@ if ($num_rows_stpl>0)
|
||||
$titel = trim($row->titel);
|
||||
$gesamtanzahl = ($anzahl_grp!=0?$anzahl_grp:$anzahl_lvb);
|
||||
$ort->load($ortkurzbz);
|
||||
|
||||
|
||||
// no profile link for fake Mitarbeiter like Dummylektor, Personalnr must be > 0
|
||||
$profileLink = true;
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
|
||||
if ($mitarbeiter->load($row->uid))
|
||||
{
|
||||
if (isset($mitarbeiter->personalnummer) && is_numeric($mitarbeiter->personalnummer) && (int)$mitarbeiter->personalnummer < 0)
|
||||
$profileLink = false;
|
||||
}
|
||||
|
||||
echo '
|
||||
<tr class="liste'.($i%2).'">
|
||||
<td>'.$db->convert_html_chars($unr).'</td>
|
||||
<td><A class="Item" href="../profile/index.php?uid='.$row->uid.'" target="_self" onClick="window.resizeTo(1200,880)">'.$db->convert_html_chars($titelpre.' '.$pers_vorname.' '.$pers_nachname.' '.$titelpost).'</A></td>
|
||||
<td>'.($profileLink ? '<A class="Item" href="../profile/index.php?uid='.$row->uid.'" target="_self" onClick="window.resizeTo(1200,880)">' : '').$db->convert_html_chars($titelpre.' '.$pers_vorname.' '.$pers_nachname.' '.$titelpost).($profileLink ? '</A>' : '').'</td>
|
||||
<td title="'.$db->convert_html_chars($ort->bezeichnung).'">'.(!empty($ortkurzbz)?($ort->content_id!=''?'<a href="../../../cms/content.php?content_id='.$ort->content_id.'" target="_self" onClick="window.resizeTo(1200,880)">'.$db->convert_html_chars($ortkurzbz).'</a>':$db->convert_html_chars($ortkurzbz)):$db->convert_html_chars($ortkurzbz)).'</td>
|
||||
<td>'.$db->convert_html_chars($lehrfachkurzbz).'</td>
|
||||
<td>'.$db->convert_html_chars($bezeichnung).'</td>
|
||||
|
||||
@@ -66,6 +66,9 @@ if (isset($_GET['uid']) && $_GET['uid'] != $uid)
|
||||
$uid = stripslashes($_GET['uid']);
|
||||
$ansicht = true;
|
||||
}
|
||||
|
||||
$adminOrOwnUser = $rechte->isBerechtigt('admin') || !$ansicht;
|
||||
|
||||
if ($rechte->isBerechtigt('basis/kontakt'))
|
||||
$ansicht = false;
|
||||
|
||||
@@ -127,6 +130,9 @@ if (!$user->load($uid))
|
||||
|
||||
if ($type == 'mitarbeiter')
|
||||
{
|
||||
if (isset($user->personalnummer) && is_numeric($user->personalnummer) && (int)$user->personalnummer < 0)
|
||||
die($p->t('profil/keinGueltigesProfil'));
|
||||
|
||||
$vorwahl = '';
|
||||
$kontakt = new kontakt();
|
||||
$kontakt->loadFirmaKontakttyp($user->standort_id,'telefon');
|
||||
@@ -156,12 +162,7 @@ echo '<!DOCTYPE HTML>
|
||||
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t1").tablesorter(
|
||||
{
|
||||
sortList: [[0,0]],
|
||||
widgets: ["zebra"]
|
||||
});
|
||||
$("#t2").tablesorter(
|
||||
$("#t1, #t2, #tfuture").tablesorter(
|
||||
{
|
||||
sortList: [[0,0]],
|
||||
widgets: ["zebra"]
|
||||
@@ -504,36 +505,55 @@ echo '<tr>
|
||||
if (!defined('CIS_PROFIL_FUNKTIONEN_ANZEIGEN') || CIS_PROFIL_FUNKTIONEN_ANZEIGEN)
|
||||
{
|
||||
//Funktionen
|
||||
$qry = "SELECT
|
||||
$baseqry = "SELECT
|
||||
*, tbl_benutzerfunktion.oe_kurzbz as oe_kurzbz, tbl_organisationseinheit.bezeichnung as oe_bezeichnung,
|
||||
tbl_benutzerfunktion.semester, tbl_benutzerfunktion.bezeichnung as bf_bezeichnung,
|
||||
tbl_benutzerfunktion.datum_von, tbl_benutzerfunktion.datum_bis
|
||||
tbl_benutzerfunktion.wochenstunden, tbl_benutzerfunktion.datum_von, tbl_benutzerfunktion.datum_bis
|
||||
FROM
|
||||
public.tbl_benutzerfunktion
|
||||
JOIN public.tbl_funktion USING(funktion_kurzbz)
|
||||
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
|
||||
WHERE
|
||||
uid=".$db->db_add_param($uid)." AND
|
||||
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())";
|
||||
uid=".$db->db_add_param($uid);
|
||||
|
||||
if ($result_funktion = $db->db_query($qry))
|
||||
$currfunkqry = $baseqry . " AND ((tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
|
||||
AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()))";
|
||||
$futurefunkqry = $baseqry . " AND (tbl_benutzerfunktion.datum_von>now())";
|
||||
|
||||
printFunctionsTable($currfunkqry, 'profil/funktionen', 't1', true);
|
||||
printFunctionsTable($futurefunkqry, 'profil/zukuenftigeFunktionen', 'tfuture');
|
||||
}
|
||||
|
||||
/**
|
||||
* Print html table containing user functions.
|
||||
* @param $query string execute for getting data
|
||||
* @param $tableid string html table id
|
||||
* @param $showVertragsstunden bool show Vertragsstunden sum near Wochenstunden sum
|
||||
*/
|
||||
function printFunctionsTable($query, $headingphrase, $tableid, $showVertragsstunden = false)
|
||||
{
|
||||
global $db, $p, $datum_obj, $uid, $adminOrOwnUser;
|
||||
|
||||
if ($result_funktion = $db->db_query($query))
|
||||
{
|
||||
if ($db->db_num_rows($result_funktion) > 0)
|
||||
{
|
||||
echo '<b>'.$p->t('profil/funktionen').'</b>
|
||||
<table class="tablesorter" id="t1">
|
||||
echo '<b>'.$p->t($headingphrase).'</b>';
|
||||
echo '
|
||||
<table class="tablesorter" id="'.$tableid.'">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>'.$p->t('global/bezeichnung').'</th>
|
||||
<th>'.$p->t('global/organisationseinheit').'</th>
|
||||
<th>'.$p->t('global/semester').'</th>
|
||||
<th>'.$p->t('global/institut').'</th>
|
||||
<th>'.$p->t('profil/gueltigvon').'</th>
|
||||
<th>'.$p->t('profil/gueltigbis').'</th>
|
||||
</tr>
|
||||
<th>'.$p->t('profil/gueltigbis').'</th>'.
|
||||
($adminOrOwnUser ? '<th>'.$p->t('profil/wochenstunden').'</th>' : '').
|
||||
'</tr>
|
||||
</thead>
|
||||
<tbody>';
|
||||
|
||||
$wochenstunden_sum = 0.00;
|
||||
|
||||
while($row_funktion = $db->db_fetch_object($result_funktion))
|
||||
{
|
||||
echo "
|
||||
@@ -544,13 +564,50 @@ if (!defined('CIS_PROFIL_FUNKTIONEN_ANZEIGEN') || CIS_PROFIL_FUNKTIONEN_ANZEIGEN
|
||||
echo ' - '.$row_funktion->bf_bezeichnung;
|
||||
echo "</td>
|
||||
<td nowrap>".$row_funktion->organisationseinheittyp_kurzbz.' '.$row_funktion->oe_bezeichnung."</td>
|
||||
<td>$row_funktion->semester</td>
|
||||
<td>$row_funktion->fachbereich_kurzbz</td>
|
||||
<td>".$datum_obj->formatDatum($row_funktion->datum_von,'d.m.Y')."</td>
|
||||
<td>".$datum_obj->formatDatum($row_funktion->datum_bis,'d.m.Y')."</td>
|
||||
</tr>";
|
||||
<td>".$datum_obj->formatDatum($row_funktion->datum_bis,'d.m.Y')."</td>".
|
||||
($adminOrOwnUser ? "<td>".number_format($row_funktion->wochenstunden, 2)."</td>" : "").
|
||||
"</tr>";
|
||||
|
||||
if(isset($row_funktion->wochenstunden) && $adminOrOwnUser)
|
||||
$wochenstunden_sum += (double)$row_funktion->wochenstunden;
|
||||
}
|
||||
echo '</tbody></table><br>';
|
||||
echo '</tbody><br>';
|
||||
|
||||
//vertragsstunden
|
||||
if ($showVertragsstunden === true && $adminOrOwnUser)
|
||||
{
|
||||
$vertragsstunden = 0.00;
|
||||
$qry = "SELECT sum(vertragsstunden) AS vertragsstdsumme from bis.tbl_bisverwendung
|
||||
WHERE mitarbeiter_uid = ".$db->db_add_param($uid)."
|
||||
AND (ende > now() OR ende IS NULL)";
|
||||
|
||||
if ($result_vertragsstd = $db->db_query($qry))
|
||||
{
|
||||
if ($db->db_num_rows($result_vertragsstd) > 0)
|
||||
{
|
||||
while($row_vertragsstd = $db->db_fetch_object($result_vertragsstd))
|
||||
{
|
||||
$vertragsstunden = $row_vertragsstd->vertragsstdsumme;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($adminOrOwnUser)
|
||||
{
|
||||
echo "
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<th colspan ='2'>Summe Wochenstunden".($showVertragsstunden === true ? " (".$p->t('profil/vertragsstunden').")" : "")."</th>
|
||||
<th style='padding: 4pt 0'> ".number_format($wochenstunden_sum, 2).($showVertragsstunden === true ?
|
||||
" (".number_format($vertragsstunden, 2).")" : "")."</th>
|
||||
</tr>
|
||||
</tfoot>";
|
||||
}
|
||||
echo "</table>";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,8 @@ function searchPerson($searchItems)
|
||||
{
|
||||
global $db, $p, $noalias, $uid;
|
||||
$bn = new benutzer();
|
||||
$bn->search($searchItems, 21);
|
||||
//search only active and Mitarbeiter with positive Personalnr
|
||||
$bn->search($searchItems, 21, true, true);
|
||||
|
||||
if(count($bn->result)>0)
|
||||
{
|
||||
|
||||
@@ -228,6 +228,7 @@
|
||||
"borgar/textile-js": "2.0.4",
|
||||
"BlackrockDigital/startbootstrap-sb-admin-2": "^3.3",
|
||||
|
||||
"chriskacerguis/codeigniter-restserver": "^3.0",
|
||||
"christianbach/tablesorter": "^1.0",
|
||||
"codeigniter/framework": "3.*",
|
||||
"components/jquery": "^3.2",
|
||||
|
||||
Generated
+41
-1
@@ -4,7 +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"
|
||||
],
|
||||
"content-hash": "ad1bf16a24075268ce1cf2a033f9e7fb",
|
||||
"hash": "44a02c1e72626f05e682de2030c8adad",
|
||||
"content-hash": "e0898c2ba3d18593851989029e54bedb",
|
||||
"packages": [
|
||||
{
|
||||
"name": "BlackrockDigital/startbootstrap-sb-admin-2",
|
||||
@@ -70,6 +71,45 @@
|
||||
},
|
||||
"type": "library"
|
||||
},
|
||||
{
|
||||
"name": "chriskacerguis/codeigniter-restserver",
|
||||
"version": "3.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/chriskacerguis/codeigniter-restserver.git",
|
||||
"reference": "3a5ba0dffdebd24cc215ef714b72208c88304203"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/chriskacerguis/codeigniter-restserver/zipball/3a5ba0dffdebd24cc215ef714b72208c88304203",
|
||||
"reference": "3a5ba0dffdebd24cc215ef714b72208c88304203",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"codeigniter/framework": "^3.0.4",
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"application/libraries/Format.php",
|
||||
"application/libraries/REST_Controller.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Chris Kacerguis",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "REST Server for the CodeIgniter framework",
|
||||
"homepage": "https://github.com/chriskacerguis/codeigniter-restserver",
|
||||
"time": "2017-09-23 16:44:55"
|
||||
},
|
||||
{
|
||||
"name": "christianbach/tablesorter",
|
||||
"version": "1.0.1",
|
||||
|
||||
+524
-520
File diff suppressed because it is too large
Load Diff
@@ -867,7 +867,7 @@ class mitarbeiter extends benutzer
|
||||
* Nachname, Vorname, UID $filter enthaelt
|
||||
* @param $filter
|
||||
*/
|
||||
public function search($filter, $limit=null, $aktiv=true)
|
||||
public function search($filter, $limit=null, $aktiv=true, $positivePersonalnr=false)
|
||||
{
|
||||
$qry = "SELECT vorname, nachname, titelpre, titelpost, kurzbz, vornamen, uid
|
||||
FROM campus.vw_mitarbeiter
|
||||
@@ -882,7 +882,6 @@ class mitarbeiter extends benutzer
|
||||
if(!is_null($limit) && is_numeric($limit))
|
||||
$qry.=" LIMIT ".$limit;
|
||||
|
||||
//echo $qry;
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
|
||||
@@ -165,7 +165,7 @@ class pruefling extends basis_db
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt einen Puefling anhand der Prestudent_id
|
||||
* Laedt einen Pruefling anhand der Prestudent_id
|
||||
*
|
||||
* @param $prestudent_id
|
||||
* @return boolean
|
||||
@@ -199,6 +199,40 @@ class pruefling extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle Prueflinge anhand der Prestudent_id
|
||||
*
|
||||
* @param $prestudent_id
|
||||
* @return boolean
|
||||
*/
|
||||
public function getPrueflinge($prestudent_id)
|
||||
{
|
||||
$qry = "SELECT * FROM testtool.tbl_pruefling WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new pruefling();
|
||||
|
||||
$obj->pruefling_id = $row->pruefling_id;
|
||||
$obj->studiengang_kz = $row->studiengang_kz;
|
||||
$obj->idnachweis = $row->idnachweis;
|
||||
$obj->registriert = $row->registriert;
|
||||
$obj->prestudent_id = $row->prestudent_id;
|
||||
$obj->semester = $row->semester;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler beim Laden";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ermittelt den aktuellen Level (schwierigkeitsgrad der Frage)
|
||||
* des Prueflings fuer das uebergebene Gebiet
|
||||
|
||||
+87
-83
@@ -1,83 +1,87 @@
|
||||
<?php
|
||||
$this->phrasen['profil/profil']='Profil';
|
||||
$this->phrasen['profil/mitarbeiter']='MitarbeiterIn';
|
||||
$this->phrasen['profil/home']='HOME';
|
||||
$this->phrasen['profil/meinCis']='Mein CIS';
|
||||
$this->phrasen['profil/bildHochladen']='Profilfoto hochladen';
|
||||
$this->phrasen['profil/email']='eMail';
|
||||
$this->phrasen['profil/kontaktPrivat']='Private Kontakte';
|
||||
$this->phrasen['profil/mobil']='Mobil';
|
||||
$this->phrasen['profil/telefon']='Telefon';
|
||||
$this->phrasen['profil/intern']='Intern';
|
||||
$this->phrasen['profil/alias']='Alias';
|
||||
$this->phrasen['profil/homepage']='Homepage';
|
||||
$this->phrasen['profil/student']='StudentIn';
|
||||
$this->phrasen['profil/martrikelnummer']='Personenkennzeichen';
|
||||
$this->phrasen['profil/leistungsbeurteilung']='Leistungsbeurteilung';
|
||||
$this->phrasen['profil/kurzzeichen']='Kurzzeichen';
|
||||
$this->phrasen['profil/telefonTw']='Telefon';
|
||||
$this->phrasen['profil/faxTw']='Fax';
|
||||
$this->phrasen['profil/zeitwuensche']='Zeitwünsche';
|
||||
$this->phrasen['profil/funktionen']='Funktionen';
|
||||
$this->phrasen['profil/entlehnteBetriebsmittel']='Entlehnte Betriebsmittel';
|
||||
$this->phrasen['profil/betriebsmittel']='Betriebsmittel';
|
||||
$this->phrasen['profil/nummer']='Nummer';
|
||||
$this->phrasen['profil/ausgegebenAm']='Ausgegeben am';
|
||||
$this->phrasen['profil/sieSindMitgliedInFolgendenVerteilern']='Sie sind Mitglied in folgenden Verteilern';
|
||||
$this->phrasen['profil/derUserIstInFolgendenVerteilern'] = 'Der User %s ist Mitglied in folgenden Verteilern';
|
||||
$this->phrasen['profil/alleStudentenVon']='Alle StudentInnen von';
|
||||
$this->phrasen['profil/kurzbeschreibungFuerOeh']='Kurzbeschreibung für die ÖH-Kandidatur';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='Sollten Ihre Daten nicht stimmen, wenden Sie sich bitte an die zuständige Assistenz';
|
||||
$this->phrasen['profil/esWurdenKeineProfileGefunden']='Es wurden keine oder mehrere Profile für Ihren Useraccount gefunden';
|
||||
$this->phrasen['profil/adminstration']='Administration';
|
||||
$this->phrasen['profil/zustaendigeAssistenz']='zuständige Assistenz';
|
||||
$this->phrasen['profil/wendenSieSichAn']='Bitte wenden Sie sich an die';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='Sollten Ihre Daten nicht stimmen, wenden Sie sich bitte an die';
|
||||
$this->phrasen['profil/buero']='Büro';
|
||||
$this->phrasen['profil/zeitsperrenVon']='Zeitsperren von';
|
||||
$this->phrasen['profil/lvplanVon']='LV-Plan von';
|
||||
|
||||
$this->phrasen['profil/AccountInaktiv']='Achtung: Dieser Account ist nicht mehr aktiv';
|
||||
$this->phrasen['profil/inaktivStudent']='Achtung!<br> Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz
|
||||
deaktiviert wurde.Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht. <br><br>
|
||||
Sollte innerhalb von 6 Monaten (für Studierende) bzw. 3 Wochen (für AbbrecherInnen) nach der Deaktivierung keine
|
||||
neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch<br>- Ihr Account, <br>- Ihre Mailbox (inkl. aller E-Mails) und<br>
|
||||
- Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht.<br><br>Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
|
||||
sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.<br>';
|
||||
|
||||
$this->phrasen['profil/inaktivMitarbeiter']='Achtung!<br> Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz
|
||||
deaktiviert wurde.Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht. <br><br>
|
||||
Sollte innerhalb von 12 Monaten nach der Deaktivierung keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch<br>
|
||||
- Ihr Account, <br>- Ihre Mailbox (inkl. aller E-Mails) und<br>
|
||||
- Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht.<br><br>Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
|
||||
sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.<br>';
|
||||
|
||||
$this->phrasen['profil/inaktivSonstige']='Achtung!<br> Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz
|
||||
deaktiviert wurde.Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht. <br><br>
|
||||
Sollte innerhalb der nächsten Tagen keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch<br>
|
||||
- Ihr Account, <br>- Ihre Mailbox (inkl. aller E-Mails) und<br>
|
||||
- Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht.<br><br>Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
|
||||
sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.<br>';
|
||||
|
||||
$this->phrasen['profil/nurJPGBilder']='Derzeit können nur Bilder im JPG Format hochgeladen werden';
|
||||
$this->phrasen['profil/BilduploadInfotext']='Derzeit können nur Bilder im JPG Format mit einer Maximalgröße von 15MB hochgeladen werden!<br><br><b>Bitte beachten Sie die <a href="'.APP_ROOT.'cms/content.php?content_id=%s">Richtlinien für den Bildupload</a></b>';
|
||||
$this->phrasen['profil/Bild']='Profilfoto';
|
||||
$this->phrasen['profil/Bildupload']='Bildupload';
|
||||
$this->phrasen['profil/fotofreigeben']='Sperre des Profilfotos aufheben';
|
||||
$this->phrasen['profil/fotosperren']='Profilfoto sperren';
|
||||
$this->phrasen['profil/infotextSperre']='Gesperrte Profilbilder werden nur für Zutrittskarten verwendet und scheinen nicht auf Anwesenheitslisten oder in der Personensuche auf';
|
||||
$this->phrasen['profil/profilfotoGesperrt']='Profilfoto gesperrt';
|
||||
$this->phrasen['profil/profilfotoUploadGesperrt']='Der Upload des Profilfotos ist nicht mehr möglich';
|
||||
$this->phrasen['profil/fhausweisStatus']='FH-Ausweis Status';
|
||||
$this->phrasen['profil/fhausweisWurdeBereitsAusgegeben']='Der FH Ausweis ist am %s ausgegeben worden.';
|
||||
$this->phrasen['profil/ladenSieBitteEinGueltigesFotoHoch']='Laden Sie bitte ein gültiges Foto hoch';
|
||||
$this->phrasen['profil/fotoWurdeNochNichtAkzeptiert']='Foto wurde noch nicht akzeptiert';
|
||||
$this->phrasen['profil/fhausweisGedrucktAm']='FH-Ausweis gedruckt am';
|
||||
$this->phrasen['profil/fhausweisAbholbereitAmEmpfangAb']='FH-Ausweis abholbereit am Empfang ab';
|
||||
$this->phrasen['profil/fhausweisWurdeNochNichtGedruckt']='FH-Ausweis wurde noch nicht gedruckt';
|
||||
$this->phrasen['profil/ihrFotoWurdeNochNichtGeprueft']='Ihr Foto wurde noch nicht geprüft';
|
||||
$this->phrasen['profil/fotoAuswählen']='Klicken Sie auf das Bild um ein Foto hochzuladen';
|
||||
$this->phrasen['profil/bildSpeichern']='Bild speichern';
|
||||
$this->phrasen['profil/gueltigvon']='Gültig von';
|
||||
$this->phrasen['profil/gueltigbis']='Gültig bis';
|
||||
?>
|
||||
<?php
|
||||
$this->phrasen['profil/profil']='Profil';
|
||||
$this->phrasen['profil/mitarbeiter']='MitarbeiterIn';
|
||||
$this->phrasen['profil/home']='HOME';
|
||||
$this->phrasen['profil/meinCis']='Mein CIS';
|
||||
$this->phrasen['profil/bildHochladen']='Profilfoto hochladen';
|
||||
$this->phrasen['profil/email']='eMail';
|
||||
$this->phrasen['profil/kontaktPrivat']='Private Kontakte';
|
||||
$this->phrasen['profil/mobil']='Mobil';
|
||||
$this->phrasen['profil/telefon']='Telefon';
|
||||
$this->phrasen['profil/intern']='Intern';
|
||||
$this->phrasen['profil/alias']='Alias';
|
||||
$this->phrasen['profil/homepage']='Homepage';
|
||||
$this->phrasen['profil/student']='StudentIn';
|
||||
$this->phrasen['profil/martrikelnummer']='Personenkennzeichen';
|
||||
$this->phrasen['profil/leistungsbeurteilung']='Leistungsbeurteilung';
|
||||
$this->phrasen['profil/kurzzeichen']='Kurzzeichen';
|
||||
$this->phrasen['profil/telefonTw']='Telefon';
|
||||
$this->phrasen['profil/faxTw']='Fax';
|
||||
$this->phrasen['profil/zeitwuensche']='Zeitwünsche';
|
||||
$this->phrasen['profil/funktionen']='Funktionen';
|
||||
$this->phrasen['profil/entlehnteBetriebsmittel']='Entlehnte Betriebsmittel';
|
||||
$this->phrasen['profil/betriebsmittel']='Betriebsmittel';
|
||||
$this->phrasen['profil/nummer']='Nummer';
|
||||
$this->phrasen['profil/ausgegebenAm']='Ausgegeben am';
|
||||
$this->phrasen['profil/sieSindMitgliedInFolgendenVerteilern']='Sie sind Mitglied in folgenden Verteilern';
|
||||
$this->phrasen['profil/derUserIstInFolgendenVerteilern'] = 'Der User %s ist Mitglied in folgenden Verteilern';
|
||||
$this->phrasen['profil/alleStudentenVon']='Alle StudentInnen von';
|
||||
$this->phrasen['profil/kurzbeschreibungFuerOeh']='Kurzbeschreibung für die ÖH-Kandidatur';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='Sollten Ihre Daten nicht stimmen, wenden Sie sich bitte an die zuständige Assistenz';
|
||||
$this->phrasen['profil/esWurdenKeineProfileGefunden']='Es wurden keine oder mehrere Profile für Ihren Useraccount gefunden';
|
||||
$this->phrasen['profil/keinGueltigesProfil']='Kein gültiges Profil';
|
||||
$this->phrasen['profil/adminstration']='Administration';
|
||||
$this->phrasen['profil/zustaendigeAssistenz']='zuständige Assistenz';
|
||||
$this->phrasen['profil/wendenSieSichAn']='Bitte wenden Sie sich an die';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='Sollten Ihre Daten nicht stimmen, wenden Sie sich bitte an die';
|
||||
$this->phrasen['profil/buero']='Büro';
|
||||
$this->phrasen['profil/zeitsperrenVon']='Zeitsperren von';
|
||||
$this->phrasen['profil/lvplanVon']='LV-Plan von';
|
||||
|
||||
$this->phrasen['profil/AccountInaktiv']='Achtung: Dieser Account ist nicht mehr aktiv';
|
||||
$this->phrasen['profil/inaktivStudent']='Achtung!<br> Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz
|
||||
deaktiviert wurde.Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht. <br><br>
|
||||
Sollte innerhalb von 6 Monaten (für Studierende) bzw. 3 Wochen (für AbbrecherInnen) nach der Deaktivierung keine
|
||||
neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch<br>- Ihr Account, <br>- Ihre Mailbox (inkl. aller E-Mails) und<br>
|
||||
- Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht.<br><br>Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
|
||||
sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.<br>';
|
||||
|
||||
$this->phrasen['profil/inaktivMitarbeiter']='Achtung!<br> Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz
|
||||
deaktiviert wurde.Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht. <br><br>
|
||||
Sollte innerhalb von 12 Monaten nach der Deaktivierung keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch<br>
|
||||
- Ihr Account, <br>- Ihre Mailbox (inkl. aller E-Mails) und<br>
|
||||
- Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht.<br><br>Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
|
||||
sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.<br>';
|
||||
|
||||
$this->phrasen['profil/inaktivSonstige']='Achtung!<br> Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz
|
||||
deaktiviert wurde.Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht. <br><br>
|
||||
Sollte innerhalb der nächsten Tagen keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch<br>
|
||||
- Ihr Account, <br>- Ihre Mailbox (inkl. aller E-Mails) und<br>
|
||||
- Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht.<br><br>Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
|
||||
sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.<br>';
|
||||
|
||||
$this->phrasen['profil/nurJPGBilder']='Derzeit können nur Bilder im JPG Format hochgeladen werden';
|
||||
$this->phrasen['profil/BilduploadInfotext']='Derzeit können nur Bilder im JPG Format mit einer Maximalgröße von 15MB hochgeladen werden!<br><br><b>Bitte beachten Sie die <a href="'.APP_ROOT.'cms/content.php?content_id=%s">Richtlinien für den Bildupload</a></b>';
|
||||
$this->phrasen['profil/Bild']='Profilfoto';
|
||||
$this->phrasen['profil/Bildupload']='Bildupload';
|
||||
$this->phrasen['profil/fotofreigeben']='Sperre des Profilfotos aufheben';
|
||||
$this->phrasen['profil/fotosperren']='Profilfoto sperren';
|
||||
$this->phrasen['profil/infotextSperre']='Gesperrte Profilbilder werden nur für Zutrittskarten verwendet und scheinen nicht auf Anwesenheitslisten oder in der Personensuche auf';
|
||||
$this->phrasen['profil/profilfotoGesperrt']='Profilfoto gesperrt';
|
||||
$this->phrasen['profil/profilfotoUploadGesperrt']='Der Upload des Profilfotos ist nicht mehr möglich';
|
||||
$this->phrasen['profil/fhausweisStatus']='FH-Ausweis Status';
|
||||
$this->phrasen['profil/fhausweisWurdeBereitsAusgegeben']='Der FH Ausweis ist am %s ausgegeben worden.';
|
||||
$this->phrasen['profil/ladenSieBitteEinGueltigesFotoHoch']='Laden Sie bitte ein gültiges Foto hoch';
|
||||
$this->phrasen['profil/fotoWurdeNochNichtAkzeptiert']='Foto wurde noch nicht akzeptiert';
|
||||
$this->phrasen['profil/fhausweisGedrucktAm']='FH-Ausweis gedruckt am';
|
||||
$this->phrasen['profil/fhausweisAbholbereitAmEmpfangAb']='FH-Ausweis abholbereit am Empfang ab';
|
||||
$this->phrasen['profil/fhausweisWurdeNochNichtGedruckt']='FH-Ausweis wurde noch nicht gedruckt';
|
||||
$this->phrasen['profil/ihrFotoWurdeNochNichtGeprueft']='Ihr Foto wurde noch nicht geprüft';
|
||||
$this->phrasen['profil/fotoAuswählen']='Klicken Sie auf das Bild um ein Foto hochzuladen';
|
||||
$this->phrasen['profil/bildSpeichern']='Bild speichern';
|
||||
$this->phrasen['profil/gueltigvon']='Gültig von';
|
||||
$this->phrasen['profil/gueltigbis']='Gültig bis';
|
||||
$this->phrasen['profil/wochenstunden']='Wochenstunden';
|
||||
$this->phrasen['profil/vertragsstunden']='Vertragsstunden';
|
||||
$this->phrasen['profil/zukuenftigeFunktionen']='Zukünftige Funktionen';
|
||||
?>
|
||||
|
||||
+85
-81
@@ -1,81 +1,85 @@
|
||||
<?php
|
||||
$this->phrasen['profil/home']='HOME';
|
||||
$this->phrasen['profil/profil']='Profile';
|
||||
$this->phrasen['profil/mitarbeiter']='Employee';
|
||||
$this->phrasen['profil/meinCis']='My CIS';
|
||||
$this->phrasen['profil/bildHochladen']='Upload picture';
|
||||
$this->phrasen['profil/email']='eMail';
|
||||
$this->phrasen['profil/kontaktPrivat']='Private Contacts';
|
||||
$this->phrasen['profil/intern']='Intern';
|
||||
$this->phrasen['profil/alias']='Alias';
|
||||
$this->phrasen['profil/homepage']='Homepage';
|
||||
$this->phrasen['profil/student']='Student';
|
||||
$this->phrasen['profil/martrikelnummer']='matriculation number';
|
||||
$this->phrasen['profil/leistungsbeurteilung']='Performance assessment';
|
||||
$this->phrasen['profil/kurzzeichen']='Abbreviation';
|
||||
$this->phrasen['profil/telefonTw']='Telephone';
|
||||
$this->phrasen['profil/faxTw']='Fax';
|
||||
$this->phrasen['profil/zeitwuensche']='Preferred teaching times';
|
||||
$this->phrasen['profil/funktionen']='Functions';
|
||||
$this->phrasen['profil/entlehnteBetriebsmittel']='Borrowed equipment';
|
||||
$this->phrasen['profil/betriebsmittel']='Equipment';
|
||||
$this->phrasen['profil/nummer']='Number';
|
||||
$this->phrasen['profil/ausgegebenAm']='Issued on';
|
||||
$this->phrasen['profil/sieSindMitgliedInFolgendenVerteilern']='You are member of the following mailing lists';
|
||||
$this->phrasen['profil/derUserIstInFolgendenVerteilern'] = 'User %s is a member of the following mailing lists';
|
||||
$this->phrasen['profil/alleStudentenVon']='All students from';
|
||||
$this->phrasen['profil/kurzbeschreibungFuerOeh']='Brief description for the Austian Student Union candidacy';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='If your data is incorrect, please contact the responsible assistant';
|
||||
$this->phrasen['profil/esWurdenKeineProfileGefunden']='No profile ore multiple profiles were found for your user account';
|
||||
$this->phrasen['profil/adminstration']='Administration';
|
||||
$this->phrasen['profil/zustaendigeAssistenz']='Administrative Assistant';
|
||||
$this->phrasen['profil/wendenSieSichAn']='Please contact the';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='If your data is incorrect, please contact the responsible';
|
||||
$this->phrasen['profil/buero']='Office';
|
||||
$this->phrasen['profil/zeitsperrenVon']='Unavailabilities of';
|
||||
$this->phrasen['profil/lvplanVon']='Schedule from';
|
||||
|
||||
$this->phrasen['profil/AccountInaktiv']='NOTICE: This account is no longer active';
|
||||
$this->phrasen['profil/inaktivStudent']='NOTICE!<br> We would like to remind you that your user record has been deactivated.
|
||||
You were also removed from all e-mail distribution lists when your account was deactivated.<br><br>
|
||||
If your user account is not reactivated within 6 months (for students) or 3 weeks (for dropouts) of being deactivated, the following data will be automatically deleted:<br>
|
||||
- Your account<br>- Your mailbox (including all e-mails) and<br>- Your home directory (including all files).<br><br>
|
||||
If your account has been deactivated by mistake, please contact the administrative assistant for your degree program immediately.<br>';
|
||||
|
||||
$this->phrasen['profil/inaktivMitarbeiter']='NOTICE!<br> We would like to remind you that your user record has been deactivated.
|
||||
You were also removed from all e-mail distribution lists when your account was deactivated.<br><br>
|
||||
If your user account is not reactivated within 12 months of being deactivated, the following data will be automatically deleted:<br>
|
||||
- Your account<br>- Your mailbox (including all e-mails) and<br>- Your home directory (including all files).<br><br>
|
||||
If your account has been deactivated by mistake, please contact the administrative assistant for your degree program immediately.<br>';
|
||||
|
||||
$this->phrasen['profil/inaktivSonstige']='NOTICE!<br> We would like to remind you that your user record has been deactivated.
|
||||
You were also removed from all e-mail distribution lists when your account was deactivated.<br><br>
|
||||
If your user account is not reactivated within the next days of being deactivated, the following data will be automatically deleted:<br>
|
||||
- Your account<br>- Your mailbox (including all e-mails) and<br>- Your home directory (including all files).<br><br>
|
||||
If your account has been deactivated by mistake, please contact the administrative assistant for your degree program immediately.<br>';
|
||||
|
||||
|
||||
|
||||
|
||||
$this->phrasen['profil/nurJPGBilder']='Currently it is only possible to upload JPEG images';
|
||||
$this->phrasen['profil/BilduploadInfotext']='Currently it is only possible to upload JPG images with a maximum size of 15MB!<br><br><b>Please follow the <a href="'.APP_ROOT.'cms/content.php?content_id=%s">guidelines for uploading images</a></b>';
|
||||
$this->phrasen['profil/Bild']='Picture';
|
||||
$this->phrasen['profil/Bildupload']='Upload Picture';
|
||||
$this->phrasen['profil/fotofreigeben']='Unlock your profile photo';
|
||||
$this->phrasen['profil/fotosperren']='Lock your profile photo';
|
||||
$this->phrasen['profil/infotextSperre']='Locked profile photos are only used for access cards, and do not appear on attendance lists or in the people search';
|
||||
$this->phrasen['profil/profilfotoGesperrt']='Profile photo locked';
|
||||
$this->phrasen['profil/profilfotoUploadGesperrt']='It is no longer possible to upload a profile photo';
|
||||
$this->phrasen['profil/fhausweisStatus']='UAS ID card status';
|
||||
$this->phrasen['profil/fhausweisWurdeBereitsAusgegeben']='UAS ID card has already been issued on %s.';
|
||||
$this->phrasen['profil/ladenSieBitteEinGueltigesFotoHoch']='Please upload a valid photo';
|
||||
$this->phrasen['profil/fotoWurdeNochNichtAkzeptiert']='Photo has not yet been accepted';
|
||||
$this->phrasen['profil/fhausweisGedrucktAm']='UAS ID card printed on';
|
||||
$this->phrasen['profil/fhausweisAbholbereitAmEmpfangAb']='UAS ID card will be ready for pick-up at the information desk on';
|
||||
$this->phrasen['profil/fhausweisWurdeNochNichtGedruckt']='UAS ID card has not yet been printed';
|
||||
$this->phrasen['profil/ihrFotoWurdeNochNichtGeprueft']='Your photo has not yet been approved';
|
||||
$this->phrasen['profil/fotoAuswählen']='Click on the image below to upload a photo';
|
||||
$this->phrasen['profil/bildSpeichern']='Save image';
|
||||
$this->phrasen['profil/gueltigvon']='Valid from';
|
||||
$this->phrasen['profil/gueltigbis']='Valid to';
|
||||
?>
|
||||
<?php
|
||||
$this->phrasen['profil/home']='HOME';
|
||||
$this->phrasen['profil/profil']='Profile';
|
||||
$this->phrasen['profil/mitarbeiter']='Employee';
|
||||
$this->phrasen['profil/meinCis']='My CIS';
|
||||
$this->phrasen['profil/bildHochladen']='Upload picture';
|
||||
$this->phrasen['profil/email']='eMail';
|
||||
$this->phrasen['profil/kontaktPrivat']='Private Contacts';
|
||||
$this->phrasen['profil/intern']='Intern';
|
||||
$this->phrasen['profil/alias']='Alias';
|
||||
$this->phrasen['profil/homepage']='Homepage';
|
||||
$this->phrasen['profil/student']='Student';
|
||||
$this->phrasen['profil/martrikelnummer']='matriculation number';
|
||||
$this->phrasen['profil/leistungsbeurteilung']='Performance assessment';
|
||||
$this->phrasen['profil/kurzzeichen']='Abbreviation';
|
||||
$this->phrasen['profil/telefonTw']='Telephone';
|
||||
$this->phrasen['profil/faxTw']='Fax';
|
||||
$this->phrasen['profil/zeitwuensche']='Preferred teaching times';
|
||||
$this->phrasen['profil/funktionen']='Functions';
|
||||
$this->phrasen['profil/entlehnteBetriebsmittel']='Borrowed equipment';
|
||||
$this->phrasen['profil/betriebsmittel']='Equipment';
|
||||
$this->phrasen['profil/nummer']='Number';
|
||||
$this->phrasen['profil/ausgegebenAm']='Issued on';
|
||||
$this->phrasen['profil/sieSindMitgliedInFolgendenVerteilern']='You are member of the following mailing lists';
|
||||
$this->phrasen['profil/derUserIstInFolgendenVerteilern'] = 'User %s is a member of the following mailing lists';
|
||||
$this->phrasen['profil/alleStudentenVon']='All students from';
|
||||
$this->phrasen['profil/kurzbeschreibungFuerOeh']='Brief description for the Austian Student Union candidacy';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='If your data is incorrect, please contact the responsible assistant';
|
||||
$this->phrasen['profil/esWurdenKeineProfileGefunden']='No profile ore multiple profiles were found for your user account';
|
||||
$this->phrasen['profil/keinGueltigesProfil']='Not a valid profile';
|
||||
$this->phrasen['profil/adminstration']='Administration';
|
||||
$this->phrasen['profil/zustaendigeAssistenz']='Administrative Assistant';
|
||||
$this->phrasen['profil/wendenSieSichAn']='Please contact the';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='If your data is incorrect, please contact the responsible';
|
||||
$this->phrasen['profil/buero']='Office';
|
||||
$this->phrasen['profil/zeitsperrenVon']='Unavailabilities of';
|
||||
$this->phrasen['profil/lvplanVon']='Schedule from';
|
||||
|
||||
$this->phrasen['profil/AccountInaktiv']='NOTICE: This account is no longer active';
|
||||
$this->phrasen['profil/inaktivStudent']='NOTICE!<br> We would like to remind you that your user record has been deactivated.
|
||||
You were also removed from all e-mail distribution lists when your account was deactivated.<br><br>
|
||||
If your user account is not reactivated within 6 months (for students) or 3 weeks (for dropouts) of being deactivated, the following data will be automatically deleted:<br>
|
||||
- Your account<br>- Your mailbox (including all e-mails) and<br>- Your home directory (including all files).<br><br>
|
||||
If your account has been deactivated by mistake, please contact the administrative assistant for your degree program immediately.<br>';
|
||||
|
||||
$this->phrasen['profil/inaktivMitarbeiter']='NOTICE!<br> We would like to remind you that your user record has been deactivated.
|
||||
You were also removed from all e-mail distribution lists when your account was deactivated.<br><br>
|
||||
If your user account is not reactivated within 12 months of being deactivated, the following data will be automatically deleted:<br>
|
||||
- Your account<br>- Your mailbox (including all e-mails) and<br>- Your home directory (including all files).<br><br>
|
||||
If your account has been deactivated by mistake, please contact the administrative assistant for your degree program immediately.<br>';
|
||||
|
||||
$this->phrasen['profil/inaktivSonstige']='NOTICE!<br> We would like to remind you that your user record has been deactivated.
|
||||
You were also removed from all e-mail distribution lists when your account was deactivated.<br><br>
|
||||
If your user account is not reactivated within the next days of being deactivated, the following data will be automatically deleted:<br>
|
||||
- Your account<br>- Your mailbox (including all e-mails) and<br>- Your home directory (including all files).<br><br>
|
||||
If your account has been deactivated by mistake, please contact the administrative assistant for your degree program immediately.<br>';
|
||||
|
||||
|
||||
|
||||
|
||||
$this->phrasen['profil/nurJPGBilder']='Currently it is only possible to upload JPEG images';
|
||||
$this->phrasen['profil/BilduploadInfotext']='Currently it is only possible to upload JPG images with a maximum size of 15MB!<br><br><b>Please follow the <a href="'.APP_ROOT.'cms/content.php?content_id=%s">guidelines for uploading images</a></b>';
|
||||
$this->phrasen['profil/Bild']='Picture';
|
||||
$this->phrasen['profil/Bildupload']='Upload Picture';
|
||||
$this->phrasen['profil/fotofreigeben']='Unlock your profile photo';
|
||||
$this->phrasen['profil/fotosperren']='Lock your profile photo';
|
||||
$this->phrasen['profil/infotextSperre']='Locked profile photos are only used for access cards, and do not appear on attendance lists or in the people search';
|
||||
$this->phrasen['profil/profilfotoGesperrt']='Profile photo locked';
|
||||
$this->phrasen['profil/profilfotoUploadGesperrt']='It is no longer possible to upload a profile photo';
|
||||
$this->phrasen['profil/fhausweisStatus']='UAS ID card status';
|
||||
$this->phrasen['profil/fhausweisWurdeBereitsAusgegeben']='UAS ID card has already been issued on %s.';
|
||||
$this->phrasen['profil/ladenSieBitteEinGueltigesFotoHoch']='Please upload a valid photo';
|
||||
$this->phrasen['profil/fotoWurdeNochNichtAkzeptiert']='Photo has not yet been accepted';
|
||||
$this->phrasen['profil/fhausweisGedrucktAm']='UAS ID card printed on';
|
||||
$this->phrasen['profil/fhausweisAbholbereitAmEmpfangAb']='UAS ID card will be ready for pick-up at the information desk on';
|
||||
$this->phrasen['profil/fhausweisWurdeNochNichtGedruckt']='UAS ID card has not yet been printed';
|
||||
$this->phrasen['profil/ihrFotoWurdeNochNichtGeprueft']='Your photo has not yet been approved';
|
||||
$this->phrasen['profil/fotoAuswählen']='Click on the image below to upload a photo';
|
||||
$this->phrasen['profil/bildSpeichern']='Save image';
|
||||
$this->phrasen['profil/gueltigvon']='Valid from';
|
||||
$this->phrasen['profil/gueltigbis']='Valid to';
|
||||
$this->phrasen['profil/wochenstunden']='week hours';
|
||||
$this->phrasen['profil/vertragsstunden']='contract hours';
|
||||
$this->phrasen['profil/zukuenftigeFunktionen']='Future functions';
|
||||
?>
|
||||
|
||||
+65
-62
@@ -1,62 +1,65 @@
|
||||
<?php
|
||||
$this->phrasen['profil/AccountInaktiv']='Attenzione: questo account non è più attivo';
|
||||
$this->phrasen['profil/adminstration']='Gestione notizie';
|
||||
$this->phrasen['profil/alias']='alias';
|
||||
$this->phrasen['profil/alleStudentenVon']='Tutti gli studenti di';
|
||||
$this->phrasen['profil/ausgegebenAm']='';
|
||||
$this->phrasen['profil/betriebsmittel']='';
|
||||
$this->phrasen['profil/Bild']='';
|
||||
$this->phrasen['profil/bildHochladen']='';
|
||||
$this->phrasen['profil/bildSpeichern']='';
|
||||
$this->phrasen['profil/Bildupload']='';
|
||||
$this->phrasen['profil/BilduploadInfotext']='';
|
||||
$this->phrasen['profil/buero']='';
|
||||
$this->phrasen['profil/derUserIstInFolgendenVerteilern ']='';
|
||||
$this->phrasen['profil/email']='Email';
|
||||
$this->phrasen['profil/entlehnteBetriebsmittel']='';
|
||||
$this->phrasen['profil/esWurdenKeineProfileGefunden']='Nessun profilo o più profili per l\'utente richiesto';
|
||||
$this->phrasen['profil/faxTw']='fax';
|
||||
$this->phrasen['profil/fhausweisAbholbereitAmEmpfangAb']='';
|
||||
$this->phrasen['profil/fhausweisGedrucktAm']='';
|
||||
$this->phrasen['profil/fhausweisStatus']='';
|
||||
$this->phrasen['profil/fhausweisWurdeBereitsAusgegeben']='Tesserino consegnato il %s.';
|
||||
$this->phrasen['profil/fhausweisWurdeNochNichtGedruckt']='';
|
||||
$this->phrasen['profil/fotoAuswählen']='';
|
||||
$this->phrasen['profil/fotofreigeben']='';
|
||||
$this->phrasen['profil/fotosperren']='';
|
||||
$this->phrasen['profil/fotoWurdeNochNichtAkzeptiert']='';
|
||||
$this->phrasen['profil/funktionen']='';
|
||||
$this->phrasen['profil/home']='';
|
||||
$this->phrasen['profil/homepage']='';
|
||||
$this->phrasen['profil/ihrFotoWurdeNochNichtGeprueft']='';
|
||||
$this->phrasen['profil/inaktivMitarbeiter']='';
|
||||
$this->phrasen['profil/inaktivSonstige']='';
|
||||
$this->phrasen['profil/inaktivStudent']='';
|
||||
$this->phrasen['profil/infotextSperre']='';
|
||||
$this->phrasen['profil/intern']='E-mail di Ateneo';
|
||||
$this->phrasen['profil/kontaktPrivat']='Contatti Personali';
|
||||
$this->phrasen['profil/kurzbeschreibungFuerOeh']='';
|
||||
$this->phrasen['profil/kurzzeichen']='ID breve';
|
||||
$this->phrasen['profil/ladenSieBitteEinGueltigesFotoHoch']='';
|
||||
$this->phrasen['profil/leistungsbeurteilung']='';
|
||||
$this->phrasen['profil/lvplanVon']='';
|
||||
$this->phrasen['profil/martrikelnummer']='Codice Persona';
|
||||
$this->phrasen['profil/meinCis']='';
|
||||
$this->phrasen['profil/mitarbeiter']='';
|
||||
$this->phrasen['profil/mobil']='Cellulare';
|
||||
$this->phrasen['profil/nummer']='';
|
||||
$this->phrasen['profil/nurJPGBilder']='';
|
||||
$this->phrasen['profil/profil']='';
|
||||
$this->phrasen['profil/profilfotoGesperrt']='';
|
||||
$this->phrasen['profil/profilfotoUploadGesperrt']='';
|
||||
$this->phrasen['profil/sieSindMitgliedInFolgendenVerteilern']='';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='La preghiamo di rivolgersi alla segreteria nel caso i dati non risultino essere corretti.';
|
||||
$this->phrasen['profil/student']='Studente';
|
||||
$this->phrasen['profil/telefon']='';
|
||||
$this->phrasen['profil/telefonTw']='';
|
||||
$this->phrasen['profil/wendenSieSichAn']='';
|
||||
$this->phrasen['profil/zeitsperrenVon']='';
|
||||
$this->phrasen['profil/zeitwuensche']='';
|
||||
$this->phrasen['profil/zustaendigeAssistenz']='';
|
||||
|
||||
?>
|
||||
<?php
|
||||
$this->phrasen['profil/AccountInaktiv']='Attenzione: questo account non è più attivo';
|
||||
$this->phrasen['profil/adminstration']='Gestione notizie';
|
||||
$this->phrasen['profil/alias']='alias';
|
||||
$this->phrasen['profil/alleStudentenVon']='Tutti gli studenti di';
|
||||
$this->phrasen['profil/ausgegebenAm']='';
|
||||
$this->phrasen['profil/betriebsmittel']='';
|
||||
$this->phrasen['profil/Bild']='';
|
||||
$this->phrasen['profil/bildHochladen']='';
|
||||
$this->phrasen['profil/bildSpeichern']='';
|
||||
$this->phrasen['profil/Bildupload']='';
|
||||
$this->phrasen['profil/BilduploadInfotext']='';
|
||||
$this->phrasen['profil/buero']='';
|
||||
$this->phrasen['profil/derUserIstInFolgendenVerteilern ']='';
|
||||
$this->phrasen['profil/email']='Email';
|
||||
$this->phrasen['profil/entlehnteBetriebsmittel']='';
|
||||
$this->phrasen['profil/esWurdenKeineProfileGefunden']='Nessun profilo o più profili per l\'utente richiesto';
|
||||
$this->phrasen['profil/keinGueltigesProfil']='';
|
||||
$this->phrasen['profil/faxTw']='fax';
|
||||
$this->phrasen['profil/fhausweisAbholbereitAmEmpfangAb']='';
|
||||
$this->phrasen['profil/fhausweisGedrucktAm']='';
|
||||
$this->phrasen['profil/fhausweisStatus']='';
|
||||
$this->phrasen['profil/fhausweisWurdeBereitsAusgegeben']='Tesserino consegnato il %s.';
|
||||
$this->phrasen['profil/fhausweisWurdeNochNichtGedruckt']='';
|
||||
$this->phrasen['profil/fotoAuswählen']='';
|
||||
$this->phrasen['profil/fotofreigeben']='';
|
||||
$this->phrasen['profil/fotosperren']='';
|
||||
$this->phrasen['profil/fotoWurdeNochNichtAkzeptiert']='';
|
||||
$this->phrasen['profil/funktionen']='';
|
||||
$this->phrasen['profil/home']='';
|
||||
$this->phrasen['profil/homepage']='';
|
||||
$this->phrasen['profil/ihrFotoWurdeNochNichtGeprueft']='';
|
||||
$this->phrasen['profil/inaktivMitarbeiter']='';
|
||||
$this->phrasen['profil/inaktivSonstige']='';
|
||||
$this->phrasen['profil/inaktivStudent']='';
|
||||
$this->phrasen['profil/infotextSperre']='';
|
||||
$this->phrasen['profil/intern']='E-mail di Ateneo';
|
||||
$this->phrasen['profil/kontaktPrivat']='Contatti Personali';
|
||||
$this->phrasen['profil/kurzbeschreibungFuerOeh']='';
|
||||
$this->phrasen['profil/kurzzeichen']='ID breve';
|
||||
$this->phrasen['profil/ladenSieBitteEinGueltigesFotoHoch']='';
|
||||
$this->phrasen['profil/leistungsbeurteilung']='';
|
||||
$this->phrasen['profil/lvplanVon']='';
|
||||
$this->phrasen['profil/martrikelnummer']='Codice Persona';
|
||||
$this->phrasen['profil/meinCis']='';
|
||||
$this->phrasen['profil/mitarbeiter']='';
|
||||
$this->phrasen['profil/mobil']='Cellulare';
|
||||
$this->phrasen['profil/nummer']='';
|
||||
$this->phrasen['profil/nurJPGBilder']='';
|
||||
$this->phrasen['profil/profil']='';
|
||||
$this->phrasen['profil/profilfotoGesperrt']='';
|
||||
$this->phrasen['profil/profilfotoUploadGesperrt']='';
|
||||
$this->phrasen['profil/sieSindMitgliedInFolgendenVerteilern']='';
|
||||
$this->phrasen['profil/solltenDatenNichtStimmen']='La preghiamo di rivolgersi alla segreteria nel caso i dati non risultino essere corretti.';
|
||||
$this->phrasen['profil/student']='Studente';
|
||||
$this->phrasen['profil/telefon']='';
|
||||
$this->phrasen['profil/telefonTw']='';
|
||||
$this->phrasen['profil/wendenSieSichAn']='';
|
||||
$this->phrasen['profil/zeitsperrenVon']='';
|
||||
$this->phrasen['profil/zeitwuensche']='';
|
||||
$this->phrasen['profil/zustaendigeAssistenz']='';
|
||||
$this->phrasen['profil/wochenstunden']='';
|
||||
$this->phrasen['profil/vertragsstunden']='';
|
||||
$this->phrasen['profil/zukuenftigeFunktionen']='';
|
||||
?>
|
||||
|
||||
@@ -2,22 +2,36 @@
|
||||
margin: 10px 0 5px;
|
||||
}
|
||||
h1 {
|
||||
margin-top: 0px;
|
||||
font-size: 2rem;
|
||||
}
|
||||
h2 {
|
||||
margin-top: 0px;
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
h3 {
|
||||
margin-top: 0px;
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
margin-top: 0px;
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
h5 {
|
||||
margin-top: 0px;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
h6 {
|
||||
margin-top: 0px;
|
||||
font-size: 1rem;
|
||||
|
||||
}
|
||||
body
|
||||
{
|
||||
background-color: white;
|
||||
color: black;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 13px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
@@ -65,4 +65,31 @@
|
||||
|
||||
#scrollToTop:hover{
|
||||
background-color: lightgrey;
|
||||
}
|
||||
}
|
||||
|
||||
#postponedate{
|
||||
height: 25px;
|
||||
width: 99px
|
||||
}
|
||||
|
||||
#postponedatelabel{
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1510px)
|
||||
{
|
||||
#postponing{
|
||||
text-align: center;
|
||||
}
|
||||
#postponedatelabel{
|
||||
display: block;
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px)
|
||||
{
|
||||
#postponedate {
|
||||
display: inline-block
|
||||
}
|
||||
}
|
||||
|
||||
+11
-10
@@ -84,7 +84,7 @@ var FHC_FilterWidget = {
|
||||
// Public methods
|
||||
|
||||
/**
|
||||
* To display the FilterWidget using the loaded data prenset in the session
|
||||
* To display the FilterWidget using the loaded data present in the session
|
||||
*/
|
||||
display: function() {
|
||||
|
||||
@@ -392,7 +392,6 @@ var FHC_FilterWidget = {
|
||||
},
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
FHC_FilterWidget._cleanTablesorterLocalStorage();
|
||||
FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR);
|
||||
}
|
||||
}
|
||||
@@ -453,7 +452,6 @@ var FHC_FilterWidget = {
|
||||
},
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
FHC_FilterWidget._cleanTablesorterLocalStorage();
|
||||
FHC_FilterWidget._failOrRefresh(data, textStatus, jqXHR);
|
||||
}
|
||||
}
|
||||
@@ -837,6 +835,14 @@ var FHC_FilterWidget = {
|
||||
*/
|
||||
_renderDatasetTablesorter: function(data) {
|
||||
|
||||
//clear tablesorter filter storage
|
||||
var keepTsFilter = FHC_AjaxClient.getUrlParameter("keepTsFilter");
|
||||
|
||||
if (typeof keepTsFilter === "undefined" || keepTsFilter !== "true")
|
||||
{
|
||||
FHC_FilterWidget._clearTablesorterLocalStorage();
|
||||
}
|
||||
|
||||
if (data.hasOwnProperty("checkboxes") && data.checkboxes!=null && data.checkboxes.trim() != "")
|
||||
{
|
||||
$("#filterTableDataset > thead > tr").append("<th data-filter='false' title='Select'>Select</th>");
|
||||
@@ -935,10 +941,6 @@ var FHC_FilterWidget = {
|
||||
}
|
||||
});
|
||||
|
||||
// Reset filter storage if there is a filter id in url TODO: find better solution
|
||||
var filter_id = FHC_AjaxClient.getUrlParameter("filter_id");
|
||||
if (typeof filter_id !== "undefined") FHC_FilterWidget._cleanTablesorterLocalStorage();
|
||||
|
||||
$.tablesorter.updateAll($("#filterTableDataset")[0].config, true, null);
|
||||
}
|
||||
},
|
||||
@@ -1057,9 +1059,8 @@ var FHC_FilterWidget = {
|
||||
/**
|
||||
* Tablesorter filter local storage clean
|
||||
*/
|
||||
_cleanTablesorterLocalStorage: function() {
|
||||
|
||||
$("#filterTableDataset").trigger("filterResetSaved");
|
||||
_clearTablesorterLocalStorage: function() {
|
||||
localStorage.removeItem("tablesorter-filters");
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,111 +10,113 @@ const STGFREIGABE_MESSAGE_VORLAGE = "InfocenterSTGfreigegeben";
|
||||
//Statusgründe for which no Studiengang Freigabe Message should be sent
|
||||
const FIT_PROGRAMM_STUDIENGAENGE = [10021, 10027];
|
||||
|
||||
const PARKEDNAME = 'parked';
|
||||
const ONHOLDNAME = 'onhold';
|
||||
|
||||
/**
|
||||
* javascript file for infocenterDetails page
|
||||
*/
|
||||
$(document).ready(function ()
|
||||
{
|
||||
//initialise table sorter
|
||||
Tablesort.addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
|
||||
Tablesort.addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
|
||||
//initialise table sorter
|
||||
Tablesort.addTablesorter("doctable", [[2, 1], [1, 0]], ["zebra"]);
|
||||
Tablesort.addTablesorter("nachgdoctable", [[2, 0], [1, 1]], ["zebra"]);
|
||||
|
||||
InfocenterDetails._formatMessageTable();
|
||||
InfocenterDetails._formatNotizTable();
|
||||
InfocenterDetails._formatLogTable();
|
||||
InfocenterDetails._formatMessageTable();
|
||||
InfocenterDetails._formatNotizTable();
|
||||
InfocenterDetails._formatLogTable();
|
||||
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
|
||||
//add submit event to message send link
|
||||
$("#sendmsglink").click(function ()
|
||||
{
|
||||
$("#sendmsgform").submit();
|
||||
});
|
||||
|
||||
//add click events to "formal geprüft" checkboxes
|
||||
$(".prchbox").click(function ()
|
||||
{
|
||||
var boxid = this.id;
|
||||
var akteid = boxid.substr(boxid.indexOf("_") + 1);
|
||||
var checked = this.checked;
|
||||
InfocenterDetails.saveFormalGeprueft(personid, akteid, checked)
|
||||
});
|
||||
|
||||
//add click events to zgv Prüfung section
|
||||
InfocenterDetails._addZgvPruefungEvents(personid);
|
||||
|
||||
MessageList.initMessageList();
|
||||
|
||||
//save notiz
|
||||
$("#notizform").on("submit", function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var notizid = $("#notizform :input[name='hiddenNotizId']").val();
|
||||
var formdata = $(this).serializeArray();
|
||||
var data = {};
|
||||
|
||||
data.person_id = personid;
|
||||
|
||||
for (var i = 0; i < formdata.length; i++)
|
||||
{
|
||||
data[formdata[i].name] = formdata[i].value;
|
||||
}
|
||||
|
||||
$("#notizmsg").empty();
|
||||
|
||||
if (notizid !== '')
|
||||
{
|
||||
InfocenterDetails.updateNotiz(notizid, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
InfocenterDetails.saveNotiz(personid, data);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
//update notiz - autofill notizform
|
||||
$(document).on("click", "#notiztable tbody tr", function ()
|
||||
{
|
||||
$("#notizmsg").empty();
|
||||
|
||||
var notizid = $(this).find("td.hiddennotizid").html();
|
||||
|
||||
InfocenterDetails.getNotiz(notizid);
|
||||
}
|
||||
);
|
||||
|
||||
//update notiz - abbrechen-button: reset styles
|
||||
$("#notizform :input[type='reset']").click(function ()
|
||||
{
|
||||
InfocenterDetails._resetNotizFields();
|
||||
}
|
||||
);
|
||||
|
||||
//check if person is parked and display it
|
||||
InfocenterDetails.getParkedDate(personid);
|
||||
|
||||
if ($(document).scrollTop() > 20)
|
||||
$("#scrollToTop").show();
|
||||
|
||||
//scroll to top button
|
||||
$(window).scroll(function()
|
||||
{
|
||||
if ($(document).scrollTop() > 20)
|
||||
$("#scrollToTop").show();
|
||||
else
|
||||
$("#scrollToTop").hide();
|
||||
}
|
||||
);
|
||||
|
||||
$("#scrollToTop").click(function()
|
||||
{
|
||||
$('html,body').animate({scrollTop:0},250,'linear');
|
||||
}
|
||||
)
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
|
||||
//add submit event to message send link
|
||||
$("#sendmsglink").click(function ()
|
||||
{
|
||||
$("#sendmsgform").submit();
|
||||
});
|
||||
|
||||
//add click events to "formal geprüft" checkboxes
|
||||
$(".prchbox").click(function ()
|
||||
{
|
||||
var boxid = this.id;
|
||||
var akteid = boxid.substr(boxid.indexOf("_") + 1);
|
||||
var checked = this.checked;
|
||||
InfocenterDetails.saveFormalGeprueft(personid, akteid, checked)
|
||||
});
|
||||
|
||||
//add click events to zgv Prüfung section
|
||||
InfocenterDetails._addZgvPruefungEvents(personid);
|
||||
|
||||
MessageList.initMessageList();
|
||||
|
||||
//save notiz
|
||||
$("#notizform").on("submit", function (e)
|
||||
{
|
||||
e.preventDefault();
|
||||
var notizid = $("#notizform :input[name='hiddenNotizId']").val();
|
||||
var formdata = $(this).serializeArray();
|
||||
var data = {};
|
||||
|
||||
data.person_id = personid;
|
||||
|
||||
for (var i = 0; i < formdata.length; i++)
|
||||
{
|
||||
data[formdata[i].name] = formdata[i].value;
|
||||
}
|
||||
|
||||
$("#notizmsg").empty();
|
||||
|
||||
if (notizid !== '')
|
||||
{
|
||||
InfocenterDetails.updateNotiz(notizid, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
InfocenterDetails.saveNotiz(personid, data);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
//update notiz - autofill notizform
|
||||
$(document).on("click", "#notiztable tbody tr", function ()
|
||||
{
|
||||
$("#notizmsg").empty();
|
||||
|
||||
var notizid = $(this).find("td.hiddennotizid").html();
|
||||
|
||||
InfocenterDetails.getNotiz(notizid);
|
||||
}
|
||||
);
|
||||
|
||||
//update notiz - abbrechen-button: reset styles
|
||||
$("#notizform :input[type='reset']").click(function ()
|
||||
{
|
||||
InfocenterDetails._resetNotizFields();
|
||||
}
|
||||
);
|
||||
|
||||
//check if person is postponed (parked, on hold...) and display it
|
||||
InfocenterDetails.getPostponeDate(personid);
|
||||
|
||||
if ($(document).scrollTop() > 20)
|
||||
$("#scrollToTop").show();
|
||||
|
||||
//scroll to top button
|
||||
$(window).scroll(function()
|
||||
{
|
||||
if ($(document).scrollTop() > 20)
|
||||
$("#scrollToTop").show();
|
||||
else
|
||||
$("#scrollToTop").hide();
|
||||
}
|
||||
);
|
||||
|
||||
$("#scrollToTop").click(function()
|
||||
{
|
||||
$('html,body').animate({scrollTop:0},250,'linear');
|
||||
}
|
||||
)
|
||||
});
|
||||
|
||||
var InfocenterDetails = {
|
||||
|
||||
openZgvInfoForPrestudent: function(prestudent_id)
|
||||
@@ -397,7 +399,7 @@ var InfocenterDetails = {
|
||||
{
|
||||
var engdate = $.datepicker.parseDate("yy-mm-dd", FHC_AjaxClient.getData(data)[0]);
|
||||
var gerdate = $.datepicker.formatDate("dd.mm.yy", engdate);
|
||||
$("#parkdate").val(gerdate);
|
||||
$("#postponedate").val(gerdate);
|
||||
}
|
||||
},
|
||||
errorCallback: function()
|
||||
@@ -408,19 +410,19 @@ var InfocenterDetails = {
|
||||
}
|
||||
);
|
||||
},
|
||||
getParkedDate: function(personid)
|
||||
getPostponeDate: function(personid)
|
||||
{
|
||||
FHC_AjaxClient.ajaxCallGet(
|
||||
CALLED_PATH + "/getParkedDate/"+encodeURIComponent(personid),
|
||||
CALLED_PATH + "/getPostponeDate/"+encodeURIComponent(personid),
|
||||
null,
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
{
|
||||
var parkedDate = FHC_AjaxClient.getData(data)[0];
|
||||
InfocenterDetails._refreshParking(parkedDate);
|
||||
var postponeobj = FHC_AjaxClient.getData(data);
|
||||
InfocenterDetails._refreshPostpone(postponeobj);
|
||||
InfocenterDetails._refreshLog();
|
||||
if (parkedDate === null)
|
||||
if (postponeobj === null || postponeobj.type === null)
|
||||
InfocenterDetails.getStudienjahrEnd();
|
||||
}
|
||||
},
|
||||
@@ -435,7 +437,7 @@ var InfocenterDetails = {
|
||||
parkPerson: function(personid, date)
|
||||
{
|
||||
var parkError = function(){
|
||||
$("#parkmsg").text(" Fehler beim Parken!");
|
||||
$("#postponemsg").text(" Fehler beim Parken!");
|
||||
};
|
||||
|
||||
FHC_AjaxClient.ajaxCallPost(
|
||||
@@ -447,7 +449,7 @@ var InfocenterDetails = {
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
InfocenterDetails.getParkedDate(personid);
|
||||
InfocenterDetails.getPostponeDate(personid);
|
||||
else
|
||||
{
|
||||
parkError();
|
||||
@@ -469,13 +471,62 @@ var InfocenterDetails = {
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
{
|
||||
InfocenterDetails.getParkedDate(personid);
|
||||
InfocenterDetails.getPostponeDate(personid);
|
||||
}
|
||||
else
|
||||
$("#unparkmsg").removeClass().addClass("text-warning").text(FHC_PhrasesLib.t('infocenter', 'nichtsZumAusparken'));
|
||||
$("#unpostponemsg").removeClass().addClass("text-warning").text(FHC_PhrasesLib.t('infocenter', 'nichtsZumAusparken'));
|
||||
},
|
||||
errorCallback: function(){
|
||||
$("#unparkmsg").removeClass().addClass("text-danger").text(FHC_PhrasesLib.t('infocenter', 'fehlerBeimAusparken'));
|
||||
$("#unpostponemsg").removeClass().addClass("text-danger").text(FHC_PhrasesLib.t('infocenter', 'fehlerBeimAusparken'));
|
||||
},
|
||||
veilTimeout: 0
|
||||
}
|
||||
);
|
||||
},
|
||||
setPersonOnHold: function(personid, date)
|
||||
{
|
||||
var onHoldError = function(){
|
||||
$("#postponemsg").text(" Fehler beim Setzen auf On Hold!");
|
||||
};
|
||||
|
||||
FHC_AjaxClient.ajaxCallPost(
|
||||
CALLED_PATH + '/setOnHold',
|
||||
{
|
||||
"person_id": personid,
|
||||
"onholddate": date
|
||||
},
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
InfocenterDetails.getPostponeDate(personid);
|
||||
else
|
||||
{
|
||||
onHoldError();
|
||||
}
|
||||
},
|
||||
errorCallback: onHoldError,
|
||||
veilTimeout: 0
|
||||
}
|
||||
);
|
||||
},
|
||||
removePersonOnHold: function(personid)
|
||||
{
|
||||
FHC_AjaxClient.ajaxCallPost(
|
||||
CALLED_PATH + '/removeOnHold',
|
||||
{
|
||||
"person_id": personid
|
||||
},
|
||||
{
|
||||
successCallback: function(data, textStatus, jqXHR) {
|
||||
if (FHC_AjaxClient.hasData(data))
|
||||
{
|
||||
InfocenterDetails.getPostponeDate(personid);
|
||||
}
|
||||
else
|
||||
$("#unpostponemsg").removeClass().addClass("text-warning").text(FHC_PhrasesLib.t('infocenter', 'nichtsZumEntfernen'));
|
||||
},
|
||||
errorCallback: function(){
|
||||
$("#unpostponemsg").removeClass().addClass("text-danger").text(FHC_PhrasesLib.t('infocenter', 'fehlerBeimEntfernen'));
|
||||
},
|
||||
veilTimeout: 0
|
||||
}
|
||||
@@ -864,50 +915,94 @@ var InfocenterDetails = {
|
||||
}
|
||||
);
|
||||
},
|
||||
_refreshParking: function(date)
|
||||
_refreshPostpone: function(postponeobj)
|
||||
{
|
||||
if (date === null)
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
if (postponeobj === null || postponeobj.date === null || postponeobj.type === null)
|
||||
{
|
||||
$("#parking").html(
|
||||
//show both park and on hold buttons if not parked and not on hold
|
||||
$("#postponing").html(
|
||||
'<div class="form-group form-inline">'+
|
||||
'<button class="btn btn-default" id="parklink" type="button""><i class="fa fa-clock-o"></i> ' + FHC_PhrasesLib.t('infocenter', 'bewerberParken') + '</button> '+
|
||||
FHC_PhrasesLib.t('global', 'bis') + ' '+
|
||||
'<input id="parkdate" type="text" class="form-control" placeholder="Parkdatum" style="height: 25px; width: 99px"> '+
|
||||
'<span class="text-danger" id="parkmsg"></span>'+
|
||||
'<button class="btn btn-default" id="onholdlink" type="button""><i class="fa fa-anchor"></i> ' + FHC_PhrasesLib.t('infocenter', 'bewerberOnHold') + '</button> '+
|
||||
'<label id="postponedatelabel">'+FHC_PhrasesLib.t('global', 'bis') + ' '+
|
||||
'<input id="postponedate" type="text" class="form-control" placeholder="Parkdatum"> '+
|
||||
'<i class="fa fa-info-circle" data-toggle="tooltip" title="'+FHC_PhrasesLib.t('infocenter', 'parkenZurueckstellenInfo')+'"></i></label>'+
|
||||
'<span class="text-danger" id="postponemsg"></span>'+
|
||||
'</div>');
|
||||
|
||||
$("#parkdate").datepicker({
|
||||
$("#postponedate").datepicker({
|
||||
"dateFormat": "dd.mm.yy",
|
||||
"minDate": 0
|
||||
"minDate": 1
|
||||
});
|
||||
|
||||
$("#parklink").click(
|
||||
|
||||
function ()
|
||||
{
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
var date = $("#parkdate").val();
|
||||
|
||||
var date = $("#postponedate").val();
|
||||
InfocenterDetails.parkPerson(personid, date);
|
||||
}
|
||||
);
|
||||
|
||||
$("#onholdlink").click(
|
||||
|
||||
function ()
|
||||
{
|
||||
var date = $("#postponedate").val();
|
||||
InfocenterDetails.setPersonOnHold(personid, date);
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
var parkdate = $.datepicker.parseDate("yy-mm-dd", date);
|
||||
var gerparkdate = $.datepicker.formatDate("dd.mm.yy", parkdate);
|
||||
$("#parking").html(
|
||||
FHC_PhrasesLib.t('infocenter', 'bewerberGeparktBis')+' '+gerparkdate+' '+
|
||||
'<button class="btn btn-default" id="unparklink"><i class="fa fa-sign-out"></i> '+FHC_PhrasesLib.t('infocenter', 'bewerberAusparken')+'</button> '+
|
||||
'<span id="unparkmsg"></span>'
|
||||
//info if parked/on hold and possibility to undo parking/on hold
|
||||
var postponedate = $.datepicker.parseDate("yy-mm-dd", postponeobj.date);
|
||||
var gerpostponedate = $.datepicker.formatDate("dd.mm.yy", postponedate);
|
||||
|
||||
//var postponehtml = "";
|
||||
var callbackforundo = null;
|
||||
var removePhrase = "";
|
||||
var postponedPhrase = "";
|
||||
var postponedtext = "";
|
||||
|
||||
if (postponeobj.type === PARKEDNAME)
|
||||
{
|
||||
removePhrase = 'bewerberAusparken';
|
||||
postponedtext = FHC_PhrasesLib.t('infocenter', 'bewerberGeparktBis')+' '+gerpostponedate;
|
||||
|
||||
callbackforundo = function ()
|
||||
{
|
||||
InfocenterDetails.unparkPerson(personid);
|
||||
}
|
||||
}
|
||||
else if (postponeobj.type === ONHOLDNAME)
|
||||
{
|
||||
removePhrase = 'bewerberOnHoldEntfernen';
|
||||
postponedtext = FHC_PhrasesLib.t('infocenter', 'bewerberOnHoldBis')+' '+gerpostponedate;
|
||||
|
||||
var currdate = new Date();
|
||||
|
||||
if (currdate > postponedate)
|
||||
postponedtext = "<span class='alert-danger' data-toggle='tooltip' title='"+FHC_PhrasesLib.t('infocenter', 'rueckstelldatumUeberschritten')+"'>"+postponedtext+"</span>";
|
||||
|
||||
callbackforundo = function ()
|
||||
{
|
||||
InfocenterDetails.removePersonOnHold(personid);
|
||||
}
|
||||
}
|
||||
|
||||
var postponehtml = postponedtext+' '+
|
||||
'<button class="btn btn-default" id="unpostponelink"><i class="fa fa-sign-out"></i> '+FHC_PhrasesLib.t('infocenter', removePhrase)+'</button> '+
|
||||
'<span id="unpostponemsg"></span>';
|
||||
|
||||
|
||||
$("#postponing").html(
|
||||
postponehtml
|
||||
);
|
||||
|
||||
$("#unparklink").click(
|
||||
function ()
|
||||
{
|
||||
var personid = $("#hiddenpersonid").val();
|
||||
InfocenterDetails.unparkPerson(personid, date);
|
||||
}
|
||||
$("#unpostponelink").click(
|
||||
callbackforundo
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -50,7 +50,8 @@ var InfocenterPersonDataset = {
|
||||
'<i class="fa fa-envelope"></i> Nachricht senden</a>';
|
||||
|
||||
var legendHtml = '<i class="fa fa-circle text-danger"></i> Gesperrt ' +
|
||||
'<i class="fa fa-circle text-info"></i> Geparkt';
|
||||
'<i class="fa fa-circle text-info"></i> Geparkt ' +
|
||||
'<i class="fa fa-circle text-success"></i> Zurückgestellt';
|
||||
|
||||
// userdefined Semestervariable shown independently of personcount,
|
||||
// it is possible to change the semester
|
||||
@@ -148,6 +149,28 @@ var InfocenterPersonDataset = {
|
||||
trs.find("input[name=PersonId\\[\\]]").prop("checked", false);
|
||||
}
|
||||
);
|
||||
|
||||
//make sure tablesorter local storage for homepage url with and without "/index" shares same values
|
||||
$("#filterTableDataset").bind('filterEnd', function()
|
||||
{
|
||||
if (FHC_JS_DATA_STORAGE_OBJECT.called_method === 'index')
|
||||
{
|
||||
var pathname = window.location.pathname;
|
||||
var storageobj = localStorage.getItem("tablesorter-filters");
|
||||
var parsed = JSON.parse(storageobj);
|
||||
var regex = new RegExp(/\/index(?!\.ci\.php)/);
|
||||
if (regex.test(pathname))
|
||||
{
|
||||
parsed[pathname.replace(regex, "")] = parsed[pathname];
|
||||
}
|
||||
else
|
||||
{
|
||||
parsed[pathname + "/index"] = parsed[pathname];
|
||||
}
|
||||
storageobj = JSON.stringify(parsed);
|
||||
localStorage.setItem("tablesorter-filters", storageobj);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
+144
-3
@@ -3451,9 +3451,150 @@ $phrases = array(
|
||||
)
|
||||
)
|
||||
),
|
||||
|
||||
|
||||
//
|
||||
array(
|
||||
'app' => 'infocenter',
|
||||
'category' => 'infocenter',
|
||||
'phrase' => 'bewerberOnHold',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'BewerberIn zurückstellen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Put applicant on hold',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'infocenter',
|
||||
'category' => 'infocenter',
|
||||
'phrase' => 'bewerberOnHoldEntfernen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zurückstellung entfernen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Remove on hold state',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'infocenter',
|
||||
'category' => 'infocenter',
|
||||
'phrase' => 'bewerberOnHoldBis',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'BewerberIn zurückgestellt bis',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Applicant on hold until',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'infocenter',
|
||||
'category' => 'infocenter',
|
||||
'phrase' => 'nichtsZumEntfernen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Nichts zum Entfernen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Nothing to remove',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'infocenter',
|
||||
'category' => 'infocenter',
|
||||
'phrase' => 'fehlerBeimEntfernen',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Fehler beim Entfernen',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Error when removing',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'infocenter',
|
||||
'category' => 'infocenter',
|
||||
'phrase' => 'rueckstelldatumUeberschritten',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Zurückstelldatum überschritten!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Exceeded date for on hold!',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'infocenter',
|
||||
'category' => 'infocenter',
|
||||
'phrase' => 'parkenZurueckstellenInfo',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Geparkte und zurückgestellte BewerberInnen werden von der Bearbeitung temporär ausgenommen.
|
||||
Geparkte BewerberInnen werden zum angegebenen Datum automatisch entparkt, während zurückgestellte BewerberInnen nur manuell durch Drücken des Buttons den Zurückgestellt-Status verlieren.
|
||||
Bei einer Zurückstellung dient das Datum nur der Erinnerung.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Parked applicants and applicants on hold are temporarily excluded from the infocenter workflow.
|
||||
Parked applicants are unparked automatically, whereas applicants on hold loose the status only when clicking the button manually.
|
||||
When on hold, the date is only a reminder.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'password',
|
||||
|
||||
@@ -41,6 +41,7 @@ require_once ('../../include/fotostatus.class.php');
|
||||
require_once ('../../include/kontakt.class.php');
|
||||
require_once ('../../include/dokument.class.php');
|
||||
require_once ('../../include/reihungstest.class.php');
|
||||
require_once ('../../include/pruefling.class.php');
|
||||
|
||||
|
||||
if (! $db = new basis_db())
|
||||
@@ -560,7 +561,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
*/
|
||||
$prestudenten = new prestudent();
|
||||
$prestudenten->getPrestudenten($personToKeep);
|
||||
$statusArrayWichtigeWichtige = array(); // Array mit allen PreStudentStatus die NICHT Interessent oder Abgewiesener sind
|
||||
$statusArrayWichtige = array(); // Array mit allen PreStudentStatus die NICHT Interessent oder Abgewiesener sind
|
||||
|
||||
foreach ($prestudenten->result AS $key => $value)
|
||||
{
|
||||
@@ -673,6 +674,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
$studiengang_kz = '';
|
||||
$anmerkung = '';
|
||||
$prestudentLoeschArray = array();
|
||||
$prueflingTransferArray = array();
|
||||
$warningList = array();
|
||||
$i = 0;
|
||||
foreach ($prestudentenArray AS $key => $value)
|
||||
@@ -715,6 +717,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
// Wenn kein Status außer Interessent und Abgewiesener mehr vorhanden ist, löschen
|
||||
if (!isset($statusArrayWichtige[$value['prestudent_id']]))
|
||||
{
|
||||
setPrueflingTransfer($value['prestudent_id'], $prestudentId, $prueflingTransferArray);
|
||||
unset($prestudentenArray[$key]);
|
||||
$prestudentLoeschArray[] = $value['prestudent_id'];
|
||||
}
|
||||
@@ -732,6 +735,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
// Wenn kein Status außer Interessent und Abgewiesener mehr vorhanden ist, löschen
|
||||
if (!isset($statusArrayWichtige[$value['prestudent_id']]))
|
||||
{
|
||||
setPrueflingTransfer($value['prestudent_id'], $prestudentId, $prueflingTransferArray);
|
||||
unset($prestudentenArray[$key]);
|
||||
$prestudentLoeschArray[] = $value['prestudent_id'];
|
||||
}
|
||||
@@ -748,6 +752,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
$prestudentenArray[$previousKey]['zgvort'] = $zgvort = $value['zgvort'];
|
||||
$prestudentenArray[$previousKey]['zgvdatum'] = $zgvdatum = $value['zgvdatum'];
|
||||
$prestudentenArray[$previousKey]['zgvnation'] = $zgvnation = $value['zgvnation'];
|
||||
setPrueflingTransfer($value['prestudent_id'], $prestudentId, $prueflingTransferArray);
|
||||
unset($prestudentenArray[$key]);
|
||||
$prestudentLoeschArray[] = $value['prestudent_id'];
|
||||
continue;
|
||||
@@ -761,6 +766,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
$warningList['zgvUnklar'][$prestudentId][$i]['zgvort'] = $value['zgvort'];
|
||||
$warningList['zgvUnklar'][$prestudentId][$i]['zgvdatum'] = $value['zgvdatum'];
|
||||
$warningList['zgvUnklar'][$prestudentId][$i]['zgvnation'] = $value['zgvnation'];
|
||||
setPrueflingTransfer($value['prestudent_id'], $prestudentId, $prueflingTransferArray);
|
||||
unset($prestudentenArray[$key]);
|
||||
$prestudentLoeschArray[] = $value['prestudent_id'];
|
||||
$i++;
|
||||
@@ -769,6 +775,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
}
|
||||
}
|
||||
}
|
||||
setPrueflingTransfer($value['prestudent_id'], $prestudentId, $prueflingTransferArray);
|
||||
unset($prestudentenArray[$key]);
|
||||
$prestudentLoeschArray[] = $value['prestudent_id'];
|
||||
continue;
|
||||
@@ -834,6 +841,19 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
|
||||
|
||||
$msg_warning[] = $messageOutput;
|
||||
|
||||
//Wenn Prüfling auf zu löschenden Prestudenten zeigt und ggf auf bleibenden umhängen.
|
||||
foreach ($prueflingTransferArray as $pruefling_id => $prestudent_id)
|
||||
{
|
||||
$transferqry = "UPDATE testtool.tbl_pruefling SET prestudent_id=" . $db->db_add_param($prestudent_id, FHC_INTEGER) . " WHERE pruefling_id=" . $db->db_add_param($pruefling_id, FHC_INTEGER) . ";";
|
||||
|
||||
if (!$db->db_query($transferqry))
|
||||
{
|
||||
$msg_error[] = 'Fehler beim Aktualisieren des Prüflings '.$pruefling_id;
|
||||
}
|
||||
else
|
||||
$msg_warning[] = 'Prüfling '.$pruefling_id.' auf prestudent '.$prestudent_id.' aktualisiert';
|
||||
}
|
||||
|
||||
// Prestudenten in $prestudentLoeschArray löschen
|
||||
foreach ($prestudentLoeschArray AS $key => $value)
|
||||
{
|
||||
@@ -884,6 +904,28 @@ if ((isset($personToDelete) && ! isset($personToKeep)) || (! isset($personToDele
|
||||
{
|
||||
$msg_info[] = "Es muß je ein Radio-Button pro Tabelle angeklickt werden";
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt sich Prüflinge zu einem zu löschenden Prestudenten,
|
||||
* speichert auf welchen Prestudenten die Prüflinge "umgehängt" werden sollen.
|
||||
* @param $prestudentIdToDelete prestudent_id des zu löschenden Prestudenten
|
||||
* @param $prestudentIdToKeep prestudent_id des behaltenen Prestundenten
|
||||
* @param $prueflingTransferArray zum Speichern, form [pruefling_id] => neue_prestudent_id
|
||||
*/
|
||||
function setPrueflingTransfer($prestudentIdToDelete, $prestudentIdToKeep, &$prueflingTransferArray)
|
||||
{
|
||||
$pruefling = new pruefling();
|
||||
|
||||
if (is_numeric($prestudentIdToDelete) && is_numeric($prestudentIdToKeep) &&
|
||||
$pruefling->getPrueflinge($prestudentIdToDelete))
|
||||
{
|
||||
foreach ($pruefling->result as $pr)
|
||||
{
|
||||
$prueflingTransferArray[$pr->pruefling_id] = (int)$prestudentIdToKeep;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function resize($base64, $width, $height) // 828 x 1104 -> 240 x 320
|
||||
{
|
||||
ob_start();
|
||||
|
||||
Reference in New Issue
Block a user