Merge branch 'master' into feature-5883/DigitalerLehrauftrag_ColumnPicker

This commit is contained in:
Andreas Österreicher
2020-03-10 16:59:15 +01:00
1041 changed files with 16845 additions and 22774 deletions
+18 -28
View File
@@ -64,7 +64,9 @@ define('LDAP_TOO_MANY_USER_DN', 11);
|--------------------------------------------------------------------------
*/
define('LANG_SESSION_NAME', 'LANGUAGE');
define('LANG_SESSION_INDEXES', 'LANGUAGE_INDEXES');
define('LANG_SESSION_INDEXES', 'INDEXES');
define('LANG_SESSION_ACTIVE_LANGUAGES', 'ACTIVE_LANGUAGES');
define('LANG_SESSION_CURRENT_LANGUAGE', 'sprache'); // NOTE: it is not under LANG_SESSION_NAME
/*
|--------------------------------------------------------------------------
@@ -125,37 +127,25 @@ define('EMAIL_CONFIG_INDEX', 'mail');
| Messaging system constants
|--------------------------------------------------------------------------
*/
// Email kontakt type
define('EMAIL_KONTAKT_TYPE', 'email');
// tbl_msg_recipient->sentInfo separator
define('SENT_INFO_NEWLINE', '\n');
// Message statuses
define('MSG_STATUS_UNREAD', 0);
define('MSG_STATUS_READ', 1);
define('MSG_STATUS_ARCHIVED', 2);
define('MSG_STATUS_DELETED', 3);
// Priority
define('PRIORITY_LOW', 1);
define('PRIORITY_NORMAL', 2);
define('PRIORITY_HIGH', 3);
define('PRIORITY_URGENT', 4);
// Message priorities
define('MSG_PRIORITY_LOW', 1);
define('MSG_PRIORITY_NORMAL', 2);
define('MSG_PRIORITY_HIGH', 3);
define('MSG_PRIORITY_URGENT', 4);
define('MSG_ERR_SUBJECT_EMPTY', 40);
define('MSG_ERR_BODY_EMPTY', 41);
define('MSG_ERR_TEMPLATE_NOT_FOUND', 42);
define('MSG_ERR_DELIVERY_MESSAGE', 43);
define('MSG_ERR_CONTACT_NOT_FOUND', 44);
define('MSG_ERR_OU_CONTACTS_NOT_FOUND', 45);
define('MSG_ERR_INVALID_USER_ID', 100);
define('MSG_ERR_INVALID_MSG_ID', 101);
define('MSG_ERR_INVALID_THREAD_ID', 102);
define('MSG_ERR_INVALID_STATUS_ID', 103);
define('MSG_ERR_INVALID_SENDER_ID', 104);
define('MSG_ERR_INVALID_RECIPIENTS', 105);
define('MSG_ERR_INVALID_RECEIVER_ID', 106);
define('MSG_ERR_INVALID_OU', 107);
define('MSG_ERR_INVALID_TEMPLATE', 108);
define('MSG_ERR_INVALID_TOKEN', 109);
// Message error status
define('MSG_ERR_INVALID_SUBJECT', 40);
define('MSG_ERR_INVALID_BODY', 41);
define('MSG_ERR_INVALID_TEMPLATE', 42);
define('MSG_ERR_INVALID_MSG_ID', 43);
define('MSG_ERR_INVALID_STATUS_ID', 44);
define('MSG_ERR_INVALID_SENDER', 45);
define('MSG_ERR_INVALID_RECIPIENTS', 46);
define('MSG_ERR_INVALID_OU', 47);
define('MSG_ERR_INVALID_TOKEN', 48);
+3
View File
@@ -29,3 +29,6 @@ $config['wrapchars'] = 76; // Character count to wrap at.
$config['mailtype'] = 'html'; // html or text
$config['priority'] = 3; // Email Priority. 1 = highest. 5 = lowest. 3 = normal
$config['validate'] = false; // If true then the email address will be validated
// If enabled will be logged info about emails in Codeigniter error logs
$config['enable_debug'] = false;
+11 -5
View File
@@ -7,13 +7,19 @@ $config['send_immediately'] = false;
$config['msg_delivery'] = true; // Default true
$config['system_person_id'] = 1; // Dummy sender, used for sending messages from the system
$config['redirect_view_message_url'] = '/Redirect/redirectByToken/';
$config['message_html_view_url'] = '/ViewMessage/toHTML/';
$config['redirect_view_message_url'] = '/system/messages/ViewMessage/redirectByToken/';
$config['message_html_view_url'] = '/system/messages/ViewMessage/toHTML/';
// Change this to CIS Server (https://cis.example.com/index.ci.php) if you are sending Messages from Vilesci
$config['message_server'] = site_url();
$config['assistent_function'] = 'ass';
// Organization unit function that are allowed to read messages for the organisation unit
$config['ou_receivers'] = array('ass');
// Organization units that will never receive notice emails
$config['ou_receivers_no_notice'] = array('infocenter');
// Organization units that will not send the notice email to the internal account, but to the private one
$config['ou_receivers_private'] = array('eac', 'ewu', 'scs');
$config['message_redirect_url'] = array();
$config['message_redirect_url']['fallback'] = site_url('ViewMessage/writeReply');
// $config['message_redirect_url']['OE_ROOT'] = 'https://SERVER-NAME/addons/aufnahme/OE_ROOT/cis/index.php';
$config['message_redirect_url']['fallback'] = site_url('system/messages/ViewMessage/writeReply');
// $config['message_redirect_url']['OE_ROOT_1'] = 'https://<server name>/addons/aufnahme/OE_ROOT/cis/index.php';
// $config['message_redirect_url']['OE_ROOT_2'] = 'https://<server name>/<where ever you like to land to a message reply page>';
+8 -1
View File
@@ -72,11 +72,18 @@ $config['navigation_header'] = array(
'sort' => 40,
'requiredPermissions' => 'basis/vilesci:r',
'children'=> array(
'messages' => array(
'link' => site_url('system/messages/MessageClient/read'),
'icon' => '',
'target' => '_blank',
'description' => 'Messages',
'sort' => 10,
),
'bpk' => array(
'link' => site_url('person/BPKWartung'),
'icon' => '',
'description' => 'BPK Wartung',
'sort' => 10,
'sort' => 20,
'requiredPermissions' => 'admin:r'
)
)
-35
View File
@@ -1,35 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined("BASEPATH")) exit("No direct script access allowed");
class MailJob extends Auth_Controller
{
/**
* API constructor
*/
public function __construct()
{
// An empty array as parameter will ensure that this controller is ONLY callable from command line
parent::__construct(array());
// Loads MessageLib
$this->load->library('MessageLib');
}
public function sendMessages($numberToSent = null, $numberPerTimeRange = null, $email_time_range = null, $email_from_system = null)
{
$this->messagelib->sendAll($numberToSent, $numberPerTimeRange, $email_time_range, $email_from_system);
}
}
-86
View File
@@ -1,86 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Redirect extends FHC_Controller
{
/**
* API constructor
*/
public function __construct()
{
parent::__construct();
// Loads model MessageTokenModel
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
}
/**
* redirectByToken
*
* - Loads the message using a token
* - Loads the root of the organisation unit tree using the oe_kurzbz present in the message
* - Redirect to the aufnahme related to the found organisation unit
*/
public function redirectByToken($token)
{
$msg = $this->MessageTokenModel->getMessageByToken($token);
if ($msg->error)
{
show_error($msg->retval);
}
$oe_kurzbz = $msg->retval[0]->oe_kurzbz;
if ($oe_kurzbz != null && $oe_kurzbz != '')
{
$organisationRoot = null;
$getOERoot = $this->MessageTokenModel->getOERoot($oe_kurzbz);
if (isSuccess($getOERoot)) // If no errors occurred
{
$organisationRoot = $getOERoot->retval;
}
else
{
show_error('No organisation unit present in the message');
}
$addonAufnahmeUrls = $this->config->item('message_redirect_url');
if(!isset($addonAufnahmeUrls[$organisationRoot]))
$organisationRoot = 'fallback';
if (isset($token)
&& hasData($msg)
&& is_array($addonAufnahmeUrls)
&& $organisationRoot != null
&& isset($addonAufnahmeUrls[$organisationRoot]))
{
redirect($addonAufnahmeUrls[$organisationRoot] . '?token=' . $token);
}
}
else
{
$addonAufnahmeUrls = $this->config->item('message_redirect_url');
if (isset($token)
&& hasData($msg)
&& is_array($addonAufnahmeUrls)
&& isset($addonAufnahmeUrls['fallback']))
{
redirect($addonAufnahmeUrls['fallback'] . '?token=' . $token);
}
}
}
}
-152
View File
@@ -1,152 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Handles sending messages with token
* NOTE: in this controller is not possible to include/call everything
* that automatically call the authentication system, like the most of models or libraries
*/
class ViewMessage extends FHC_Controller
{
/**
* API constructor
*/
public function __construct()
{
parent::__construct();
// Loading config file message
$this->config->load('message');
// Load model MessageToken_model, not calling the authentication system
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
$this->load->model('CL/Messages_model', 'CLMessagesModel');
}
/**
* Using the MessageTokenModel instead of MessageLib to allow
* viewing the message without prompting the login
*/
public function toHTML($token)
{
$msg = $this->MessageTokenModel->getMessageByToken($token);
if ($msg->error)
{
show_error(getData($msg));
}
if (is_array(getData($msg)) && count(getData($msg)) > 0)
{
$setReadMessageStatusByToken = $this->MessageTokenModel->setReadMessageStatusByToken($token);
if (isError($setReadMessageStatusByToken))
{
show_error($msg->$setReadMessageStatusByToken);
}
$sender_id = getData($msg)[0]->sender_id;
$receiver_id = getData($msg)[0]->receiver_id;
$sender = $this->MessageTokenModel->getSenderData($sender_id);
// To decide how to change the redirection
$isEmployee = $this->MessageTokenModel->isEmployee($receiver_id);
if (!is_bool($isEmployee) && isError($isEmployee))
{
show_error($isEmployee);
}
if($this->config->item('redirect_view_message_url') != '')
$href = $this->config->item('message_server').$this->config->item('redirect_view_message_url').$token;
else
$href = '';
$data = array (
'sender_id' => $sender_id,
'sender' => getData($sender)[0],
'message' => getData($msg)[0],
'isEmployee' => $isEmployee,
'href' => $href
);
$this->load->view('system/messages/messageHTML.php', $data);
}
}
/**
* write the reply
*/
public function writeReply()
{
$token = $this->input->get('token');
if (isEmptyString($token))
{
show_error('No token supplied');
}
$msg = null;
// Get message data if possible
$msg = $this->MessageTokenModel->getMessageByToken($token);
if (!hasData($msg))
{
show_error('No message found');
}
$msg = getData($msg)[0];
// Get variables
$receiverData = $this->MessageTokenModel->getPersonData($msg->sender_id);
if (!hasData($receiverData))
{
show_error('No sender found');
}
$data = array (
'receivers' => getData($receiverData),
'message' => $msg,
'token' => $token
);
$this->load->view('system/messages/messageWriteReply', $data);
}
/**
* Send a reply
*/
public function sendReply()
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$persons = $this->input->post('persons');
$relationmessage_id = $this->input->post('relationmessage_id');
$token = $this->input->post('token');
if (!isset($relationmessage_id) || $relationmessage_id == '' || !isset($token) || $token == '')
{
show_error('Error while sending reply');
}
$sendReply = $this->CLMessagesModel->sendReply($subject, $body, $persons, $relationmessage_id, $token);
if (isError($sendReply))
{
show_error(getData($sendReply));
}
$this->load->view('system/messages/messageReplySent');
}
}
+267 -267
View File
@@ -1,267 +1,267 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Person extends APIv1_Controller
{
/**
* Person API constructor.
*/
public function __construct()
{
parent::__construct(array('Person' => 'basis/person:rw', 'CheckBewerbung' => 'basis/person:r'));
// Load model PersonModel
$this->load->model('person/person_model', 'PersonModel');
}
/**
* @return void
*/
public function getPerson()
{
$person_id = $this->get('person_id');
$code = $this->get('code');
$email = $this->get('email');
if (isset($code) || isset($email) || isset($person_id))
{
if (isset($code) && isset($email))
{
$result = $this->PersonModel->getPersonKontaktByZugangscode($code, $email);
}
else
{
$parametersArray = array();
if (isset($code))
{
$parametersArray['zugangscode'] = $code;
}
else
{
$parametersArray['person_id'] = $person_id;
}
$result = $this->PersonModel->loadWhere($parametersArray);
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function getCheckBewerbung()
{
$email = $this->get('email');
$studiensemester_kurzbz = $this->get('studiensemester_kurzbz');
if (isset($email))
{
$result = $this->PersonModel->checkBewerbung($email, $studiensemester_kurzbz);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function postPerson()
{
$person = $this->post();
$validation = $this->_validate($person);
if (isSuccess($validation))
{
if(isset($person['person_id']) && !(is_null($person['person_id'])) && ($person['person_id'] != ''))
{
$result = $this->PersonModel->updatePerson($person);
}
else
{
$result = $this->PersonModel->insert($person);
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response($validation, REST_Controller::HTTP_OK);
}
}
private function _validate($person)
{
// If $person is consistent
if (!isset($person) || (isset($person) && !is_array($person)))
{
return error('Any parameters posted');
}
// Trim all the values
foreach($person as $key => $value)
{
if (gettype($value) == 'string')
{
$person[$key] = trim($value);
}
}
if (isset($person['sprache']) && mb_strlen($person['sprache']) > 16)
{
return error('Sprache darf nicht laenger als 16 Zeichen sein');
}
if (isset($person['anrede']) && mb_strlen($person['anrede']) > 16)
{
return error('Anrede darf nicht laenger als 16 Zeichen sein');
}
if (isset($person['titelpost']) && mb_strlen($person['titelpost']) > 32)
{
return error('Titelpost darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['titelpre']) && mb_strlen($person['titelpre']) > 64)
{
return error('Titelpre darf nicht laenger als 64 Zeichen sein');
}
if (isset($person['nachname']) && mb_strlen($person['nachname']) > 64)
{
return error('Nachname darf nicht laenger als 64 Zeichen sein');
}
if (isset($person['nachname']) && ($person['nachname'] == '' || is_null($person['nachname'])))
{
return error('Nachname muss eingegeben werden');
}
if (isset($person['vorname']) && mb_strlen($person['vorname']) > 32)
{
return error('Vorname darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['vornamen']) && mb_strlen($person['vornamen']) > 128)
{
return error('Vornamen darf nicht laenger als 128 Zeichen sein');
}
if (isset($person['gebort']) && mb_strlen($person['gebort']) > 128)
{
return error('Geburtsort darf nicht laenger als 128 Zeichen sein');
}
if (isset($person['homepage']) && mb_strlen($person['homepage']) > 256)
{
return error('Homepage darf nicht laenger als 256 Zeichen sein');
}
if (isset($person['matr_nr']) && mb_strlen($person['matr_nr']) > 32)
{
return error('Matrikelnummer darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['ersatzkennzeichen']) && mb_strlen($person['ersatzkennzeichen']) > 10)
{
return error('Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein');
}
if (isset($person['familienstand']) && mb_strlen($person['familienstand']) > 1)
{
return error('Familienstand ist ungueltig');
}
if (isset($person['anzahlkinder']) && $person['anzahlkinder'] != '' && !is_numeric($person['anzahlkinder']))
{
return error('Anzahl der Kinder ist ungueltig');
}
if (!isset($person['aktiv']) || (isset($person['aktiv']) && $person['aktiv'] !== true && $person['aktiv'] !== false))
{
return error('Aktiv ist ungueltig');
}
if (!isset($person['person_id']) && isset($person['insertvon']) && mb_strlen($person['insertvon']) > 32)
{
return error('Insertvon darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['updatevon']) && mb_strlen($person['updatevon']) > 32)
{
return error('Updatevon darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['geburtsnation']) && mb_strlen($person['geburtsnation']) > 3)
{
return error('Geburtsnation darf nicht laenger als 3 Zeichen sein');
}
if (isset($person['staatsbuergerschaft']) && mb_strlen($person['staatsbuergerschaft']) > 3)
{
return error('Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein');
}
if (!isset($person['geschlecht']) || (isset($person['geschlecht']) && mb_strlen($person['geschlecht']) > 1))
{
return error('Geschlecht darf nicht laenger als 1 Zeichen sein');
}
if (isset($person['geschlecht']) && $person['geschlecht'] != 'm' && $person['geschlecht'] != 'w' && $person['geschlecht'] != 'u')
{
return error('Geschlecht muss w, m oder u sein!');
}
if (isset($person['svnr']))
{
if ($person['svnr'] != '' && mb_strlen($person['svnr']) != 16
&& mb_strlen($person['svnr']) != 12 && mb_strlen($person['svnr']) != 10)
{
return error('SVNR muss 10, 12 oder 16 Zeichen lang sein');
}
if (mb_strlen($person['svnr']) == 10 || mb_strlen($person['svnr']) == 12)
{
//SVNR mit Pruefziffer pruefen
//Die 4. Stelle in der SVNR ist die Pruefziffer
//(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer
//Falls nicht, ist die SVNR ungueltig
$gewichtung = array(3, 7, 9, 0, 5, 8, 4, 2, 1, 6);
$erg = 0;
$tmpSvnr = substr($person['svnr'], 0, 10);
//Quersumme bilden
for ($i = 0; $i < 10; $i++)
{
$erg += $gewichtung[$i] * $tmpSvnr{$i};
}
if ($tmpSvnr{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
{
return error('SVNR ist ungueltig');
}
if (mb_strlen($person['svnr']) == 12)
{
$last = substr($person['svnr'], 10, 12);
if ($last{0} != 'v' || !is_numeric($last{1}))
{
return error('SVNR ist ungueltig');
}
}
}
//Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt.
if (isset($person['gebdatum']) && $person['svnr'] != '' && $person['gebdatum'] != '')
{
if (!mb_ereg('([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})', $person['gebdatum'])
&& !mb_ereg('([0-9]{4})-([0-9]{2})-([0-9]{2})', $person['gebdatum']))
{
return error('Format des Geburtsdatums ist ungueltig');
}
}
}
return success('Input data are valid');
}
}
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Person extends APIv1_Controller
{
/**
* Person API constructor.
*/
public function __construct()
{
parent::__construct(array('Person' => 'basis/person:rw', 'CheckBewerbung' => 'basis/person:r'));
// Load model PersonModel
$this->load->model('person/person_model', 'PersonModel');
}
/**
* @return void
*/
public function getPerson()
{
$person_id = $this->get('person_id');
$code = $this->get('code');
$email = $this->get('email');
if (isset($code) || isset($email) || isset($person_id))
{
if (isset($code) && isset($email))
{
$result = $this->PersonModel->getPersonKontaktByZugangscode($code, $email);
}
else
{
$parametersArray = array();
if (isset($code))
{
$parametersArray['zugangscode'] = $code;
}
else
{
$parametersArray['person_id'] = $person_id;
}
$result = $this->PersonModel->loadWhere($parametersArray);
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function getCheckBewerbung()
{
$email = $this->get('email');
$studiensemester_kurzbz = $this->get('studiensemester_kurzbz');
if (isset($email))
{
$result = $this->PersonModel->checkBewerbung($email, $studiensemester_kurzbz);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response();
}
}
/**
* @return void
*/
public function postPerson()
{
$person = $this->post();
$validation = $this->_validate($person);
if (isSuccess($validation))
{
if(isset($person['person_id']) && !(is_null($person['person_id'])) && ($person['person_id'] != ''))
{
$result = $this->PersonModel->updatePerson($person);
}
else
{
$result = $this->PersonModel->insert($person);
}
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response($validation, REST_Controller::HTTP_OK);
}
}
private function _validate($person)
{
// If $person is consistent
if (!isset($person) || (isset($person) && !is_array($person)))
{
return error('Any parameters posted');
}
// Trim all the values
foreach($person as $key => $value)
{
if (gettype($value) == 'string')
{
$person[$key] = trim($value);
}
}
if (isset($person['sprache']) && mb_strlen($person['sprache']) > 16)
{
return error('Sprache darf nicht laenger als 16 Zeichen sein');
}
if (isset($person['anrede']) && mb_strlen($person['anrede']) > 16)
{
return error('Anrede darf nicht laenger als 16 Zeichen sein');
}
if (isset($person['titelpost']) && mb_strlen($person['titelpost']) > 32)
{
return error('Titelpost darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['titelpre']) && mb_strlen($person['titelpre']) > 64)
{
return error('Titelpre darf nicht laenger als 64 Zeichen sein');
}
if (isset($person['nachname']) && mb_strlen($person['nachname']) > 64)
{
return error('Nachname darf nicht laenger als 64 Zeichen sein');
}
if (isset($person['nachname']) && ($person['nachname'] == '' || is_null($person['nachname'])))
{
return error('Nachname muss eingegeben werden');
}
if (isset($person['vorname']) && mb_strlen($person['vorname']) > 32)
{
return error('Vorname darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['vornamen']) && mb_strlen($person['vornamen']) > 128)
{
return error('Vornamen darf nicht laenger als 128 Zeichen sein');
}
if (isset($person['gebort']) && mb_strlen($person['gebort']) > 128)
{
return error('Geburtsort darf nicht laenger als 128 Zeichen sein');
}
if (isset($person['homepage']) && mb_strlen($person['homepage']) > 256)
{
return error('Homepage darf nicht laenger als 256 Zeichen sein');
}
if (isset($person['matr_nr']) && mb_strlen($person['matr_nr']) > 32)
{
return error('Matrikelnummer darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['ersatzkennzeichen']) && mb_strlen($person['ersatzkennzeichen']) > 10)
{
return error('Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein');
}
if (isset($person['familienstand']) && mb_strlen($person['familienstand']) > 1)
{
return error('Familienstand ist ungueltig');
}
if (isset($person['anzahlkinder']) && $person['anzahlkinder'] != '' && !is_numeric($person['anzahlkinder']))
{
return error('Anzahl der Kinder ist ungueltig');
}
if (!isset($person['aktiv']) || (isset($person['aktiv']) && $person['aktiv'] !== true && $person['aktiv'] !== false))
{
return error('Aktiv ist ungueltig');
}
if (!isset($person['person_id']) && isset($person['insertvon']) && mb_strlen($person['insertvon']) > 32)
{
return error('Insertvon darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['updatevon']) && mb_strlen($person['updatevon']) > 32)
{
return error('Updatevon darf nicht laenger als 32 Zeichen sein');
}
if (isset($person['geburtsnation']) && mb_strlen($person['geburtsnation']) > 3)
{
return error('Geburtsnation darf nicht laenger als 3 Zeichen sein');
}
if (isset($person['staatsbuergerschaft']) && mb_strlen($person['staatsbuergerschaft']) > 3)
{
return error('Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein');
}
if (!isset($person['geschlecht']) || (isset($person['geschlecht']) && mb_strlen($person['geschlecht']) > 1))
{
return error('Geschlecht darf nicht laenger als 1 Zeichen sein');
}
if (isset($person['geschlecht']) && $person['geschlecht'] != 'm' && $person['geschlecht'] != 'w' && $person['geschlecht'] != 'u')
{
return error('Geschlecht muss w, m oder u sein!');
}
if (isset($person['svnr']))
{
if ($person['svnr'] != '' && mb_strlen($person['svnr']) != 16
&& mb_strlen($person['svnr']) != 12 && mb_strlen($person['svnr']) != 10)
{
return error('SVNR muss 10, 12 oder 16 Zeichen lang sein');
}
if (mb_strlen($person['svnr']) == 10 || mb_strlen($person['svnr']) == 12)
{
//SVNR mit Pruefziffer pruefen
//Die 4. Stelle in der SVNR ist die Pruefziffer
//(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer
//Falls nicht, ist die SVNR ungueltig
$gewichtung = array(3, 7, 9, 0, 5, 8, 4, 2, 1, 6);
$erg = 0;
$tmpSvnr = substr($person['svnr'], 0, 10);
//Quersumme bilden
for ($i = 0; $i < 10; $i++)
{
$erg += $gewichtung[$i] * $tmpSvnr{$i};
}
if ($tmpSvnr{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11
{
return error('SVNR ist ungueltig');
}
if (mb_strlen($person['svnr']) == 12)
{
$last = substr($person['svnr'], 10, 12);
if ($last{0} != 'v' || !is_numeric($last{1}))
{
return error('SVNR ist ungueltig');
}
}
}
//Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt.
if (isset($person['gebdatum']) && $person['svnr'] != '' && $person['gebdatum'] != '')
{
if (!mb_ereg('([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})', $person['gebdatum'])
&& !mb_ereg('([0-9]{4})-([0-9]{2})-([0-9]{2})', $person['gebdatum']))
{
return error('Format des Geburtsdatums ist ungueltig');
}
}
}
return success('Input data are valid');
}
}
@@ -144,26 +144,26 @@ class Message extends APIv1_Controller
*/
public function postMessage()
{
$validation = $this->_validatePostMessage($this->post());
$postMessage = $this->_validatePostMessage($this->post());
if (isSuccess($validation))
if (isSuccess($postMessage))
{
$result = $this->messagelib->sendMessage(
isset($this->post()['person_id']) ? $this->post()['person_id'] : null,
isset($this->post()['receiver_id']) ? $this->post()['receiver_id'] : null,
$this->post()['subject'],
$this->post()['body'],
PRIORITY_NORMAL,
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null,
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // Sender organisation unit
isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true
$result = $this->messagelib->sendMessageUser(
$this->post()['receiver_id'], // receiverPersonId
$this->post()['subject'], // subject
$this->post()['body'], // body
$this->post()['person_id'] ? $this->post()['person_id'] : null, // sender_id
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // senderOU
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null, // relationmessage_id
MSG_PRIORITY_NORMAL, // priority
isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true // multiPartMime
);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response($validation, REST_Controller::HTTP_OK);
$this->response($postMessage, REST_Controller::HTTP_OK);
}
}
@@ -172,26 +172,27 @@ class Message extends APIv1_Controller
*/
public function postMessageVorlage()
{
$validation = $this->_validatePostMessageVorlage($this->post());
$postMessage = $this->_validatePostMessageVorlage($this->post());
if (isSuccess($validation))
if (isSuccess($postMessage))
{
$result = $this->messagelib->sendMessageVorlage(
isset($this->post()['sender_id']) ? $this->post()['sender_id'] : null,
isset($this->post()['receiver_id']) ? $this->post()['receiver_id'] : null,
$this->post()['vorlage_kurzbz'],
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // Sender organisation unit
$this->post()['data'],
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null,
isset($this->post()['orgform_kurzbz']) ? $this->post()['orgform_kurzbz'] : null,
isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true
$result = $this->messagelib->sendMessageUserTemplate(
isset($this->post()['receiver_id']) ? $this->post()['receiver_id'] : null, // receiversPersonId
$this->post()['vorlage_kurzbz'], // vorlage
$this->post()['data'], // parseData
isset($this->post()['orgform_kurzbz']) ? $this->post()['orgform_kurzbz'] : null, // orgform
isset($this->post()['sender_id']) ? $this->post()['sender_id'] : null, // sender_id
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // senderOU
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null, // relationmessage_id
MSG_PRIORITY_NORMAL, // priority
isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true // multiPartMime
);
$this->response($result, REST_Controller::HTTP_OK);
}
else
{
$this->response($validation, REST_Controller::HTTP_OK);
$this->response($postMessage, REST_Controller::HTTP_OK);
}
}
@@ -220,26 +221,26 @@ class Message extends APIv1_Controller
/**
* _validatePostMessage
*/
private function _validatePostMessage($message = null)
private function _validatePostMessage($post = null)
{
if (!isset($message))
if (!isset($post))
{
return error('Parameter is null');
}
if (!isset($message['subject']))
if (!isset($post['subject']))
{
return error('subject is not set');
}
if( !isset($message['body']))
if (!isset($post['body']))
{
return error('body is not set');
}
if (!isset($message['receiver_id']) && !isset($message['oe_kurzbz']))
if (!isset($post['receiver_id']))
{
return error('If a receiver_id is not given a oe_kurzbz must be specified');
return error('receiver_id is not set');
}
return success('Input data are valid');
return success();
}
/**
+10 -10
View File
@@ -35,7 +35,7 @@ class Statusgrund extends Auth_Controller
$status = $this->StatusModel->load();
if ($status->error)
{
show_error($status->retval);
show_error(getError($status));
}
$data = array (
@@ -50,7 +50,7 @@ class Statusgrund extends Auth_Controller
$statusGrund = $this->StatusgrundModel->loadWhere(array("status_kurzbz" => $status_kurzbz));
if ($statusGrund->error)
{
show_error($statusGrund->retval);
show_error(getError($statusGrund));
}
$data = array (
@@ -66,13 +66,13 @@ class Statusgrund extends Auth_Controller
$statusGrund = $this->StatusgrundModel->load($statusgrund_id);
if ($statusGrund->error)
{
show_error($statusGrund->retval);
show_error(getError($statusGrund));
}
$sprache = $this->SpracheModel->loadWhere(array('content' => true));
if ($sprache->error)
{
show_error($sprache->retval);
show_error(getError($sprache));
}
$data = array (
@@ -89,13 +89,13 @@ class Statusgrund extends Auth_Controller
$status = $this->StatusModel->load($status_id);
if ($status->error)
{
show_error($status->retval);
show_error(getError($status));
}
$sprache = $this->SpracheModel->loadWhere(array('content' => true));
if ($sprache->error)
{
show_error($sprache->retval);
show_error(getError($sprache));
}
$data = array (
@@ -112,7 +112,7 @@ class Statusgrund extends Auth_Controller
$sprache = $this->SpracheModel->loadWhere(array('content' => true));
if ($sprache->error)
{
show_error($sprache->retval);
show_error(getError($sprache));
}
$data = array (
@@ -184,7 +184,7 @@ class Statusgrund extends Auth_Controller
if ($statusgrund->error)
{
show_error($statusgrund->retval);
show_error(getError($statusgrund));
}
redirect("/crm/Statusgrund/editGrund/" . $statusgrund_id . "/" . true);
@@ -252,7 +252,7 @@ class Statusgrund extends Auth_Controller
if ($statusgrund->error)
{
show_error($statusgrund->retval);
show_error(getError($statusgrund));
}
redirect("/crm/Statusgrund/editGrund/" . $statusgrund->retval . "/" . true);
@@ -297,7 +297,7 @@ class Statusgrund extends Auth_Controller
if ($status->error)
{
show_error($status->retval);
show_error(getError($status));
}
redirect("/crm/Statusgrund/editStatus/" . $status_kurzbz . "/" . true);
+2 -2
View File
@@ -121,13 +121,13 @@ class AmpelMail extends CLI_Controller
}
elseif (isError($result_ampel_user))
{
show_error($result_ampel_user->error);
show_error(getError($result_ampel_user));
}
}
}
elseif (isError($result_active_ampeln))
{
show_error($result_active_ampeln->error);
show_error(getError($result_active_ampeln));
}
// Send mails for new ampeln merged by user
+47
View File
@@ -0,0 +1,47 @@
<?php
if (!defined("BASEPATH")) exit("No direct script access allowed");
class MailJob extends JOB_Controller
{
/**
* API constructor
*/
public function __construct()
{
parent::__construct();
// Loads MessageLib
$this->load->library('MessageLib');
}
/**
* Send all the NOT sent notice emails for messaging system
* The parameters are all not mandatory, they could be used to overrides the configs for testing, debug or one shot purposes
*/
public function sendAllMessageEmailNotices($since = '1970-01-01', $numberToSent = null, $numberPerTimeRange = null, $emailTimeRange = null, $emailFromSystem = null)
{
$this->logInfo('Send all message email notices started');
// Send them all!
$sendAllEmailNotices = $this->messagelib->sendAllEmailNotices($since, $numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem);
if (isError($sendAllEmailNotices))
{
$optionalParameters = new stdClass();
$optionalParameters->$since = $since;
$optionalParameters->$numberToSent = $numberToSent;
$optionalParameters->$numberPerTimeRange = $numberPerTimeRange;
$optionalParameters->$emailTimeRange = $emailTimeRange;
$optionalParameters->$emailFromSystem = $emailFromSystem;
$this->logError($sendAllEmailNotices->retval, $optionalParameters);
}
elseif (!hasData($sendAllEmailNotices))
{
$this->logInfo('There were no unsent messages');
}
$this->logInfo('Send all message email notices ended');
}
}
@@ -109,7 +109,7 @@ class Prestudentstatus extends CLI_Controller
}
else
{
show_error($status->retval);
show_error(getError($status));
}
echo "Corrected:".$sum_corrected."\n";
echo "Not Corrected:".$sum_notcorrected."\n";
File diff suppressed because it is too large Load Diff
@@ -26,7 +26,7 @@ class Lehrauftrag extends Auth_Controller
array(
'index' => 'lehre/lehrauftrag_bestellen:r',
'orderLehrauftrag' => 'lehre/lehrauftrag_bestellen:rw',
'Dashboard' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:rw'),
'Dashboard' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:r'),
'LehrendeUebersicht' => array('lehre/lehrauftrag_erteilen:r')
)
);
@@ -107,14 +107,14 @@ class Lehrauftrag extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getNext();
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
}
elseif (isError($studiensemester))
{
show_error($studiensemester->error);
show_error(getError($studiensemester));
}
}
@@ -154,8 +154,9 @@ class Lehrauftrag extends Auth_Controller
$studiengang_kz = (isset($lehrauftrag->studiengang_kz)) ? $lehrauftrag->studiengang_kz : null;
// Check if user is entitled to order this Lehrauftrag
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_BESTELLEN, 'suid', $studiengang_kz)){
show_error('Keine Bestellberechtigung für diesen Studiengang: '. $studiengang_kz);
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_BESTELLEN, 'suid', $studiengang_kz))
{
return $this->outputJsonError('Sie haben keine Bestellberechtigung für diesen Studiengang: '. $studiengang_kz);
}
// update contract if contract exists and the betrag was changed
@@ -168,6 +169,10 @@ class Lehrauftrag extends Auth_Controller
$vertrag_betrag = $result[0]->betrag;
$vertrag_stunden = $result[0]->vertragsstunden;
}
elseif (isError($result))
{
return $this->outputJsonError('Fehler beim Laden des Vertrags');
}
$hasChanged = ($betrag != floatval($vertrag_betrag) || $stunden != $vertrag_stunden) ? true : false;
@@ -190,6 +195,10 @@ class Lehrauftrag extends Auth_Controller
'erteilt' => null
);
}
else
{
return $this->outputJsonError('Fehler beim Vertragsupdate');
}
}
}
// else save new contract
@@ -215,6 +224,14 @@ class Lehrauftrag extends Auth_Controller
'vertrag_stunden' => $stunden
);
}
elseif (isError($result) && $result->retval)
{
return $this->outputJsonError($result->retval);
}
else
{
return $this->outputJsonError('Fehler beim Speichern des Vertrags');
}
$new_lehrvertrag_data_arr[] = array(
'studiensemester_kurzbz' => $lehrauftrag->studiensemester_kurzbz,
@@ -224,6 +241,10 @@ class Lehrauftrag extends Auth_Controller
}
}
}
else
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
if (isset($json) && !isEmptyArray($json))
{
@@ -71,14 +71,14 @@ class LehrauftragAkzeptieren extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getNext();
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
}
elseif (isError($studiensemester))
{
show_error($studiensemester->error);
show_error(getError($studiensemester));
}
}
@@ -107,7 +107,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
}
else
{
show_error('Password is missing');
return $this->outputJsonError('Passwort fehlt');
}
// Loop through lehraufträge
@@ -139,20 +139,20 @@ class LehrauftragAkzeptieren extends Auth_Controller
$account_found = true;
}
}
if (!$account_found)
{
show_error('Keine Berechtigung für diesen Vertrag');
return $this->outputJsonError('Sie haben keine Berechtigung für einen Vertrag');
}
}
else
{
show_error($result->retval);
return $this->outputJsonError('Fehler beim Laden der Benutzerdaten');
}
}
else
{
show_error($result->retval);
return $this->outputJsonError('Fehler beim Laden des Vertrags');
}
// Set status to accepted
@@ -165,6 +165,10 @@ class LehrauftragAkzeptieren extends Auth_Controller
'akzeptiert' => date('Y-m-d')
);
}
else
{
return $this->outputJsonError($result->retval);
}
}
// Output json to ajax
@@ -173,17 +177,21 @@ class LehrauftragAkzeptieren extends Auth_Controller
$this->outputJsonSuccess($json);
}
}
else
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
}
/**
* Check if lectors latest active Verwendung has inkludierte Lehre
* Check if lectors latest Verwendung has inkludierte Lehre
* - inkludierte_lehre is null OR 0: freelancer lector -> has NO inkludierte Lehre
* - inkludierte_lehre -1: fix employed lector -> has inkludierte Lehre (all inclusive)
* - inkludierte_lehre > 0: fix employed lector -> has inkludierte Lehre (value is amount of hours included)
*/
public function checkInkludierteLehre()
{
$result = $this->BisverwendungModel->getLast($this->_uid);
$result = $this->BisverwendungModel->getLast($this->_uid, false);
if (hasData($result))
{
@@ -191,7 +199,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
}
else
{
$this->outputJsonError($result->retval);
$this->outputJsonError(getError($result));
}
}
@@ -90,14 +90,14 @@ class LehrauftragErteilen extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getNext();
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
}
elseif (isError($studiensemester))
{
show_error($studiensemester->error);
show_error(getError($studiensemester));
}
}
@@ -122,10 +122,10 @@ class LehrauftragErteilen extends Auth_Controller
public function approveLehrauftrag()
{
$lehrauftrag_arr = json_decode($this->input->post('selected_data'));
if (is_array($lehrauftrag_arr))
if (is_array($lehrauftrag_arr))
{
foreach ($lehrauftrag_arr as $lehrauftrag)
foreach ($lehrauftrag_arr as $lehrauftrag)
{
$mitarbeiter_uid = (isset($lehrauftrag->mitarbeiter_uid)) ? $lehrauftrag->mitarbeiter_uid : null;
$vertrag_id = (isset($lehrauftrag->vertrag_id)) ? $lehrauftrag->vertrag_id : null;
@@ -146,31 +146,42 @@ class LehrauftragErteilen extends Auth_Controller
}
elseif (isError(($result)))
{
show_error($result->retval);
return $this->outputJsonError('Fehler beim Laden einer Lehrveranstaltung.');
}
}
elseif (isError($result))
{
show_error($result->retval);
return $this->outputJsonError('Fehler beim Laden von Lehreinheitdaten.');
}
// Check if user is entitled to approve this lehrauftrag (by permission and organisational unit)
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, 'suid', $lv_oe_kurzbz)){
show_error('Keine Erteilberechtigung für diese Organisationseinheit: '. $lv_oe_kurzbz);
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, 'suid', $lv_oe_kurzbz))
{
return $this->outputJsonError('Sie haben keine Erteilberechtigung für diese Organisationseinheit: '. $lv_oe_kurzbz);
}
// Approve lehrauftrag by setting vertragsstatus to 'erteilt'
$result = $this->VertragvertragsstatusModel->setStatus($vertrag_id, $mitarbeiter_uid, 'erteilt');
if ($result->retval) {
if (!isError($result))
{
$json [] = array(
'row_index' => $lehrauftrag->row_index,
'erteilt' => date('Y-m-d')
);
}
else
{
return $this->outputJsonError($result->retval);
}
}
}
// output json to ajax
else
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
// output success json to ajax
if (isset($json) && !isEmptyArray($json))
{
$this->outputJsonSuccess($json);
@@ -44,7 +44,7 @@ class Studienjahr extends Auth_Controller
$studienjahr = $this->StudienjahrModel->load();
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
$data = array(
@@ -66,7 +66,7 @@ class Studienjahr extends Auth_Controller
$studienjahr = $this->StudienjahrModel->load($studienjahr_kurzbez);
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
$data = array(
"studienjahr" => $studienjahr->retval
@@ -86,7 +86,7 @@ class Studienjahr extends Auth_Controller
$allstudienjahrkurzbz = $this->StudienjahrModel->load();
if ($allstudienjahrkurzbz->error)
{
show_error($allstudienjahrkurzbz->retval);
show_error(getError($allstudienjahrkurzbz));
}
$studienjahrkurzbz = $allstudienjahrkurzbz->retval[0]->studienjahr_kurzbz;
$years = $this->__getYearsFromStudienjahr($studienjahrkurzbz);
@@ -125,7 +125,7 @@ class Studienjahr extends Auth_Controller
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
redirect("/organisation/studienjahr/editStudienjahr/".str_replace("/", "_", $data['studienjahr_kurzbz']."?saved=true"));
@@ -153,7 +153,7 @@ class Studienjahr extends Auth_Controller
return $data;
} else
{
show_error($validation->retval);
show_error(getError($validation));
}
}
@@ -188,7 +188,7 @@ class Studienjahr extends Auth_Controller
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
redirect("/organisation/studienjahr/editStudienjahr/".str_replace("/", "_", $data['studienjahr_kurzbz']."?saved=true"));
@@ -207,7 +207,7 @@ class Studienjahr extends Auth_Controller
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
redirect("/organisation/studienjahr/listStudienjahr");
@@ -45,7 +45,7 @@ class Studiensemester extends Auth_Controller
$semester = $this->StudiensemesterModel->load();
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
$data = array(
@@ -64,13 +64,13 @@ class Studiensemester extends Auth_Controller
$semester = $this->StudiensemesterModel->load($semester_kurzbez);
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
$this->StudienjahrModel->addOrder('studienjahr_kurzbz', "DESC");
$allstudienjahre = $this->StudienjahrModel->load();
if ($allstudienjahre->error)
{
show_error($allstudienjahre->retval);
show_error(getError($allstudienjahre));
}
$data = array(
"semester" => $semester->retval,
@@ -90,7 +90,7 @@ class Studiensemester extends Auth_Controller
$allstudienjahre = $this->StudienjahrModel->load();
if ($allstudienjahre->error)
{
show_error($allstudienjahre->retval);
show_error(getError($allstudienjahre));
}
$data = array(
@@ -117,7 +117,7 @@ class Studiensemester extends Auth_Controller
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
redirect("/organisation/studiensemester/editStudiensemester/".$data['studiensemester_kurzbz']."?saved=true");
@@ -161,7 +161,7 @@ class Studiensemester extends Auth_Controller
return $data;
} else
{
show_error($validation->retval);
show_error(getError($validation));
}
}
@@ -197,7 +197,7 @@ class Studiensemester extends Auth_Controller
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
redirect("/organisation/studiensemester/editStudiensemester/".$data['studiensemester_kurzbz']."?saved=true");
@@ -214,7 +214,7 @@ class Studiensemester extends Auth_Controller
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
redirect("/organisation/studiensemester/listStudiensemester");
@@ -71,7 +71,7 @@ class BPKWartung extends Auth_Controller
$personexists = $this->PersonModel->load($person_id);
if (isError($personexists))
show_error($personexists->retval);
show_error(getError($personexists));
if (!hasData($personexists))
show_error('Person does not exist!');
@@ -122,7 +122,7 @@ class BPKWartung extends Auth_Controller
if (isError($stammdaten))
{
show_error($stammdaten->retval);
show_error(getError($stammdaten));
}
if (!isset($stammdaten->retval))
@@ -132,7 +132,7 @@ class BPKWartung extends Auth_Controller
if (isError($adresse))
{
show_error($adresse->retval);
show_error(getError($adresse));
}
$data = array(
@@ -1,191 +0,0 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class FASMessages extends Auth_Controller
{
/**
*
*/
public function __construct()
{
parent::__construct(
array(
'write' => 'basis/message:rw',
'writeReply' => 'basis/message:rw'
)
);
// Loads the message library
$this->load->library('MessageLib');
// Loads the widget library
$this->load->library('WidgetLib');
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Write a new message
*/
public function write($sender_id)
{
$prestudent_id = $this->input->post('prestudent_id'); // recipients prestudend_id(s)
if (!is_numeric($sender_id))
{
show_error('The current logged user person_id is not defined');
}
$msgVarsData = $this->_getMsgVarsData($prestudent_id);
// Retrieves message vars for a person from view view vw_msg_vars_person
$variablesArray = $this->_getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->_getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->_getIsAdmin($sender_id);
$data = array(
'recipients' => getData($msgVarsData),
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
'isAdmin' => $isAdmin
);
$this->load->view('system/messages/messageWrite', $data);
}
/**
* Write a reply
*/
public function writeReply($sender_id, $msg_id, $receiver_id)
{
$prestudent_id = $this->input->post('prestudent_id'); // recipients prestudend_id(s)
if (!is_numeric($sender_id))
{
show_error('The current logged user person_id is not defined');
}
if (!is_numeric($msg_id))
{
show_error('The msg_id must be a number');
}
if (!is_numeric($receiver_id))
{
show_error('The receiver_id must be a number');
}
$msg = $this->_getMessage($msg_id, $receiver_id);
$msgVarsData = $this->_getMsgVarsData($prestudent_id);
// Retrieves message vars for a person from view view vw_msg_vars_person
$variablesArray = $this->_getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->_getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->_getIsAdmin($sender_id);
$data = array(
'recipients' => getData($msgVarsData),
'message' => $msg,
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
'isAdmin' => $isAdmin
);
$this->load->view('system/messages/messageWrite', $data);
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
*
*/
private function _getMessage($msg_id, $receiver_id)
{
$msg = $this->messagelib->getMessage($msg_id, $receiver_id);
if (isError($msg))
{
show_error(getData($msg));
}
elseif (!hasData($msg))
{
show_error('The selected message does not exist');
}
else
{
$msg = getData($msg)[0];
}
return $msg;
}
/**
* Retrieves message vars from view vw_msg_vars
*/
private function _getMsgVarsData($prestudent_id)
{
$this->load->model('system/Message_model', 'MessageModel');
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
if (isError($msgVarsData))
{
show_error(getData($msgVarsData));
}
return $msgVarsData;
}
/**
* Wrapper method to call messagelib->getMessageVarsPerson
*/
private function _getMessageVarsPerson()
{
$variables = $this->messagelib->getMessageVarsPerson();
if (isError($variables)) show_error(getData($variables));
return getData($variables);
}
/**
* Wrapper method to call messagelib->getOeKurzbz
*/
private function _getOeKurzbz($sender_id)
{
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
if (isError($oe_kurzbz)) show_error(getData($oe_kurzbz));
return getData($oe_kurzbz);
}
/**
* Wrapper method to call messagelib->getIsAdmin
*/
private function _getIsAdmin($sender_id)
{
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
if (isError($isAdmin)) show_error(getData($isAdmin));
return getData($isAdmin);
}
}
-210
View File
@@ -1,210 +0,0 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Messages extends Auth_Controller
{
/**
*
*/
public function __construct()
{
parent::__construct(
array(
'write' => array('basis/message:rw', 'infocenter:rw'),
'send' => array('basis/message:rw', 'infocenter:rw'),
'sendJson' => array('basis/message:rw', 'infocenter:rw'),
'getVorlage' => array('basis/message:r', 'infocenter:r'),
'parseMessageText' => array('basis/message:r', 'infocenter:r'),
'getMessageFromIds' => array('basis/message:r', 'infocenter:r')
)
);
// Loads the message library
$this->load->library('MessageLib');
// Loads the widget library
$this->load->library('WidgetLib');
$this->load->model('system/Message_model', 'MessageModel');
$this->load->model('CL/Messages_model', 'CLMessagesModel');
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Write a new message
*/
public function write()
{
$person_id = $this->input->post('person_id');
$sender_id = null;
$authUser = $this->CLMessagesModel->getAuthUser();
if (isError($authUser))
{
show_error(getData($authUser));
}
else
{
$sender_id = getData($authUser)[0]->person_id;
}
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
if (isError($msgVarsData)) show_error(getData($msgVarsData));
// Retrieves message vars for a person from view view vw_msg_vars_person
$variables = $this->messagelib->getMessageVarsPerson();
if (isError($variables)) show_error(getData($variables));
// Organisation units used to get the templates
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
if (isError($oe_kurzbz)) show_error(getData($oe_kurzbz));
// Admin or commoner?
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
if (isError($isAdmin)) show_error(getData($isAdmin));
$data = array (
'recipients' => getData($msgVarsData),
'variables' => getData($variables),
'oe_kurzbz' => getData($oe_kurzbz), // used to get the templates
'isAdmin' => getData($isAdmin)
);
$this->load->view('system/messages/messageWrite', $data);
}
/**
* Send message
*/
public function send()
{
$persons = $this->input->post('persons');
$relationmessage_id = $this->input->post('relationmessage_id');
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($persons);
$send = $this->CLMessagesModel->send($msgVarsData, $relationmessage_id);
$this->load->view('system/messages/messageSent', array('success' => isSuccess($send)));
}
/**
* Send message, response is in JSON format
*/
public function sendJson()
{
$prestudents = $this->input->post('prestudents');
$vorlage_kurzbz = $this->input->post('vorlage_kurzbz');
$oe_kurzbz = $this->input->post('oe_kurzbz');
$msgVars = $this->input->post('msgvars');
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
// Adds the organisation unit to each prestudent
if (isEmptyString($oe_kurzbz) && hasData($msgVarsData) && hasData($prestudentsData))
{
$this->CLMessagesModel->addOeToPrestudents($msgVarsData, $prestudentsData);
}
$send = $this->CLMessagesModel->send($msgVarsData, null, $oe_kurzbz, $vorlage_kurzbz, $msgVars);
if (isError($send))
{
$this->outputJsonError(getData($send));
}
else
{
$this->outputJsonSuccess(getData($send));
}
}
/**
* getVorlage
*/
public function getVorlage()
{
$vorlage_kurzbz = $this->input->get('vorlage_kurzbz');
$result = null;
if (!isEmptyString($vorlage_kurzbz))
{
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
$this->VorlagestudiengangModel->addOrder('version','DESC');
$result = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
}
else
{
$result = error('The given vorlage_kurzbz is not valid');
}
if (isError($result) || !hasData($result))
{
$this->outputJsonError(getData($result));
}
else
{
$this->outputJsonSuccess(getData($result));
}
}
/**
* parseMessageText
*/
public function parseMessageText()
{
$person_id = $this->input->get('person_id');
$text = $this->input->get('text');
$parsedText = '';
$data = null;
if (is_numeric($person_id))
{
$data = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
}
else
{
$data = error('The given person_id is not a valid number');
}
if (isError($data) || !hasData($data))
{
$this->outputJsonError(getData($data));
}
else
{
$parsedText = $this->messagelib->parseMessageText($text, $this->CLMessagesModel->replaceKeys((array)getData($data)[0]));
$this->outputJsonSuccess($parsedText);
}
}
/**
* Outputs message data for a message (identified my msg id and receiver id) in JSON format
* @param $msg_id
* @param $receiver_id
*/
public function getMessageFromIds()
{
$msg_id = $this->input->get('msg_id');
$receiver_id = $this->input->get('receiver_id');
$msg = $this->messagelib->getMessage($msg_id, $receiver_id);
$this->output
->set_content_type('application/json')
->set_output(json_encode(array(getData($msg)[0])));
}
}
+9 -9
View File
@@ -45,7 +45,7 @@ class Phrases extends Auth_Controller
{
$phrases = $this->phraseslib->getPhraseByApp('aufnahme');
if ($phrases->error)
show_error($phrases->retval);
show_error(getError($phrases));
$data = array(
'app' => 'aufnahme',
@@ -67,7 +67,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->getPhraseInhalt($phrase_id);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
$data = array(
'phrase_id' => $phrase_id,
@@ -88,7 +88,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->delPhrasentext($phrasentext_id);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
redirect('/system/Phrases/view/'.$phrase_id);
}
@@ -102,7 +102,7 @@ class Phrases extends Auth_Controller
$phrase = $this->phraseslib->getPhrase($phrase_id);
if ($phrase->error)
show_error($phrase->retval);
show_error(getError($phrase));
if (count($phrase->retval) != 1)
show_error('Phrase nicht vorhanden! ID: '.$phrase_id);
@@ -124,7 +124,7 @@ class Phrases extends Auth_Controller
$phrase = $this->phraseslib->savePhrase($phrase_id, $data);
if ($phrase->error)
show_error($phrase->retval);
show_error(getError($phrase));
$phrase_id = $phrase->retval;
@@ -145,7 +145,7 @@ class Phrases extends Auth_Controller
$resultOE = $this->OrganisationseinheitModel->loadWhere(array('aktiv' => true, 'oe_parent_kurzbz' => null));
if ($resultOE->error)
show_error($resultOE->retval);
show_error(getError($resultOE));
if (hasData($resultOE))
{
@@ -161,7 +161,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->insertPhraseinhalt($data);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
$phrase_inhalt_id = $phrase_inhalt->retval;
@@ -180,7 +180,7 @@ class Phrases extends Auth_Controller
{
$phrase_inhalt = $this->phraseslib->getPhrasentextById($phrasentext_id);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
$data = $phrase_inhalt->retval[0];
@@ -204,7 +204,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->updatePhraseInhalt($phrase_inhalt_id, $data);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
redirect('/system/Phrases/editText/'.$phrase_inhalt_id);
+10 -10
View File
@@ -49,7 +49,7 @@ class Vorlage extends Auth_Controller
$vorlage = $this->vorlagelib->getVorlageByMimetype($mimetype);
if ($vorlage->error)
show_error($vorlage->retval);
show_error(getError($vorlage));
$data = array (
'mimetype' => $mimetype,
@@ -66,7 +66,7 @@ class Vorlage extends Auth_Controller
$vorlagentext = $this->vorlagelib->getVorlagetextByVorlage($vorlage_kurzbz);
if ($vorlagentext->error)
show_error($vorlagentext->retval);
show_error(getError($vorlagentext));
$data = array (
'vorlage_kurzbz' => $vorlage_kurzbz,
@@ -83,7 +83,7 @@ class Vorlage extends Auth_Controller
$vorlage = $this->vorlagelib->getVorlage($vorlage_kurzbz);
if ($vorlage->error)
show_error($vorlage->retval);
show_error(getError($vorlage));
if (count($vorlage->retval) != 1)
show_error('Nachricht nicht vorhanden! ID: '.$vorlage_kurzbz);
@@ -119,7 +119,7 @@ class Vorlage extends Auth_Controller
$vorlage = $this->vorlagelib->saveVorlage($vorlage_kurzbz, $data);
if ($vorlage->error)
show_error($vorlage->retval);
show_error(getError($vorlage));
$vorlage_kurzbz = $vorlage->retval;
@@ -137,7 +137,7 @@ class Vorlage extends Auth_Controller
$resultOE = $this->OrganisationseinheitModel->loadWhere(array('aktiv' => true, 'oe_parent_kurzbz' => null));
if ($resultOE->error)
show_error($resultOE->retval);
show_error(getError($resultOE));
if (hasData($resultOE))
{
@@ -153,7 +153,7 @@ class Vorlage extends Auth_Controller
$vorlagetext = $this->vorlagelib->insertVorlagetext($data);
if ($vorlagetext->error)
show_error($vorlagetext->retval);
show_error(getError($vorlagetext));
$vorlagestudiengang_id = $vorlagetext->retval;
@@ -170,7 +170,7 @@ class Vorlage extends Auth_Controller
$vorlagetext = $this->vorlagelib->getVorlagetextById($vorlagestudiengang_id);
if ($vorlagetext->error)
show_error($vorlagetext->retval);
show_error(getError($vorlagetext));
$data = $vorlagetext->retval[0];
@@ -254,7 +254,7 @@ class Vorlage extends Auth_Controller
$vorlagetext = $this->vorlagelib->updateVorlagetext($data['vorlagestudiengang_id'], $data);
if ($vorlagetext->error)
show_error($vorlagetext->retval);
show_error(getError($vorlagetext));
redirect('/system/vorlage/editText/'.$data['vorlagestudiengang_id']);
}
@@ -266,10 +266,10 @@ class Vorlage extends Auth_Controller
$vorlagetext = $this->vorlagelib->getVorlagetextById($vorlagestudiengang_id);
if ($vorlagetext->error)
show_error($vorlagetext->retval);
show_error(getError($vorlagetext));
$data = array(
'text' => $this->vorlagelib->parseVorlagetext($vorlagetext->retval[0]->text, $jsonDecodedForm)
'text' => parseText($vorlagetext->retval[0]->text, $jsonDecodedForm)
);
$this->load->view('system/vorlage/templatetextPreview', $data);
@@ -61,7 +61,7 @@ class PrestudentMultiAssign extends Auth_Controller
}
else if (isError($returnUsers))
{
show_error($returnUsers->retval);
show_error(getError($returnUsers));
}
}
@@ -24,7 +24,6 @@ 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
@@ -70,6 +69,7 @@ class InfoCenter extends Auth_Controller
// Name of Interessentenstatus
const INTERESSENTSTATUS = 'Interessent';
const ABGEWIESENERSTATUS = 'Abgewiesener';
const BEWERBERSTATUS = 'Bewerber';
// Statusgruende for which no Studiengangsfreigabemessage should be sent
private $_statusgruendeNoStgFreigabeMessage = array('FIT Programm', 'FIT program', 'FIT programme');
@@ -194,7 +194,7 @@ class InfoCenter extends Auth_Controller
$personexists = $this->PersonModel->load($person_id);
if (isError($personexists))
show_error($personexists->retval);
show_error(getError($personexists));
if (!hasData($personexists))
show_error('Person does not exist!');
@@ -205,8 +205,7 @@ class InfoCenter extends Auth_Controller
// mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->_uid, self::APP);
if (isError($result))
show_error($result->retval);
if (isError($result)) show_error(getError($result));
}
$persondata = $this->_loadPersonData($person_id);
@@ -232,13 +231,12 @@ class InfoCenter extends Auth_Controller
{
$result = $this->PersonLockModel->unlockPerson($person_id, self::APP);
if (isError($result))
show_error($result->retval);
if (isError($result)) show_error(getError($result));
$redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
// Force reload of Dataset after Unlock
$redirectLink .= '&'.self::RELOAD_DATASET.'=true&'.self::KEEP_TABLESORTER_FILTER.'=true';
$redirectLink .= '&'.self::KEEP_TABLESORTER_FILTER.'=true';
$currentFilterId = $this->input->get(self::FILTER_ID);
if (isset($currentFilterId))
@@ -496,7 +494,9 @@ class InfoCenter extends Auth_Controller
$logdata = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
$akteresult = $this->AkteModel->loadWhere(array('person_id' => $logdata['person_id'], 'formal_geprueft_amum !=' => NULL));
$person_id = $logdata['person_id'];
$akteresult = $this->AkteModel->loadWhere(array('person_id' => $person_id, 'formal_geprueft_amum !=' => NULL));
if (hasData($lastStatus) && isSuccess($akteresult))
{
@@ -532,6 +532,8 @@ class InfoCenter extends Auth_Controller
if (isSuccess($result))
{
$this->load->model('crm/Dokumentprestudent_model', 'DokumentprestudentModel');
$json->retval['nonCriticalErrors'] = array();
$json->retval['infoMessages'] = array();
//set documents which have been formal geprüft to accepted
$dokument_kurzbzs = array();
@@ -545,7 +547,7 @@ class InfoCenter extends Auth_Controller
// acceptresult returns null if no documents to accept
if ($acceptresult !== null && isError($acceptresult))
$json->retval['nonCriticalErrors'] = 'error when accepting documents in FAS';
$json->retval['nonCriticalErrors'][] = 'error when accepting documents in FAS';
$logparams = array($prestudent_id, $logdata['studiengang_kurzbz'], '');
@@ -557,8 +559,69 @@ class InfoCenter extends Auth_Controller
if (hasData($statusgrund_kurzbz))
$logparams[2] = ', confirmation type '.$statusgrund_kurzbz->retval[0]->bezeichnung_mehrsprachig[0];
}
else
{
// check if there is already a Bewerberstatus and Reihungsverfahren already absolviert
$bewerber = $this->PersonModel->hasBewerber($person_id, $lastStatus->studiensemester_kurzbz, 'b');
$this->_log($logdata['person_id'], 'freigegeben', $logparams);
if (hasData($bewerber))
{
$bewerbercnt = getData($bewerber);
if (is_numeric($bewerbercnt[0]->anzahl_bewerber) && $bewerbercnt[0]->anzahl_bewerber > 0)
{
// then insert Bewerberstatus and rt absolviert, teilgenommen for prestudent
$bewerberresult = $this->PrestudentstatusModel->insert(
array(
'prestudent_id' => $prestudent_id,
'status_kurzbz' => self::BEWERBERSTATUS,
'studiensemester_kurzbz' => $lastStatus->studiensemester_kurzbz,
'ausbildungssemester' => $lastStatus->ausbildungssemester,
'datum' => date('Y-m-d'),
'orgform_kurzbz' => $lastStatus->orgform_kurzbz,
'studienplan_id' => $lastStatus->studienplan_id,
'insertvon' => $this->_uid,
'insertamum' => date('Y-m-d H:i:s')
)
);
if (isError($bewerberresult))
$json->retval['nonCriticalErrors'][] = 'error when inserting Bewerberstatus';
$rtangetretenres = $this->PrestudentModel->update(
$prestudent_id,
array(
'reihungstestangetreten' => true
)
);
if (isError($rtangetretenres))
{
$json->retval['nonCriticalErrors'][] = 'error when setting reihungstestangetreten';
}
else
{
$json->retval['infoMessages'][] = $this->p->t('infocenter', 'rtPunkteEintragenInfo');
$this->load->model('crm/RtPerson_model', 'RtPersonModel');
$rtteilgenommenres = $this->RtPersonModel->update(
array(
'person_id' => $person_id,
'studienplan_id' => $lastStatus->studienplan_id
),
array(
'teilgenommen' => true
)
);
if (isError($rtteilgenommenres))
$json->retval['nonCriticalErrors'][] = 'error when setting reihungstest teilgenommen';
}
}
}
}
$this->_log($person_id, 'freigegeben', $logparams);
$this->_sendFreigabeMail($prestudent_id);
}
@@ -652,7 +715,7 @@ class InfoCenter extends Auth_Controller
public function reloadMessages($person_id)
{
$messages = $this->MessageModel->getMessagesOfPerson($person_id, 1);
$this->load->view('system/messages/messageList.php', array('messages' => $messages->retval));
$this->load->view('system/infocenter/messageList.php', array('messages' => $messages->retval));
}
/**
@@ -665,7 +728,7 @@ class InfoCenter extends Auth_Controller
if (isError($notizen))
{
show_error($notizen->retval);
show_error(getError($notizen));
}
$this->load->view('system/infocenter/notizen.php', array('notizen' => $notizen->retval));
@@ -693,14 +756,14 @@ class InfoCenter extends Auth_Controller
if (isError($akte))
{
show_error($akte->retval);
show_error(getError($akte));
}
$aktecontent = $this->dmslib->getAkteContent($akte_id);
if (isError($aktecontent))
{
show_error($aktecontent->retval);
show_error(getError($aktecontent));
}
$this->output
@@ -943,17 +1006,12 @@ 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.'&'.$reloadDatasetParam;
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId.'&'.$reloadDatasetParam;
}
else
{
$freigegebenLink .= '?'.$reloadDatasetParam;
$reihungstestAbsolviertLink .= '?'.$reloadDatasetParam;
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
}
$this->navigationlib->setSessionMenu(
@@ -1019,7 +1077,7 @@ class InfoCenter extends Auth_Controller
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
$link .= '?'.self::FILTER_ID.'='.$prevFilterId.'&'.self::RELOAD_DATASET.'=true&'.self::KEEP_TABLESORTER_FILTER.'=true';
$link .= '?'.self::FILTER_ID.'='.$prevFilterId.'&'.self::KEEP_TABLESORTER_FILTER.'=true';
}
$this->navigationlib->setSessionMenu(
@@ -1049,14 +1107,13 @@ 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
$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);
$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);
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
$homeLink .= '&'.self::FILTER_ID.'='.$prevFilterId;
$homeLink .= '?'.self::FILTER_ID.'='.$prevFilterId;
}
$this->navigationlib->setSessionElementMenu(
@@ -1171,7 +1228,7 @@ class InfoCenter extends Auth_Controller
if (isError($locked))
{
show_error($locked->retval);
show_error(getError($locked));
}
$lockedby = null;
@@ -1190,7 +1247,7 @@ class InfoCenter extends Auth_Controller
if (isError($stammdaten))
{
show_error($stammdaten->retval);
show_error(getError($stammdaten));
}
if (!isset($stammdaten->retval))
@@ -1200,21 +1257,21 @@ class InfoCenter extends Auth_Controller
if (isError($dokumente))
{
show_error($dokumente->retval);
show_error(getError($dokumente));
}
$dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true);
if (isError($dokumente_nachgereicht))
{
show_error($dokumente_nachgereicht->retval);
show_error(getError($dokumente_nachgereicht));
}
$messages = $this->MessageModel->getMessagesOfPerson($person_id, 1);
if (isError($messages))
{
show_error($messages->retval);
show_error(getError($messages));
}
$logs = $this->personloglib->getLogs($person_id);
@@ -1223,21 +1280,21 @@ class InfoCenter extends Auth_Controller
if (isError($notizen))
{
show_error($notizen->retval);
show_error(getError($notizen));
}
$notizen_bewerbung = $this->NotizModel->getNotizByTitel($person_id, 'Anmerkung zur Bewerbung%');
if (isError($notizen_bewerbung))
{
show_error($notizen_bewerbung->retval);
show_error(getError($notizen_bewerbung));
}
$user_person = $this->PersonModel->getByUid($this->_uid);
if (isError($user_person))
{
show_error($user_person->retval);
show_error(getError($user_person));
}
$data = array (
@@ -1268,7 +1325,7 @@ class InfoCenter extends Auth_Controller
if (isError($prestudenten))
{
show_error($prestudenten->retval);
show_error(getError($prestudenten));
}
foreach ($prestudenten->retval as $prestudent)
@@ -1277,7 +1334,7 @@ class InfoCenter extends Auth_Controller
if (isError($prestudentWithZgv))
{
show_error($prestudentWithZgv->retval);
show_error(getError($prestudentWithZgv));
}
$zgvpruefung = $prestudentWithZgv->retval[0];
@@ -1385,13 +1442,13 @@ class InfoCenter extends Auth_Controller
$starta = $this->StudiensemesterModel->load($a->prestudentstatus->studiensemester_kurzbz);
if (!hasData($starta))
{
show_error($starta->retval);
show_error(getError($starta));
}
$startb = $this->StudiensemesterModel->load($b->prestudentstatus->studiensemester_kurzbz);
if (!hasData($startb))
{
show_error($startb->retval);
show_error(getError($startb));
}
$starta = date_format(date_create($starta->retval[0]->start), 'Y-m-d');
@@ -1463,7 +1520,7 @@ class InfoCenter extends Auth_Controller
if (isError($prestudent))
{
show_error($prestudent->retval);
show_error(getError($prestudent));
}
$person_id = $prestudent->retval[0]->person_id;
@@ -1505,7 +1562,7 @@ class InfoCenter extends Auth_Controller
}
/**
* Sends infomail with prestudent and person data when Prestudent is freigegeben
* Sends infomail to Studiengang with prestudent and person data when Prestudent is freigegeben
* @param $prestudent_id
*/
private function _sendFreigabeMail($prestudent_id)
@@ -0,0 +1,60 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class FASMessages extends Auth_Controller
{
/**
*
*/
public function __construct()
{
parent::__construct(
array(
'writeTemplate' => 'basis/message:rw',
'writeReplyTemplate' => 'basis/message:rw'
)
);
// Loads model CLMessagesModel which contains the GUI logic
$this->load->model('CL/Messages_model', 'CLMessagesModel');
// Phrases used in loaded views
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
/**
* Writes a new message to a prestudent using templates
*/
public function writeTemplate()
{
$prestudents = $this->input->post('prestudent_id'); // recipients prestudend_id(s)
// Loads the view to write a new message with a template
$this->load->view(
'system/messages/htmlWriteTemplate',
$this->CLMessagesModel->prepareHtmlWriteTemplatePrestudents($prestudents)
);
}
/**
* Writes a reply to a message identified by parameters $message_id and $recipient_id
* The recipient is a prestudent
* Uses templates
*/
public function writeReplyTemplate($message_id, $recipient_id)
{
$prestudents = $this->input->post('prestudent_id'); // recipients prestudend_id(s)
// Loads the view to write a new message with a template
$this->load->view(
'system/messages/htmlWriteTemplate',
$this->CLMessagesModel->prepareHtmlWriteTemplatePrestudents($prestudents, $message_id, $recipient_id)
);
}
}
@@ -0,0 +1,112 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* NOTE: MessageClient extends FHC_Controller and NOT Auth_Controller to be able to use
* the authentication system without the need to load the permissions system
*/
class MessageClient extends FHC_Controller
{
public function __construct()
{
parent::__construct();
// Loads authentication library and starts authentication
// NOTE: it is loaded here because the controller extends FHC_Controller and NOT Auth_Controller
$this->load->library('AuthLib');
// Loads model CLMessagesModel which contains the GUI logic
$this->load->model('CL/Messages_model', 'CLMessagesModel');
// Phrases used in loaded views
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
/**
* Starts the GUI used to read all the personal messages
*/
public function read()
{
// Loads the view to read messages
$this->load->view('system/messages/ajaxRead');
}
/**
* Starts the GUI used to write a personal message to an organisation unit
*/
public function write()
{
// Loads the view to write a message
$this->load->view('system/messages/ajaxWrite', $this->CLMessagesModel->prepareAjaxWrite());
}
/**
* Starts the GUI used to reply to a received personal message
*/
public function writeReply()
{
$token = $this->input->get('token');
// Loads the view to reply to a message
$this->load->view('system/messages/ajaxWriteReply', $this->CLMessagesModel->prepareAjaxWriteReply($token));
}
/**
* Returns JSON that that contains all the received messages by the currently logged user
*/
public function listReceivedMessages()
{
$this->outputJson($this->CLMessagesModel->prepareAjaxReadReceived());
}
/**
* Returns JSON that that contains all the sent messages by the currently logged user
*/
public function listSentMessages()
{
$this->outputJson($this->CLMessagesModel->prepareAjaxReadSent());
}
/**
* Sends a message to an organisation unit
*/
public function sendMessageToOU()
{
$receiverOU = $this->input->post('receiverOU');
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$this->outputJson($this->CLMessagesModel->sendToOrganisationUnit($receiverOU, $subject, $body));
}
/**
* Sends a message to an organisation unit
*/
public function sendMessageReply()
{
$receiver_id = $this->input->post('receiver_id');
$relationmessage_id = $this->input->post('relationmessage_id');
$token = $this->input->post('token');
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$this->outputJson($this->CLMessagesModel->sendReply($receiver_id, $subject, $body, $relationmessage_id, $token));
}
/**
* Set a message as read
*/
public function setMessageRead()
{
$message_id = $this->input->post('message_id');
$statusPersonId = $this->input->post('statusPersonId');
$this->outputJson($this->CLMessagesModel->setMessageRead($message_id, $statusPersonId));
}
}
@@ -0,0 +1,144 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Messages extends Auth_Controller
{
public function __construct()
{
parent::__construct(
array(
'writeTemplate' => array('basis/message:rw', 'infocenter:rw'),
'sendImplicitTemplate' => array('basis/message:rw', 'infocenter:rw'),
'sendExplicitTemplateJson' => array('basis/message:rw', 'infocenter:rw'),
'getVorlage' => array('basis/message:r', 'infocenter:r'),
'parseMessageText' => array('basis/message:r', 'infocenter:r'),
'getMessageFromIds' => array('basis/message:r', 'infocenter:r')
)
);
// Loads model CLMessagesModel which contains the GUI logic
$this->load->model('CL/Messages_model', 'CLMessagesModel');
// Phrases used in loaded views
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
// -----------------------------------------------------------------------------------------------------------------
// Methods with HTML output
/**
* Initialize all the parameters used by view system/messages/htmlWriteTemplate
* to build a GUI used to write a messate to user/s using a template
*/
public function writeTemplate()
{
$persons = $this->input->post('person_id');
// Loads the view to write a new message with a template
$this->load->view(
'system/messages/htmlWriteTemplate',
$this->CLMessagesModel->prepareHtmlWriteTemplatePersons($persons)
);
}
/**
* Send a new message or reply to user/s
* If a relationmessage_id this message is a reply to another one
* Body is a template and will be parsed using information present in persons parameter
*/
public function sendImplicitTemplate()
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$recipients_ids = $this->input->post('recipients_ids');
$relationmessage_id = $this->input->post('relationmessage_id');
$type = $this->input->post('type');
$sendImplicitTemplate = $this->CLMessagesModel->sendImplicitTemplate($type, $recipients_ids, $subject, $body, $relationmessage_id);
if (isSuccess($sendImplicitTemplate))
{
$this->load->view('system/messages/htmlMessageSentSuccess');
}
else
{
$this->load->view('system/messages/htmlMessageSentError');
}
}
// -----------------------------------------------------------------------------------------------------------------
// Methods with JSON output called by this controller and FASMessages (view system/messages/htmlWriteTemplate)
/**
* Returns an object that represent a template store in database
* If no templates are found with the given parameter or the given parameter is an empty string,
* then an error is returned
*/
public function getVorlage()
{
$vorlage_kurzbz = $this->input->get('vorlage_kurzbz');
$this->outputJson($this->CLMessagesModel->getVorlage($vorlage_kurzbz));
}
/**
* Parse the given given text using data from the given user
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
public function parseMessageText()
{
$receiver_id = $this->input->post('receiver_id');
$text = $this->input->post('text');
$type = $this->input->post('type');
if ($type == Messages_model::TYPE_PERSONS)
{
$this->outputJson($this->CLMessagesModel->parseMessageTextPerson($receiver_id, $text));
}
elseif ($type == Messages_model::TYPE_PRESTUDENTS)
{
$this->outputJson($this->CLMessagesModel->parseMessageTextPrestudent($receiver_id, $text));
}
else
{
$this->outputJsonError('Not a person nor a prestudent was provided');
}
}
// -----------------------------------------------------------------------------------------------------------------
// Methods with JSON output called by infocenter
/**
* Outputs message data for a message (identified my msg id and receiver id) in JSON format
*/
public function getMessageFromIds()
{
$message_id = $this->input->get('msg_id');
$receiver_id = $this->input->get('receiver_id');
$this->outputJson($this->CLMessagesModel->getMessageFromIds($message_id, $receiver_id));
}
/**
* Send a new message
* - The recipients are prestudents
* - An email template with message var may be provided
* - A global organisation unit may be provided, otherwise is used the prestudent one
* - A template is explicitly specified
*/
public function sendExplicitTemplateJson()
{
$prestudents = $this->input->post('prestudents');
$oe_kurzbz = $this->input->post('oe_kurzbz');
$vorlage_kurzbz = $this->input->post('vorlage_kurzbz');
$msgVars = $this->input->post('msgvars');
$sendExplicitTemplate = $this->CLMessagesModel->sendExplicitTemplate($prestudents, $oe_kurzbz, $vorlage_kurzbz, $msgVars);
$this->outputJson(getData($sendExplicitTemplate));
}
}
@@ -0,0 +1,134 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Handles sending messages with token
* NOTE: it extends FHC_Controller instead of Auth_Controller because authentication is not needed
*/
class ViewMessage extends FHC_Controller
{
public function __construct()
{
parent::__construct();
// Loading config file message
$this->config->load('message');
// Load model MessageToken_model, not calling the authentication system
$this->load->model('CL/Messages_model', 'CLMessagesModel');
// Phrases used in loaded views
$this->loadPhrases(
array(
'global',
'ui'
)
);
}
/**
* Display a message in read mode only using the specified token
*/
public function toHTML($token)
{
// Loads the view to read a received message using its token as identifier
$this->load->view('system/messages/htmlRead', $this->CLMessagesModel->prepareHtmlRead($token));
}
/**
* Write a reply message to a received one using its token as identifier
*/
public function writeReply()
{
$token = $this->input->get('token'); // gets received message token
// Loads the view to write a reply message
$this->load->view('system/messages/htmlWriteReply', $this->CLMessagesModel->prepareHtmlWriteReply($token));
}
/**
* Send a reply message (no templates are used)
*/
public function sendReply()
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$receiver_id = $this->input->post('receiver_id');
$relationmessage_id = $this->input->post('relationmessage_id');
$token = $this->input->post('token');
$sendReply = $this->CLMessagesModel->sendReply($receiver_id, $subject, $body, $relationmessage_id, $token);
if (isSuccess($sendReply))
{
$this->load->view('system/messages/htmlMessageSentSuccess');
}
else
{
$this->load->view('system/messages/htmlMessageSentError');
}
}
/**
* With the given token redirects the user to reply page configured in the config/message.php file
*/
public function redirectByToken($token)
{
// Loads model MessageTokenModel
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
// Retrieves the single message data using the given token
$msg = $this->MessageTokenModel->getMessageByToken($token);
// If it is an error or it does not contain data show an error
if (!hasData($msg)) show_error('MSG-ERR-0001: An error occurred while redirecting, please contact the administrator');
// else
$oe_kurzbz = getData($msg)[0]->oe_kurzbz;
$organisationRoot = null; // by default is null
// If an organisation unit is present in the message tries to retrieve the root organisation unit
// from the one found in the message
if (!isEmptyString($oe_kurzbz))
{
// Retrieves the root organisation unit from the one found in the message
$getOERoot = $this->MessageTokenModel->getOERoot($oe_kurzbz);
// If it is an error or it does not contain data show an error
if (!hasData($getOERoot)) show_error('MSG-ERR-0002: An error occurred while redirecting, please contact the administrator');
// else
$organisationRoot = getData($getOERoot)[0]->oe_kurzbz;
}
// Retrieves the possible redirecting URLs array from configs
$messageRedirectUrls = $this->config->item('message_redirect_url');
// If it is not a valid array then show an error
if (isEmptyArray($messageRedirectUrls)) show_error('MSG-ERR-0003: An error occurred while redirecting, please contact the administrator');
// If this organisation unit root is not configured as an entry in the possible redirecting URLs array,
// then tries to use the default one...
if (!isset($messageRedirectUrls[$organisationRoot]))
{
$organisationRoot = 'fallback';
// ...if even the default one is not present show an error
if (!isset($messageRedirectUrls[$organisationRoot]))
{
show_error('MSG-ERR-0004: An error occurred while redirecting, please contact the administrator');
}
}
// Finally if everything was right then the user can be redirected
redirect($messageRedirectUrls[$organisationRoot] . '?token=' . $token);
}
}
@@ -0,0 +1,31 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* This controller is used to set the current language for a user
* It is part of the Language Switcher Widget
*/
class Language extends FHC_Controller
{
/**
* Calls the parent's constructor
*/
public function __construct()
{
parent::__construct();
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
*
*/
public function setSessionLanguage()
{
$language = $this->input->post('language');
$this->outputJson(setUserLanguage($language));
}
}
+19
View File
@@ -21,6 +21,9 @@ abstract class FHC_Controller extends CI_Controller
{
parent::__construct();
// NOTE: placed here before performing anything else!!!
$this->_checkHTTPS();
$this->_controllerId = null; // set _controllerId as null by default
// Loads helper message to manage returning messages
@@ -129,4 +132,20 @@ abstract class FHC_Controller extends CI_Controller
{
$this->output->set_content_type('application/json')->set_output(json_encode($mixed));
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Checks if the call is performed via web and if HTTPS is enabled and used
* If NOT then an error is raised and the execution is terminated
*/
private function _checkHTTPS()
{
// If NOT called from command line and if the HTTPS protocol is NOT enabled
if (!$this->input->is_cli_request() && !isset($_SERVER['HTTPS']))
{
show_error('This web site cannot work correctly without the HTTPS protocol enabled');
}
}
}
@@ -20,7 +20,6 @@ function getAuthPersonId()
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_PERSON_ID} : 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
+84 -23
View File
@@ -24,39 +24,54 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
// ------------------------------------------------------------------------
/**
* generateToken() - generates a new token for diffent use
* - reading Messages from external
* - forgotten Password
*
* @return string
* Generates a new token for diffent use cases. Default token length is 64
* - Reading messages
* - Forgotten password
* - etc
* Returns null on failure
*/
function generateToken($length = 64)
{
$token = null;
$firstGeneratedToken = null;
// For PHP 7 you can use random_bytes()
if (function_exists('random_bytes'))
{
$token = base64_encode(random_bytes($length));
//base64 is about 33% longer, so we need to truncate the result
return strtr(substr($token, 0, $length), '+/=', '-_,');
try
{
$firstGeneratedToken = random_bytes($length); // try to generates cryptographically secure pseudo-random bytes...
}
catch (Exception $e) { $firstGeneratedToken = null; } // if fails $firstGeneratedToken is set to null
}
// for PHP >=5.3 and <7
if (function_exists('openssl_random_pseudo_bytes'))
// For PHP >= 5.3 and < 7 and openssl is available
elseif (function_exists('openssl_random_pseudo_bytes'))
{
$token = base64_encode(openssl_random_pseudo_bytes($length, $strong));
// is the token strong enough?
if($strong == true)
return strtr(substr($token, 0, $length), '+/=', '-_,');
$firstGeneratedToken = openssl_random_pseudo_bytes($length, $strong);
// If the token generation ended with errors OR the generated token is NOT strong enough
if ($firstGeneratedToken == false || $strong == false) $firstGeneratedToken = null; // $firstGeneratedToken is set to null
}
//fallback to mt_rand if php < 5.3 or no openssl available
$characters = '0123456789';
$characters .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+';
$charactersLength = strlen($characters)-1;
$token = '';
//select some random characters
for ($i = 0; $i < $length; $i++)
$token .= $characters[mt_rand(0, $charactersLength)];
if ($firstGeneratedToken != null) // If everything was fine
{
// base64 is about 33% longer, so we need to truncate the result
$token = strtr(substr(base64_encode($firstGeneratedToken), 0, $length), '+/=', '-_,');
}
// Fallback to mt_rand if:
// php < 5.3
// OR no openssl is available
// OR openssl_random_pseudo_bytes used an algorithm that is cryptographically NOT strong
// OR one of the previous methods failed
if ($token == null)
{
$token = ''; // set $token as an empty string
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+';
$charactersLength = strlen($characters) - 1;
// Select some random characters
for ($i = 0; $i < $length; $i++) $token .= $characters[mt_rand(0, $charactersLength)];
}
return $token;
}
@@ -225,6 +240,52 @@ function isDateWorkingDay($date, $days = null)
}
}
/**
* Parse the given text using the given data parameter
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
function parseText($text, $data)
{
$ci =& get_instance(); // get CI instance
$ci->load->library('parser'); // Loads CI parser library
return $ci->parser->parse_string($text, $data, true);
}
/**
* Parse the given template using the given data parameter
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
function parseTemplate($template, $data)
{
$ci =& get_instance(); // get CI instance
$ci->load->library('parser'); // Loads CI parser library
return $ci->parser->parse($template, $data, true);
}
/**
* Terminate immediately the execution of the current script.
* If message parameter is given then:
* - logs the given message in CI logs
* - prints the given message to standard output
* Otherwise terminate with the generic error
*/
function terminateWithError($message = null)
{
if (!isEmptyString($message))
{
$ci =& get_instance(); // get CI instance
$ci->load->library('LogLib'); // Loads LogLib
$ci->loglib->logError($message);
exit($message);
}
exit(EXIT_ERROR);
}
/**
* Checks if the current user is logged by checking that the AuthLib is loaded and
* it is present the authentication object in session
+111 -26
View File
@@ -18,28 +18,48 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Function to retrieve the language of the logged user
* If is not possible to retrieve it, then the default system language is returnd
* If as parameter is given a valid language the it's returned useful to avoid
* to write the same control structures for the language
* If is not possible to retrieve it, then the default system language is returned
* NOTE: If the given parameter is a valid language then it is returned
* It is useful to avoid to write a lot of "if else" structures
*/
function getUserLanguage($language = null)
{
// If the given parameter is a valid language then return it
if (!isEmptyString($language)) return $language;
$ci =& get_instance(); // get CI instance
// Use the default system language, if it's possible retrieves the language for the logged user
// Use the default system language as fallback
$language = DEFAULT_LANGUAGE;
// Checks if the user is authenticated to retrieve the users's language
// NOTE: this helper could be called when the user is not logged in the system
// so this is why is checked if the function getAuthUID exists
if (function_exists('getAuthUID'))
// If the language is present in the session and it is valid
if (isset($_SESSION[LANG_SESSION_CURRENT_LANGUAGE]) && !isEmptyString($_SESSION[LANG_SESSION_CURRENT_LANGUAGE]))
{
$language = $_SESSION[LANG_SESSION_CURRENT_LANGUAGE]; // then use it
}
// Otherwise checks if the user is authenticated to retrieve the users's language
// NOTE: this helper could be called when the user is NOT logged in the system
// therefore is checked if the user is logged
elseif (isLogged())
{
$ci =& get_instance(); // get CI instance
// NOTE: Stores the loaded model with the alias PersonModelLanguage to avoid to overwrite
// an already loaded PersonModel used somewhere else
$ci->load->model('person/Person_model', 'PersonModelLanguage');
$language = $ci->PersonModelLanguage->getLanguage(getAuthUID());
// Retrieves language/s for the logged user
$languagesDB = $ci->PersonModelLanguage->getLanguage(getAuthUID());
if (hasData($languagesDB))
{
// Looks for the first valid language
foreach (getData($languagesDB) as $languageDB)
{
if (!isEmptyString($languageDB->sprache))
{
$language = $languageDB->sprache;
break;
}
}
}
}
return $language;
@@ -62,31 +82,21 @@ function getPhraseByLanguage($phraseLanguagesArray, $language)
$langArray = getSessionElement(LANG_SESSION_NAME, LANG_SESSION_INDEXES);
if ($langArray == null) // If not already loaded in session
{
// Loads the Sprache_model to retrieve the language settings from the DB
// NOTE: Stores the loaded model with the alias SpracheModelLanguage to avoid to overwrite
// an already loaded SpracheModel used somewhere else
$ci->load->model('system/Sprache_model', 'SpracheModelLanguage');
// Add order clause by index and select only the sprache column
$ci->SpracheModelLanguage->addOrder('index');
$ci->SpracheModelLanguage->addSelect('sprache');
// Retrieves from public.tbl_sprache
$dbLanguages = $ci->SpracheModelLanguage->load();
// Retrieves active languages
$dbLanguages = getDBActiveLanguages();
if (hasData($dbLanguages)) // If everything is ok and contains data
{
$index = 0; // Incremental integer
$languageIndexes = array(); // Array that will contains languages and their indexes
$langArray = array(); // Array that will contains languages and their indexes
// Loops through database results
foreach (getData($dbLanguages) as $dbLanguage)
{
$languageIndexes[$dbLanguage->sprache] = $index++; // set $languageIndexes array elements
$langArray[$dbLanguage->sprache] = $index++; // set $languageIndexes array elements
}
}
$langArray = $languageIndexes; // copy $languageIndexes to $langArray
// Set session element $_SESSION['LANG']['LANG_INDEXES'] with $languageIndexes
// Set session element $_SESSION['LANG']['LANG_INDEXES'] with $langArray
setSessionElement(LANG_SESSION_NAME, LANG_SESSION_INDEXES, $langArray);
}
@@ -100,3 +110,78 @@ function getPhraseByLanguage($phraseLanguagesArray, $language)
return $phrase;
}
/**
* Tries to load active languages from session, if not present then loads them from database and stores them in session
*/
function getActiveLanguages()
{
$languagesArray = getSessionElement(LANG_SESSION_NAME, LANG_SESSION_ACTIVE_LANGUAGES);
if ($languagesArray == null)
{
$languagesArray = array();
// Retrieves from public.tbl_sprache
$dbLanguages = getDBActiveLanguages();
if (hasData($dbLanguages))
{
// Loops through database results
foreach (getData($dbLanguages) as $dbLanguage)
{
$languagesArray[$dbLanguage->sprache] = $dbLanguage->bezeichnung; // set $languageIndexes array elements
}
}
// Set session element $_SESSION['LANG']['LANG_SESSION_ACTIVE_LANGUAGES'] with $languagesArray
setSessionElement(LANG_SESSION_NAME, LANG_SESSION_ACTIVE_LANGUAGES, $languagesArray);
}
return $languagesArray;
}
/**
* Loads active languages from database
*/
function getDBActiveLanguages()
{
$ci =& get_instance(); // get CI instance
// Loads the Sprache_model to retrieve the language settings from the DB
// NOTE: Stores the loaded model with the alias SpracheModelLanguage to avoid to overwrite
// an already loaded SpracheModel used somewhere else
$ci->load->model('system/Sprache_model', 'SpracheModelLanguage');
// Add order clause by index and select only the sprache column
$ci->SpracheModelLanguage->addOrder('index');
$ci->SpracheModelLanguage->addSelect('sprache, bezeichnung');
// Retrieves from public.tbl_sprache
return $ci->SpracheModelLanguage->loadWhere(array('content' => true));
}
/**
* Sets the current language to render the GUI in session
*/
function setUserLanguage($language)
{
$languageValid = false;
// Checks if the given language is valid (present between active languages)
foreach (getActiveLanguages() as $languageName => $languageTranslation)
{
if ($language == $languageName)
{
$languageValid = true;
break;
}
}
if ($languageValid) // if the provided language is valid
{
$_SESSION[LANG_SESSION_CURRENT_LANGUAGE] = $language; // stores it in session
return success('Language successfully changed'); // return success!!
}
return error('The given language is not valid'); // return an error
}
@@ -125,3 +125,18 @@ function getCode($result)
return $code;
}
/**
* Returns the property retval if present, otherwise null
*/
function getError($result)
{
$error = null;
if (isset($result->retval))
{
$error = $result->retval;
}
return $error;
}
+1 -3
View File
@@ -98,9 +98,7 @@ function _parseMailContent($vorlage_kurzbz, $vorlage_data)
!isEmptyString($result->retval[0]->text))
{
// Parses template text
$parsedText = $ci->vorlagelib->parseVorlagetext($result->retval[0]->text, $vorlage_data);
return $parsedText;
return parseText($result->retval[0]->text, $vorlage_data);
}
}
}
+2 -2
View File
@@ -391,7 +391,7 @@ class AuthLib
}
elseif (isError($hta)) // display error and stop execution
{
$this->_showError($hta->retval);
$this->_showError(getError($hta));
}
return $hta; // if success then is returned!
@@ -551,7 +551,7 @@ class AuthLib
}
elseif (isError($auth)) // blocking error
{
$this->_showError(getData($auth)); // display a generic error message and logs the occurred error
$this->_showError(getError($auth)); // display a generic error message and logs the occurred error
}
}
// else the user is already logged, then loads authentication helper and continue with the execution
+28
View File
@@ -0,0 +1,28 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
use phpseclib\Crypt\Rijndael;
/**
* Collection of different encryption/hashing algorithms
*/
class CryptLib
{
/**
* Encrypt using the Rijndael algorithm with a key length of 256 bits and the ECB mode
* It is possible to disable the padding, enabled by default
*/
public static function RIJNDAEL_256_ECB($value, $key, $paddingDisabled = false)
{
if (isEmptyString($key) || strlen($value) % 32 != 0) return null;
$cipher = new Rijndael(Rijndael::MODE_ECB);
$cipher->setBlockLength(256);
$cipher->setKey($key);
if ($paddingDisabled === true) $cipher->disablePadding();
return $cipher->encrypt($value);
}
}
+2 -2
View File
@@ -249,7 +249,7 @@ class DmsLib
}
else
{
return error($dmscontent->retval);
return error(getError($dmscontent));
}
}
else
@@ -259,7 +259,7 @@ class DmsLib
}
else
{
return error($akte->retval);
return error(getError($akte));
}
}
+1 -1
View File
@@ -68,7 +68,7 @@ class DocumentLib
}
else
{
return error($ret->retval);
return error(getError($ret));
}
case 'application/pdf':
return success($filename);
+1 -1
View File
@@ -101,7 +101,7 @@ class FilterWidgetLib
const FILTER_UNIQUE_ID = 'filterUniqueId'; // Filter page parameter name
const PERMISSION_FILTER_METHOD = 'FilterWidget'; // Name for fake method to be checked by the PermissionLib
const PERMISSION_TYPE = 'rw';
const PERMISSION_TYPE = 'r';
// Name and array keys of the filters menu array
const NAV_MENU_FILTER_KEY = 'filters';
+54 -43
View File
@@ -7,6 +7,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
*/
class MailLib
{
const ENABLE_DEBUG = 'enable_debug';
private $sended; // Sended email counter
// Properties for storing the configuration
@@ -15,6 +17,8 @@ class MailLib
private $email_time_range;
private $email_from_system;
private $_ci; // Codeigniter instance
/**
* Class constructor
*/
@@ -24,16 +28,16 @@ class MailLib
$this->sended = 0;
// Get CI instance
$this->ci =& get_instance();
$this->_ci =& get_instance();
// The second parameter is used to avoiding name collisions in the config array
$this->ci->config->load('mail', true);
$this->_ci->config->load('mail', true);
// CI Email library
$this->ci->load->library('email');
$this->_ci->load->library('email');
// Initializing email library with the loaded configurations
$this->ci->email->initialize($this->ci->config->config['mail']);
$this->_ci->email->initialize($this->_ci->config->config['mail']);
// Set the configuration properties with the standard configuration values
$this->email_number_to_sent = $this->getEmailCfgItem('email_number_to_sent');
@@ -48,6 +52,22 @@ class MailLib
*/
public function send($from, $to, $subject, $message, $alias = '', $cc = null, $bcc = null, $altMessage = '', $bulk = false, $autogenerated = false)
{
// If it is configured then log mail info into the CI error logs
if ($this->getEmailCfgItem(self::ENABLE_DEBUG) === true)
{
$this->_ci->load->library('LogLib'); // Loads logging library
// Log them all!
$this->_ci->loglib->logError('From: '.$from);
$this->_ci->loglib->logError('To: '.$to);
$this->_ci->loglib->logError('Subject: '.$subject);
$this->_ci->loglib->logError('Message: '.$message);
$this->_ci->loglib->logError('Alias: '.$alias);
$this->_ci->loglib->logError('CC: '.$cc);
$this->_ci->loglib->logError('BCC: '.$bcc);
$this->_ci->loglib->logError('Alternative message: '.$altMessage);
}
// If from is not specified then use the standard one
if (is_null($from) || $from == '')
{
@@ -67,7 +87,7 @@ class MailLib
}
}
$this->ci->email->from($from, $alias);
$this->_ci->email->from($from, $alias);
// Check if the email address of the debug recipient is a valid one
$recipient = $to;
@@ -83,20 +103,20 @@ class MailLib
$recipientBCC = MAIL_DEBUG;
}
$this->ci->email->to($recipient);
if (!is_null($recipientCC)) $this->ci->email->cc($recipientCC);
if (!is_null($recipientBCC)) $this->ci->email->bcc($recipientBCC);
$this->ci->email->subject($subject);
$this->ci->email->message($message);
if (!isEmptyString($altMessage)) $this->ci->email->set_alt_message($altMessage);
$this->_ci->email->to($recipient);
if (!is_null($recipientCC)) $this->_ci->email->cc($recipientCC);
if (!is_null($recipientBCC)) $this->_ci->email->bcc($recipientBCC);
$this->_ci->email->subject($subject);
$this->_ci->email->message($message);
if (!isEmptyString($altMessage)) $this->_ci->email->set_alt_message($altMessage);
if($bulk)
$this->ci->email->set_header('Precedence', 'bulk');
$this->_ci->email->set_header('Precedence', 'bulk');
if($autogenerated)
$this->ci->email->set_header('Auto-Submitted', 'auto-generated');
$this->_ci->email->set_header('Auto-Submitted', 'auto-generated');
// Avoid printing on standard output ugly error messages
$result = @$this->ci->email->send();
$result = @$this->_ci->email->send();
// If the email was succesfully sended then increment the counter
// and checks if it has to wait until the sending of the next
@@ -110,43 +130,34 @@ class MailLib
}
/**
* To ovveride the configurations
* Overrides configuration parameters
* If the given parameters are not null or empty strings then they are used to override
* the following properties of this object:
* - email_number_to_sent
* - email_number_per_time_range
* - email_time_range
* - email_from_system
*/
public function overrideConfigs($cfg)
public function overrideConfigs($numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem)
{
if (!is_null($cfg))
if (is_numeric($numberToSent)) $this->email_number_to_sent = $numberToSent;
if (is_numeric($numberPerTimeRange)) $this->email_number_per_time_range = $numberPerTimeRange;
if (is_numeric($emailTimeRange)) $this->email_time_range = $emailTimeRange;
if (!isEmptyString($emailFromSystem) && filter_var($emailFromSystem, FILTER_VALIDATE_EMAIL))
{
if (isset($cfg->email_number_to_sent) && is_numeric($cfg->email_number_to_sent))
{
$this->email_number_to_sent = $cfg->email_number_to_sent;
}
if (isset($cfg->email_number_per_time_range) && is_numeric($cfg->email_number_per_time_range))
{
$this->email_number_per_time_range = $cfg->email_number_per_time_range;
}
if (isset($cfg->email_time_range) && is_numeric($cfg->email_time_range))
{
$this->email_time_range = $cfg->email_time_range;
}
if (isset($cfg->email_from_system) && filter_var($cfg->email_from_system, FILTER_VALIDATE_EMAIL))
{
$this->email_from_system = $cfg->email_from_system;
}
$this->email_from_system = $emailFromSystem;
}
}
/**
* Returns the current configuration
* Returns value of property email_number_to_sent
*/
public function getConfigs()
public function getEmailNumberToSent()
{
$cfg = new stdClass();
$cfg->email_number_to_sent = $this->email_number_to_sent;
$cfg->email_number_per_time_range = $this->email_number_per_time_range;
$cfg->email_time_range = $this->email_time_range;
$cfg->email_from_system = $this->email_from_system;
return $cfg;
return $this->email_number_to_sent;
}
/**
@@ -180,6 +191,6 @@ class MailLib
*/
private function getEmailCfgItem($itemName)
{
return $this->ci->config->item($itemName, EMAIL_CONFIG_INDEX);
return $this->_ci->config->item($itemName, EMAIL_CONFIG_INDEX);
}
}
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -76,7 +76,7 @@ class PersonLogLib
return $decoded_logs;
}
else
show_error($result->retval);
show_error(getError($result));
}
/**
+3 -13
View File
@@ -107,7 +107,7 @@ class PhrasesLib
// If no <p> tags required
if ($blockTags == 'no')
{
$tmpText = $textileParser->textileThis($result->retval[$i]->text); // Parse
$tmpText = $textileParser->parse($result->retval[$i]->text); // Parse
// Removes tags <p> and </p> from the beginning and from the end of the string if they are present
// NOTE: Those tags are usually, but not always, added by the textile parser
@@ -127,7 +127,7 @@ class PhrasesLib
}
else
{
$result->retval[$i]->text = $textileParser->textileThis($result->retval[$i]->text);
$result->retval[$i]->text = $textileParser->parse($result->retval[$i]->text);
}
}
}
@@ -165,16 +165,6 @@ class PhrasesLib
}
/**
* parseVorlagetext() - will parse a Vorlagetext.
*/
public function parseVorlagetext($text, $data = array())
{
if (isEmptyString($text)) return error('Not a valid text');
return $this->_ci->parser->parse_string($text, $data, true);
}
/**
* Retrieves a phrases from the the property _phrases with the given parameters
* It also replace parameters inside the phrase if they are provided
* @param string $category Category name which is used to categorize the phrase.
@@ -201,7 +191,7 @@ class PhrasesLib
{
if (!is_array($parameters)) $parameters = array(); // if params is not an array
return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); // parsing
return parseText($_phrase->text, $parameters); // parsing
}
}
}
+1 -1
View File
@@ -66,7 +66,7 @@ class TableWidgetLib
const DATASET_REP_TABULATOR = 'tabulator';
const PERMISSION_TABLE_METHOD = 'TableWidget'; // Name for fake method to be checked by the PermissionLib
const PERMISSION_TYPE = 'rw';
const PERMISSION_TYPE = 'r';
private $_ci; // Code igniter instance
private $_tableUniqueId; // unique id for this table widget
+1 -1
View File
@@ -540,7 +540,7 @@ class UDFLib
{
if (is_object($udfResults) && isset($udfResults->retval))
{
show_error($udfResults->retval);
show_error(getError($udfResults));
}
elseif (is_string($udfResults))
{
+1 -1
View File
@@ -57,7 +57,7 @@ class VariableLib
if (!isEmptyString($uid) && !isEmptyString($name) && is_numeric($change))
{
$change = (int) $change;
$change = (int)$change;
$varres = $this->_ci->VariableModel->getVariables($uid, array($name));
if (isSuccess($varres))
-14
View File
@@ -188,18 +188,4 @@ class VorlageLib
$vorlagetext = $this->ci->VorlageStudiengangModel->update($vorlagestudiengang_id, $data);
return $vorlagetext;
}
/**
* parseVorlagetext() - will parse a Vorlagetext.
*
* @param string $text REQUIRED
* @param array $data REQUIRED
* @return string
*/
public function parseVorlagetext($text, $data = array())
{
if (isEmptyString($text)) return error('Not a valid text');
return $this->ci->parser->parse_string($text, $data, true);
}
}
+760 -112
View File
@@ -1,11 +1,33 @@
<?php
/**
* This model extends CI_Model because here is just implemented logic
* It does not represent a resource (ex. like models that extend DB_Model)
* Messages GUI logic
* - This model extends CI_Model because here is just implemented logic
* - It does not represent a resource (ex. like models that extend DB_Model)
*/
class Messages_model extends CI_Model
{
const REPLY_SUBJECT_PREFIX = 'Re: '; // reply subject prefix
// To quote a reply body message
const REPLY_BODY_FORMAT = '<br>
<br>
<blockquote>
<i>
On %s %s %s wrote:
</i>
</blockquote>
<blockquote style="border-left:2px solid; padding-left: 8px">
%s
</blockquote>';
const NO_AUTH_UID = 'online'; // hard coded uid if no authentication is performed
// Recipients types
const TYPE_PERSONS = 'persons';
const TYPE_PRESTUDENTS = 'prestudents';
const ALT_OE = 'infocenter'; // alternative organisation unit when no one is found for a presetudent
/**
* Constructor
*/
@@ -14,159 +36,618 @@ class Messages_model extends CI_Model
parent::__construct();
// Loads the message library
$this->load->library('MessageLib');
$this->load->library('MessageLib'); // MessageModel loaded here!
// Loads the person log library
$this->load->library('PersonLogLib');
// Loads the widget library
$this->load->library('WidgetLib');
// Loads model MessageToken_model
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
// Loads model Benutzerrolle_model
$this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
// Loads model Prestudent_model
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Executes message sending
* @param $sender_id
* @return array wether execution was successfull - error or success
* Set a message as read by its id ($message_id + $person_id)
*/
public function send($msgVarsData, $relationmessage_id = null, $oe_kurzbz = null, $vorlage_kurzbz = null, $msgVars = null)
public function setMessageRead($message_id, $person_id)
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
// Checks parameters
if (!is_numeric($message_id) || !is_numeric($person_id)) return error('Invalid setMessageRead parameters');
$authUser = $this->getAuthUser();
// Loads needed models
$this->load->model('system/MsgStatus_model', 'MsgStatusModel');
if (isError($authUser)) return $authUser;
$statuResult = $this->MsgStatusModel->loadWhere(
array(
'message_id' => $message_id,
'person_id' => $person_id,
'status' => MSG_STATUS_READ
)
);
$sender_id = getData($authUser)[0]->person_id;
// Send message(s)
if (hasData($msgVarsData))
if (isError($statuResult)) return $statuResult;
if (!hasData($statuResult))
{
for ($i = 0; $i < count(getData($msgVarsData)); $i++)
{
$parsedText = "";
$msgVarsDataArray = $this->replaceKeys((array)getData($msgVarsData)[$i]); // replaces array keys
// Send without vorlage
if (isEmptyString($vorlage_kurzbz))
{
$parsedText = $this->messagelib->parseMessageText($body, $msgVarsDataArray);
$msg = $this->messagelib->sendMessage($sender_id, $msgVarsDataArray['person_id'], $subject, $parsedText, PRIORITY_NORMAL, $relationmessage_id, $oe_kurzbz);
}
// Send with vorlage
else
{
if (is_array($msgVars))
{
// Additional message variables
foreach ($msgVars as $key => $msgvar)
{
$msgVarsDataArray[$key] = $msgvar;
}
}
$msg = $this->messagelib->sendMessageVorlage($sender_id, $msgVarsDataArray['person_id'], $vorlage_kurzbz, $oe_kurzbz, $msgVarsDataArray);
}
if (isError($msg)) return $msg;
// Write log entry
$personLog = $this->personloglib->log(
$msgVarsDataArray['person_id'],
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$msgVarsDataArray['person_id'].', messageid '.getData($msg),
'success' => 'true'
),
'kommunikation',
'core',
null,
getAuthUID()
);
if (isError($personLog)) return $personLog;
}
return success('Messages sent successfully');
// Set date used to insert
return $this->MsgStatusModel->insert(
array(
'message_id' => $message_id,
'person_id' => $person_id,
'status' => MSG_STATUS_READ,
'insertvon' => getAuthUID()
)
); // insert and return result
}
else
{
return $msgVarsData;
return success('Already set as read');
}
}
/**
* Send a reply
* Prepares data for the view system/messages/ajaxWrite
*/
public function sendReply($subject, $body, $persons, $relationmessage_id, $token)
public function prepareAjaxWrite()
{
$relationmsg = $this->MessageTokenModel->getMessageByToken($token);
if (!hasData($relationmsg) || $relationmessage_id !== getData($relationmsg)[0]->message_id)
{
show_error('Error while sending reply');
}
$ouResult = $this->PrestudentModel->getOrganisationunitsByPersonId(getAuthPersonId());
// Get sender (receiver of previous msg)
$sender_id = getData($relationmsg)[0]->receiver_id;
if (isError($ouResult)) show_error('An error occurred while loading this page, please contact the site administrator');
// Get message data of persons
$data = $this->MessageTokenModel->getPersonData($persons);
if (hasData($data))
$ouOptions = '<option value="0">Select...</option>';
if (hasData($ouResult))
{
for ($i = 0; $i < count(getData($data)); $i++)
foreach (getData($ouResult) as $ou)
{
$dataArray = (array)getData($data)[$i];
$msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $body, PRIORITY_NORMAL, $relationmessage_id, null);
if (isError($msg)) return $msg;
// Logs person data
$personLog = $this->personloglib->log(
$sender_id,
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$dataArray['person_id'].', messageid '.getData($msg),
'success' => 'true'
),
'kommunikation',
'core',
null,
'online'
$ouOptions .= sprintf(
"\n".'<option value="%s">%s</option>',
is_numeric($ou->prestudent_id) ? $ou->oe_kurzbz : self::ALT_OE,
$ou->bezeichnung . (is_numeric($ou->prestudent_id) ? '' : ' *')
);
// Unpark bewerber after he sends message
$personLog = $this->personloglib->unPark($sender_id);
if (isError($personLog)) return $personLog;
}
}
return success('Reply sent');
return array('organisationUnitOptions' => $ouOptions);
}
/**
*
* Prepares data for the view system/messages/ajaxWriteReply
*/
public function getAuthUser()
public function prepareAjaxWriteReply($token)
{
$sender_id = null;
if (isEmptyString($token)) show_error('The given token is not valid');
$this->load->model('person/Person_model', 'PersonModel');
$authUser = $this->PersonModel->getByUid(getAuthUID());
// Retrieves message using the given token
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
if (isError($messageResult)) show_error('An error occurred while loading this page, please contact the site administrator');
if (!hasData($authUser)) $authUser = error('The current logged user person_id is not defined');
if (hasData($messageResult))
{
$message = getData($messageResult)[0]; // Found message data
return $authUser;
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($message->sender_id);
if (isError($senderResult)) show_error('An error occurred while loading this page, please contact the site administrator');
if (hasData($senderResult))
{
$sender = getData($senderResult)[0]; // Found sender data
$replySubject = self::REPLY_SUBJECT_PREFIX.$message->subject;
$replyBody = $this->_getReplyBody($message->body, $sender->vorname, $sender->nachname, $message->sent);
return array (
'receiver' => $sender->vorname.' '.$sender->nachname, // yep! the sender of the sent message is the receiver of the reply message
'subject' => $replySubject,
'body' => $replyBody,
'receiver_id' => $message->sender_id,
'relationmessage_id' => $message->message_id,
'token' => $token
);
}
}
}
/**
*
* Prepares data for the view system/messages/ajaxRead
* If everything is fine returns a list of received messages (objects)
*/
public function replaceKeys($data)
public function prepareAjaxReadReceived()
{
// Retrieves received messages for the logged user and its organisation units
$receivedMessagesResult = $this->RecipientModel->getReceivedMessages(
getAuthPersonId(),
$this->config->item(MessageLib::CFG_OU_RECEIVERS)
);
// If an error occurred return it
if (isError($receivedMessagesResult)) return $receivedMessagesResult;
// If data were found
if (hasData($receivedMessagesResult))
{
$jsonArray = array(); // array that contains all the received messages
// Collect'em all in the array $jsonArray
foreach (getData($receivedMessagesResult) as $receivedMessage)
{
$jsonRecord = new stdClass();
$jsonRecord->message_id = $receivedMessage->message_id;
$jsonRecord->subject = $receivedMessage->subject;
$jsonRecord->body = $receivedMessage->body;
$jsonRecord->from = $receivedMessage->vorname.' '.$receivedMessage->nachname;
$sentDate = new DateTime($receivedMessage->sent);
$jsonRecord->sent = $sentDate->format('d/m/Y H:i:s');
$jsonRecord->status = $receivedMessage->status;
$jsonRecord->statusPersonId = $receivedMessage->statuspersonid;
$jsonRecord->token = $receivedMessage->token;
$jsonArray[] = $jsonRecord;
}
return success(json_encode($jsonArray)); // return as an json encoded string
}
return success('No messages were found'); // NOT a blocking error
}
/**
* Prepares data for the view system/messages/ajaxRead
* If everything is fine returns a list of sent messages (objects)
*/
public function prepareAjaxReadSent()
{
// Retrieves sent messages from the logged user
$sentMessagesResult = $this->RecipientModel->getSentMessages(getAuthPersonId());
if (isError($sentMessagesResult)) return $sentMessagesResult; // If an error occurred return it
if (hasData($sentMessagesResult))
{
$jsonArray = array();// array that contains all the sent messages
// Collect'em all in the array $jsonArray
foreach (getData($sentMessagesResult) as $sentMessage)
{
$jsonRecord = new stdClass();
$jsonRecord->message_id = $sentMessage->message_id;
$jsonRecord->subject = $sentMessage->subject;
$jsonRecord->body = $sentMessage->body;
$sentDate = new DateTime($sentMessage->sent);
$jsonRecord->sent = $sentDate->format('d/m/Y H:i:s');
$jsonRecord->status = $sentMessage->status;
$jsonRecord->statusPersonId = $sentMessage->statuspersonid;
$jsonRecord->token = $sentMessage->token;
if ($sentMessage->person_id == $this->config->item(MessageLib::CFG_SYSTEM_PERSON_ID))
{
$jsonRecord->to = $sentMessage->oe;
}
else
{
$jsonRecord->to = $sentMessage->vorname.' '.$sentMessage->nachname;
}
$jsonArray[] = $jsonRecord;
}
return success(json_encode($jsonArray)); // return as an json encoded string
}
return success('No messages were found'); // NOT a blocking error
}
/**
* Prepares data for the view system/messages/htmlRead using a token that identifies a single message
*/
public function prepareHtmlRead($token)
{
if (isEmptyString($token)) show_error('The given token is not valid');
// Retrieves message using the given token
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('No message found with the given token');
$message = getData($messageResult)[0]; // Found message data
// Set message as read
$srmsbtResult = $this->MessageTokenModel->setReadMessageStatusByToken($token);
if (isError($srmsbtResult)) show_error(getError($srmsbtResult));
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($message->sender_id);
if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
// Check if the receiver is an employee
$isEmployee = false; // not by default
$isEmployeeResult = $this->MessageTokenModel->isEmployee($message->receiver_id);
if (isError($isEmployeeResult)) show_error(getError($isEmployeeResult));
if (hasData($isEmployeeResult)) $isEmployee = true;
// If the sender is not an employee and are present configurations to reply
$hrefReply = '';
if (!$isEmployee && !isEmptyString($this->config->item(MessageLib::CFG_REDIRECT_VIEW_MESSAGE_URL)))
{
$hrefReply = $this->config->item(MessageLib::CFG_MESSAGE_SERVER).
$this->config->item(MessageLib::CFG_REDIRECT_VIEW_MESSAGE_URL).
$token;
}
return array (
'sender' => $sender,
'message' => $message,
'hrefReply' => $hrefReply
);
}
/**
* Prepares data for the view system/messages/htmlWriteReply using a token that identifies a single message
*/
public function prepareHtmlWriteReply($token)
{
if (isEmptyString($token)) show_error('The given token is not valid');
// Retrieves message using the given token
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('No message found with the given token');
$message = getData($messageResult)[0]; // Found message data
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($message->sender_id);
if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
$replySubject = self::REPLY_SUBJECT_PREFIX.$message->subject;
$replyBody = $this->_getReplyBody($message->body, $sender->vorname, $sender->nachname, $message->sent);
return array (
'receiver' => $sender->vorname.' '.$sender->nachname, // yep! the sender of the sent message is the receiver of the reply message
'subject' => $replySubject,
'body' => $replyBody,
'receiver_id' => $message->sender_id,
'relationmessage_id' => $message->message_id,
'token' => $token
);
}
/**
* Prepares data for the view system/messages/htmlWriteTemplate using person ids as main parameter
* Wrap method to _prepareHtmlWriteTemplate
*/
public function prepareHtmlWriteTemplatePersons($persons, $message_id = null, $recipient_id = null)
{
// Retrieves persons information
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($persons);
return $this->_prepareHtmlWriteTemplate($msgVarsData, $message_id, $recipient_id);
}
/**
* Prepares data for the view system/messages/htmlWriteTemplate using prestudent ids as main parameter
* Wrap method to _prepareHtmlWriteTemplate
*/
public function prepareHtmlWriteTemplatePrestudents($prestudents, $message_id = null, $recipient_id = null)
{
// Retrieves prestudents information
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
return $this->_prepareHtmlWriteTemplate($msgVarsData, $message_id, $recipient_id);
}
/**
* Sends a new message or a reply to a message (if $relationmessage_id is given)
* using the template stored in the subject and body
*/
public function sendImplicitTemplate($type, $recipients_ids, $subject, $body, $relationmessage_id = null)
{
// Retrieves the sender id
$sender_id = getAuthPersonId();
if (!is_numeric($sender_id)) show_error('The current logged user person_id is not defined');
$msgVarsData = error('No persons nor prestudents were provided');
// Retrieves message vars data for the given user/s
if ($type == self::TYPE_PERSONS) // if persons were given
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($recipients_ids);
}
elseif ($type == self::TYPE_PRESTUDENTS) // otherwise prestudents were given
{
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($recipients_ids);
// Retrieve organisation unit for the recipients
$organisationUnitsResult = $this->PrestudentModel->getOrganisationunits($recipients_ids);
if (isError($organisationUnitsResult)) return $organisationUnitsResult;
if (hasData($organisationUnitsResult)) $senderOUArray = getData($organisationUnitsResult);
}
if (isError($msgVarsData)) show_error(getError($msgVarsData));
if (!hasData($msgVarsData)) show_error('No recipients were given');
$senderOU = null; // sender organisation unit only for presetudents
$receiversCounter = 0; // a counter
// Looping on receivers data
foreach (getData($msgVarsData) as $receiver)
{
$msgVarsDataArray = $this->_lowerReplaceSpaceArrayKeys((array)$receiver); // replaces array keys
$parsedSubject = parseText($subject, $msgVarsDataArray);
$parsedBody = parseText($body, $msgVarsDataArray);
// If exist an organisation unit for this prestudent and it is valid
if (isset($senderOUArray[$receiversCounter])
&& isset($senderOUArray[$receiversCounter]->oe_kurzbz)
&& !isEmptyString($senderOUArray[$receiversCounter]->oe_kurzbz))
{
$senderOU = $senderOUArray[$receiversCounter]->oe_kurzbz;
}
else
{
$senderOU = null;
}
$message = $this->messagelib->sendMessageUser(
$msgVarsDataArray['person_id'], // receiverPersonId
$parsedSubject, // subject
$parsedBody, // body
$sender_id, // sender_id
$senderOU, // senderOU
$relationmessage_id, // relationmessage_id
MSG_PRIORITY_NORMAL // priority
);
if (isError($message)) return $message;
if (!hasData($message)) return error('No messages were saved in database');
// Write log entry only if persons were given
if ($type == self::TYPE_PERSONS)
{
$personLog = $this->_personLog($sender_id, $msgVarsDataArray['person_id'], getData($message)[0]);
if (isError($personLog)) return $personLog;
}
$receiversCounter++; // increment the counter
}
return success('Messages sent successfully');
}
/**
* Sends a new message using the given template and information present in parameter prestudents
* Extra variables can be added using parameter $msgVars
*/
public function sendExplicitTemplate($prestudents, $oe_kurzbz, $vorlage_kurzbz, $msgVars)
{
// Retrieves the sender id
$sender_id = getAuthPersonId();
if (!is_numeric($sender_id)) show_error('The current logged user person_id is not defined');
// Retrieves message vars data for the given user/s
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
if (isError($msgVarsData)) show_error(getError($msgVarsData));
if (!hasData($msgVarsData)) show_error('No recipients were given');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
// Adds the organisation unit to each prestudent
if (isEmptyString($oe_kurzbz) && hasData($msgVarsData) && hasData($prestudentsData))
{
$this->CLMessagesModel->_addOeToPrestudents($msgVarsData, $prestudentsData);
}
foreach (getData($msgVarsData) as $receiver)
{
$msgVarsDataArray = $this->_lowerReplaceSpaceArrayKeys((array)$receiver); // replaces array keys
// Additional message variables
if (is_array($msgVars)) $msgVarsDataArray = array_merge($msgVarsDataArray, $msgVars);
$message = $this->messagelib->sendMessageUserTemplate(
$msgVarsDataArray['person_id'], // receiversPersonId
$vorlage_kurzbz, // vorlage
$msgVarsDataArray, // parseData
null, // orgform
$sender_id, // sender_id
$oe_kurzbz // senderOU
);
if (isError($message)) return $message;
// Write log entry
$personLog = $this->_personLog($sender_id, $msgVarsDataArray['person_id'], getData($message)[0]);
if (isError($personLog)) return $personLog;
}
return success('Messages sent successfully');
}
/**
* Send a reply to a single recipient for a message identified by a token (no templates are used)
* NOTE: this method could be also called from not authenticated controllers
*/
public function sendReply($receiver_id, $subject, $body, $relationmessage_id, $token)
{
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($receiver_id);
if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
if (isError($messageResult)) show_error(getError($messageResult));
// Security check! It is possible to reply only to a received message!!
if (!hasData($messageResult) || $relationmessage_id != getData($messageResult)[0]->message_id)
{
show_error('An error occurred while sending your message, please contact the site administrator');
}
// If the user is logged then use its person id as sender id, otherwise get the receiver id of the previous message
$sender_id = isLogged() ? getAuthPersonId() : getData($messageResult)[0]->receiver_id;
if (!is_numeric($sender_id)) return error('The sender id is not valid');
$message = $this->messagelib->sendMessageUser(
$receiver_id, // receiverPersonId
$subject, // subject
$body, // body
$sender_id, // sender_id, the receiver of the previous message is the sender of the current one
null, // senderOU
$relationmessage_id, // relationmessage_id
MSG_PRIORITY_NORMAL // priority
);
if (isError($message)) return $message;
if (!hasData($message)) return error('No messages were saved in database');
// Write log entry
// NOTE: $receiver_id and $sender_id are switched!!! Currently this is a workaround
$personLog = $this->_personLog($receiver_id, $sender_id, getData($message)[0]);
if (isError($personLog)) return $personLog;
return success('Messages sent successfully');
}
/**
* Send a message to an organisation unit
*/
public function sendToOrganisationUnit($receiverOU, $subject, $body)
{
if (isEmptyString($receiverOU)) return error('Not a valid organisation unit');
if (isEmptyString($subject)) return error('Subject is an empty string');
if (isEmptyString($body)) return error('Body is an empty string');
$sender_id = getAuthPersonId();
if (!is_numeric($sender_id)) return error('The current logged user person_id is not defined');
$message = $this->messagelib->sendMessageOU(
$receiverOU, // receiverPersonId
$subject, // subject
$body, // body
$sender_id // sender_id
);
if (isError($message)) return $message;
if (!hasData($message)) return error('No messages were saved in database');
// Write log entry
$personLog = $this->_personLog($sender_id, $this->config->item(MessageLib::CFG_SYSTEM_PERSON_ID), getData($message)[0], $receiverOU);
if (isError($personLog)) return $personLog;
return success('Messages sent successfully');
}
//------------------------------------------------------------------------------------------------------------------
// Public methods called by controller system/messages/Messages
/**
* Returns an object that represent a template store in database
* If no templates are found with the given parameter or the given parameter is an empty string,
* then an error is returned
*/
public function getVorlage($vorlage_kurzbz)
{
$getVorlage = error('The given vorlage_kurzbz is not valid');
if (!isEmptyString($vorlage_kurzbz))
{
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
$this->VorlagestudiengangModel->addOrder('version','DESC');
$getVorlage = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
}
return $getVorlage;
}
/**
* Parse the given given text using data from the given user
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
public function parseMessageTextPerson($person_id, $text)
{
$parseMessageText = error('The given person_id is not a valid number');
if (is_numeric($person_id)) $parseMessageText = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
if (hasData($parseMessageText))
{
$parseMessageText = success(
parseText(
$text,
$this->_lowerReplaceSpaceArrayKeys((array)getData($parseMessageText)[0])
)
);
}
return $parseMessageText;
}
/**
* Parse the given given text using data from the given user
* Use the CI parser which performs simple text substitution for pseudo-variable
*/
public function parseMessageTextPrestudent($prestudent_id, $text)
{
$parseMessageText = error('The given prestudent_id is not a valid number');
if (is_numeric($prestudent_id)) $parseMessageText = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
if (hasData($parseMessageText))
{
$parseMessageText = success(
parseText(
$text,
$this->_lowerReplaceSpaceArrayKeys((array)getData($parseMessageText)[0])
)
);
}
return $parseMessageText;
}
/**
* Outputs message data for a message (identified my msg id and receiver id) in JSON format
*/
public function getMessageFromIds($message_id, $receiver_id)
{
$getMessageFromIds = error('The given message id or receiver id are not valid');
if (is_numeric($message_id) && is_numeric($receiver_id))
{
$getMessageFromIds = $this->messagelib->getMessage($message_id, $receiver_id);
}
if (isError($getMessageFromIds) || !hasData($getMessageFromIds))
{
return array();
}
else
{
return array(getData($getMessageFromIds)[0]);
}
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Replaces data array keys to a lowercase string with underscores instead of spaces
*/
private function _lowerReplaceSpaceArrayKeys($data)
{
$tmpData = array();
// Replaces data array keys to a lowercase without spaces string
foreach ($data as $key => $val)
{
$tmpData[str_replace(' ', '_', strtolower($key))] = $val;
@@ -176,9 +657,9 @@ class Messages_model extends CI_Model
}
/**
*
* Add organisation unit to an array of prestudents (objects)
*/
public function addOeToPrestudents(&$msgVarsData, $prestudentsData)
private function _addOeToPrestudents(&$msgVarsData, $prestudentsData)
{
for ($i = 0; $i < count(getData($msgVarsData)); $i++)
{
@@ -192,4 +673,171 @@ class Messages_model extends CI_Model
}
}
}
/**
* Perform a person log after a message is sent
*/
private function _personLog($sender_id, $receiver_id, $message_id, $receiverOU = null)
{
// In case the message is accessed via ViewMessage controller -> no authentication
// If no authentication is performed then use a hard coded uid
$loggedUserUID = isLogged() ? getAuthUID() : self::NO_AUTH_UID;
$message = 'Message sent from person '.$sender_id.' to '.$receiver_id.', message id: '.$message_id;
if (!isEmptyString($receiverOU)) $message .= ', receiverOU: '.$receiverOU;
return $this->personloglib->log(
$receiver_id,
'Action',
array(
'name' => 'Message sent',
'message' => $message,
'success' => 'true'
),
'kommunikation',
'core',
null,
$loggedUserUID
);
}
/**
* Quotes the previous message body
*/
private function _getReplyBody($body, $receiverName, $receiverSurname, $sentDate)
{
return sprintf(
self::REPLY_BODY_FORMAT,
date_format(date_create($sentDate), 'd.m.Y H:i'), $receiverName, $receiverSurname, $body
);
}
/**
* Prepares data for the view system/messages/htmlWriteTemplate using the given parameters
*/
private function _prepareHtmlWriteTemplate($info, $message_id, $recipient_id)
{
// Checks that info parameter is valid
if (isError($info)) show_error(getError($info));
if (!hasData($info)) show_error('No recipients were given');
// If the message id and recipient id are given, then both they must be valid numbers
if ((is_numeric($message_id) && !is_numeric($recipient_id))
|| (!is_numeric($message_id) && is_numeric($recipient_id)))
{
show_error('If given, message id and recipient id both must be valid numbers');
}
// ---------------------------------------------------------------------------------------
// Retrieves the recipients information and builds:
// - recipientsArray: an array that contains objects with id (person_id) and description (Vorname + Nachname) of recipient
// - recipientsList: a string that contains all the recipients descriptions (Vorname + Nachname) separated by ;
// - persons: a string that contains HTML input hidden with alla the receivers id (person_id)
$recipientsArray = array();
$recipientsList = '';
$recipients_ids = '';
foreach (getData($info) as $receiver)
{
$id = 0;
$recipient = new stdClass();
$recipient->description = $receiver->Vorname.' '.$receiver->Nachname;
$recipientsList .= $receiver->Vorname.' '.$receiver->Nachname.'; ';
// If it is a prestudent then
if (isset($receiver->prestudent_id) && is_numeric($receiver->prestudent_id))
{
$recipient->id = $receiver->prestudent_id;
$id = $receiver->prestudent_id;
}
else // otherwise it is a person
{
$recipient->id = $receiver->person_id;
$id = $receiver->person_id;
}
$recipients_ids .= '<input type="hidden" name="recipients_ids[]" value="'.$id.'">'."\n";
$recipientsArray[] = $recipient;
}
// ---------------------------------------------------------------------------------------
// Retrieves the message to reply to, if it is specified by parameters $message_id and $recipient_id
$replySubject = ''; // message reply subject
$replyBody = ''; // message reply body
$relationmessage = ''; // input hidden that contains the message id to be replied to
// If both are given and they are valid
if (is_numeric($message_id) && is_numeric($recipient_id))
{
// Retrieves a received message from tbl_msg_recipient
$messageResult = $this->messagelib->getMessage($message_id, $recipient_id);
if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('The selected message does not exist');
$message = getData($messageResult)[0];
$replySubject = self::REPLY_SUBJECT_PREFIX.$message->subject;
$replyBody = $this->_getReplyBody($message->body, $receiver->Vorname, $receiver->Nachname, $message->sent);
$relationmessage = '<input type="hidden" name="relationmessage_id" value="'.$message_id.'">';
}
// ---------------------------------------------------------------------------------------
// Retrieves message vars from database view vw_msg_vars/vw_msg_vars_person
$variablesResult = null;
$type = '';
// If data contains a prestudent id
// NOTE:
// - info is checked at the beginning of this method so it is safe to use getData($info)[0]
// - the provided data inside info are all persons or all prestudents, so it is safe to check only the first one
if (isset(getData($info)[0]->prestudent_id) && is_numeric(getData($info)[0]->prestudent_id))
{
$variablesResult = $this->messagelib->getMessageVarsPrestudent();
$type = '<input type="hidden" id="type" name="type" value="'.self::TYPE_PRESTUDENTS.'">';
}
else
{
$variablesResult = $this->messagelib->getMessageVarsPerson();
$type = '<input type="hidden" id="type" name="type" value="'.self::TYPE_PERSONS.'">';
}
if (isError($variablesResult)) show_error(getError($variablesResult));
// Then builds an array that contains objects with id (person_id) and description (Vorname + Nachname) of recipient
$variables = array();
foreach (getData($variablesResult) as $id => $description)
{
$tmpVar = new stdClass();
$tmpVar->id = $id;
$tmpVar->description = $description;
$variables[] = $tmpVar;
}
// ---------------------------------------------------------------------------------------
// Retrieves the sender id
$sender_id = getAuthPersonId();
if (!is_numeric($sender_id)) show_error('The current logged user person_id is not defined');
// ---------------------------------------------------------------------------------------
// Organisation units and a boolean (true if the sender is administrator) are used to get the templates
$organisationUnits = $this->messagelib->getOeKurzbz($sender_id);
if (isError($organisationUnits)) show_error(getError($organisationUnits));
$senderIsAdmin = $this->BenutzerrolleModel->isAdminByPersonId($sender_id);
if (isError($senderIsAdmin)) show_error(getError($senderIsAdmin));
// ---------------------------------------------------------------------------------------
// Returns data as an array
return array (
'recipientsList' => $recipientsList,
'subject' => $replySubject,
'body' => $replyBody,
'variables' => $variables,
'organisationUnits' => getData($organisationUnits),
'senderIsAdmin' => getData($senderIsAdmin),
'recipientsArray' => $recipientsArray,
'recipients_ids' => $recipients_ids,
'relationmessage_id' => $relationmessage,
'type' => $type
);
}
}
@@ -22,8 +22,7 @@ class Konto_model extends DB_Model
$this->addJoin('wawi.tbl_konto_kostenstelle', 'konto_id');
$konten = $this->loadWhere(array('kostenstelle_id' => $kostenstelle_id));
if ($konten->error)
return error($konten->retval);
if ($konten->error) return $konten;
return $konten;
}
@@ -60,14 +60,14 @@ class Vertrag_model extends DB_Model
{
if ($this->LehreinheitmitarbeiterModel->hasVertrag($mitarbeiter_uid, $lehreinheit_id))
{
return success(null); // Exit if Lehrauftrag already has Vertrag
return error('Lehrauftrag existiert bereits'); // Exit if Lehrauftrag already has Vertrag
}
}
elseif ($vertragstyp_kurzbz == 'Betreuung')
{
if ($this->ProjektbetreuerModel->hasVertrag($person_id, $projektarbeit_id))
{
return success(null); // Exit if Projektbetreuung already has Vertrag
return error('Lehrauftrag existiert bereits'); // Exit if Projektbetreuung already has Vertrag
}
}
@@ -52,19 +52,21 @@ class Vertragvertragsstatus_model extends DB_Model
/**
* Set Vertragsstatus for the given Vertrag and Mitarbeiter.
* @param $vertrag_id
* @param $vertragsstatus_kurzbz
* @param $mitarbeiter_uid
* @return array|null On success object, retval is true. Null if status already exist for this vertrag.
* @param integer $vertrag_id
* @param string $mitarbeiter_uid
* @param string $vertragsstatus_kurzbz
* @return object On success, return success object.
* If status already exists or earlier status is missing, return error object.
*/
public function setStatus($vertrag_id, $mitarbeiter_uid, $vertragsstatus_kurzbz){
// Check if vertrag has already this status
$result = $this->hasStatus($vertrag_id, $mitarbeiter_uid, $vertragsstatus_kurzbz);
// If status is already set, return error message
if (hasData($result))
{
return success(null); // return null if status is already set
return error('Fehler: Status bereits vorhanden.');
}
// If new status should be 'akzeptiert', the latest status has to be 'erteilt'
@@ -72,10 +74,11 @@ class Vertragvertragsstatus_model extends DB_Model
{
$result = $this->getLastStatus($vertrag_id, $mitarbeiter_uid);
$last_status = getData($result)[0]->vertragsstatus_kurzbz;
// If latest status is not 'erteilt', return error message
if ($last_status != 'erteilt')
{
return success(null); // return null if latest status is not 'erteilt'
return error('Fehler: Vor Status \'angenommen\' muss erst Status \'erteilt\' gesetzt sein.');
}
}
@@ -15,7 +15,7 @@ class Bisverwendung_model extends DB_Model
/**
* Get latest (active) Verwendung of the user.
* @param string $uid
* @param bool $active If false, returns latest Verwendung no matter if actual or not (ignores ending/beginning date).
* @param bool $active If false, returns latest Verwendung no matter if it is still actual.
* @return array
*/
public function getLast($uid, $active = true)
@@ -28,14 +28,14 @@ class Bisverwendung_model extends DB_Model
mitarbeiter_uid = '. $this->escape($uid). '
AND ( beginn <= NOW() OR beginn IS NULL )
AND ( ende >= NOW() OR ende IS NULL )
ORDER BY ende DESC NULLS LAST, beginn DESC NULLS LAST
ORDER BY ende DESC NULLS FIRST, beginn DESC NULLS LAST
';
}
else
{
$condition = '
mitarbeiter_uid = '. $this->escape($uid). '
ORDER BY ende DESC NULLS LAST, beginn DESC NULLS LAST
ORDER BY ende DESC NULLS FIRST, beginn DESC NULLS LAST
';
}
+1 -2
View File
@@ -186,8 +186,7 @@ class Akte_model extends DB_Model
$dokumente = $this->loadWhere($where);
if($dokumente->error)
return error($dokumente->retval);
if($dokumente->error) return $dokumente;
return success($dokumente->retval);
}
+35 -4
View File
@@ -214,7 +214,7 @@ class Prestudent_model extends DB_Model
if ($lastStatus->error)
{
return error($lastStatus->retval);
return $lastStatus;
}
if (count($lastStatus->retval) > 0)
@@ -222,7 +222,7 @@ class Prestudent_model extends DB_Model
//get Studiengangname from Studienplan and -ordnung
$studienordnung = $this->PrestudentstatusModel->getStudienordnungFromPrestudent($prestudent_id);
if ($studienordnung->error)
return error($studienordnung->retval);
return $studienordnung;
if (count($studienordnung->retval) > 0)
{
@@ -239,7 +239,7 @@ class Prestudent_model extends DB_Model
$language = $this->SpracheModel->load($lastStatus->retval[0]->sprache);
if ($language->error)
return error($language->retval);
return $language;
if (count($language->retval) > 0)
$lastStatus->retval[0]->sprachedetails = $language->retval[0];
@@ -257,7 +257,7 @@ class Prestudent_model extends DB_Model
)
);
if ($bewerbungstermin->error)
return error($bewerbungstermin->retval);
return $bewerbungstermin;
if (count($bewerbungstermin->retval) > 0)
{
@@ -521,4 +521,35 @@ class Prestudent_model extends DB_Model
}
}
}
/**
* Get organisation units for all the prestudents of a person
*/
public function getOrganisationunitsByPersonId($person_id)
{
$query = 'SELECT o.oe_kurzbz,
o.bezeichnung,
(CASE
WHEN sg.typ = \'b\' THEN ps.prestudent_id
WHEN sg.typ = \'m\' THEN p.prestudent_id
ELSE NULL
END) AS prestudent_id
FROM public.tbl_prestudent p
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN public.tbl_organisationseinheit o USING(oe_kurzbz)
LEFT JOIN (
SELECT prestudent_id
FROM public.tbl_prestudentstatus
WHERE status_kurzbz = \'Bewerber\'
) ps USING(prestudent_id)
WHERE p.person_id = ?
GROUP BY o.oe_kurzbz,
o.bezeichnung,
sg.typ,
ps.prestudent_id,
p.prestudent_id
ORDER BY o.bezeichnung';
return $this->execQuery($query, array($person_id));
}
}
@@ -123,7 +123,7 @@ class Prestudentstatus_model extends DB_Model
if ($lastStatus->error)
{
return error($lastStatus->retval);
return $lastStatus;
}
if (count($lastStatus->retval) > 0)
@@ -158,7 +158,7 @@ class Prestudentstatus_model extends DB_Model
if ($lastStatus->error)
{
return error($lastStatus->retval);
return $lastStatus;
}
if (count($lastStatus->retval) > 0)
@@ -65,7 +65,7 @@ class Lehrveranstaltung_model extends DB_Model
$result = $this->StudiensemesterModel->getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz_item);
if (isError($result))
return error($result->retval);
return error(getError($result));
foreach ($result->retval as $semester)
{
@@ -104,7 +104,7 @@ class Lehrveranstaltung_model extends DB_Model
if (count($studiengang_kz_arr) > 0)
$query .= " AND tbl_lehrveranstaltung.studiengang_kz IN (". implode(", ", $studiengang_kz_arr).")";
if (count($lehrveranstaltung_id_arr) > 0)
{
$query .= " AND tbl_lehrveranstaltung.lehrveranstaltung_id IN (". implode(', ', $lehrveranstaltung_id_arr).")";
@@ -144,7 +144,7 @@ class Lehrveranstaltung_model extends DB_Model
WHERE
vw_student_lehrveranstaltung.studiensemester_kurzbz=?
AND
vw_student_lehrveranstaltung.lehrveranstaltung_id=?
vw_student_lehrveranstaltung.lehrveranstaltung_id=?
ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC";
return $this->execQuery($query, array($studiensemester_kurzbz, $lehrveranstaltung_id));
@@ -18,4 +18,19 @@ class Benutzer_model extends DB_Model
return $this->loadWhere(array('person_id' => $person_id, 'aktiv' => true));
}
/**
*
*/
public function getActiveUserByPersonIdAndOrganisationUnit($person_id, $oe_kurzbz)
{
$sql = 'SELECT b.uid
FROM public.tbl_benutzer b
JOIN public.tbl_prestudent ps USING (person_id)
JOIN public.tbl_studiengang sg USING (studiengang_kz)
WHERE ps.person_id = ?
AND sg.oe_kurzbz = ?
AND b.aktiv = TRUE';
return $this->execQuery($sql, array($person_id, $oe_kurzbz));
}
}
@@ -11,16 +11,20 @@ class Benutzerfunktion_model extends DB_Model
$this->dbTable = 'public.tbl_benutzerfunktion';
$this->pk = 'benutzerfunktion_id';
}
/**
* Get the Benutzerfunktion using the person_id
*/
public function getByPersonId($person_id)
public function getActiveFunctionsByPersonId($person_id)
{
// Join with the table
$this->addJoin('public.tbl_benutzer', 'uid');
return $this->loadWhere(array('person_id' => $person_id));
$query = 'SELECT bf.*
FROM public.tbl_benutzerfunktion bf
JOIN public.tbl_benutzer b USING (uid)
WHERE b.person_id = ?
AND (bf.datum_von IS NULL OR bf.datum_von <= now())
AND (bf.datum_bis IS NULL OR bf.datum_bis >= now())';
return $this->execQuery($query, array($person_id));
}
/**
+28 -13
View File
@@ -8,17 +8,17 @@ class Kontakt_model extends DB_Model
public function __construct()
{
parent::__construct();
$this->dbTable = "public.tbl_kontakt";
$this->pk = "kontakt_id";
$this->dbTable = 'public.tbl_kontakt';
$this->pk = 'kontakt_id';
}
public function getWholeKontakt($kontakt_id, $person_id = null, $kontakttyp = null)
{
$result = null;
$this->addJoin("public.tbl_standort", "standort_id", "LEFT");
$this->addJoin("public.tbl_firma", "firma_id", "LEFT");
$this->addJoin('public.tbl_standort', 'standort_id', 'LEFT');
$this->addJoin('public.tbl_firma', 'firma_id', 'LEFT');
if (isset($kontakt_id))
{
$result = $this->load($kontakt_id);
@@ -26,22 +26,37 @@ class Kontakt_model extends DB_Model
else
{
$parametersArray = array();
if (!is_null($person_id))
{
$parametersArray["person_id"] = $person_id;
$parametersArray['person_id'] = $person_id;
}
if (!is_null($kontakttyp))
{
$parametersArray["kontakttyp"] = $kontakttyp;
$parametersArray['kontakttyp'] = $kontakttyp;
}
if (count($parametersArray) > 0)
{
$result = $this->loadWhere($parametersArray);
}
}
return $result;
}
}
/**
*
*/
public function getContactByPersonId($person_id, $kontakttyp)
{
$sql = 'SELECT kontakt
FROM public.tbl_kontakt
WHERE zustellung = TRUE
AND person_id = ?
AND kontakttyp = ?
ORDER BY updateamum, insertamum';
return $this->execQuery($sql, array($person_id, $kontakttyp));
}
}
+38 -21
View File
@@ -158,8 +158,7 @@ class Person_model extends DB_Model
$person = $this->load($person_id);
if($person->error)
return error($person->retval);
if($person->error) return $person;
//return null if not found
if(count($person->retval) < 1)
@@ -170,14 +169,13 @@ class Person_model extends DB_Model
$this->KontaktModel->addOrder('kontakttyp');
$where = $zustellung_only === true ? array('person_id' => $person_id, 'zustellung' => true) : array('person_id' => $person_id);
$kontakte = $this->KontaktModel->loadWhere($where);
if($kontakte->error)
return error($kontakte->retval);
if($kontakte->error) return $kontakte;
$where = $zustellung_only === true ? array('person_id' => $person_id, 'zustelladresse' => true) : array('person_id' => $person_id);
$this->AdresseModel->addSelect('public.tbl_adresse.*, bis.tbl_nation.kurztext AS nationkurztext');
$this->AdresseModel->addJoin('bis.tbl_nation', 'tbl_adresse.nation = tbl_nation.nation_code', 'LEFT');
$adressen = $this->AdresseModel->loadWhere($where);
if($adressen->error)
return error($adressen->retval);
if($adressen->error) return $adressen;
$stammdaten = $person->retval[0];
$stammdaten->kontakte = $kontakte->retval;
@@ -207,28 +205,47 @@ class Person_model extends DB_Model
*/
public function getLanguage($uid)
{
$language = DEFAULT_LANGUAGE;
$this->addSelect('public.tbl_person.sprache');
$this->addJoin('public.tbl_benutzer', 'person_id');
$this->addJoin('public.tbl_sprache', 'sprache');
$this->addOrder('public.tbl_person.updateamum', 'DESC');
$this->addOrder('public.tbl_person.insertvon', 'DESC');
$persons = $this->loadWhere(array('uid' => $uid));
return $this->loadWhere(array('uid' => $uid, 'content' => true));
}
if (hasData($persons))
/**
* Checks if a person has a Bewerberstatus and reihungstestangetreten = true
* @param $person_id
* @param $studiensemester_kurzbz
* @return array
*/
public function hasBewerber($person_id, $studiensemester_kurzbz, $studiengangtyp = null)
{
$parametersArray = array($person_id, $studiensemester_kurzbz);
$qry = "SELECT count(*) AS anzahl_bewerber FROM public.tbl_person
JOIN public.tbl_prestudent USING (person_id)
JOIN public.tbl_prestudentstatus ON tbl_prestudentstatus.prestudent_id = tbl_prestudent.prestudent_id";
if (isset($studiengangtyp))
{
for ($i = 0; $i < count($persons->retval); $i++)
{
$person = $persons->retval[$i];
if (!isEmptyString($person->sprache))
{
$language = $person->sprache;
break;
}
}
$qry .= " JOIN lehre.tbl_studienplan USING(studienplan_id)
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
JOIN public.tbl_studiengang ON tbl_studienordnung.studiengang_kz = tbl_studiengang.studiengang_kz";
}
return $language;
$qry .= " WHERE person_id = ?
AND studiensemester_kurzbz = ?
AND tbl_prestudentstatus.status_kurzbz = 'Bewerber'
AND reihungstestangetreten";
if (isset($studiengangtyp))
{
$parametersArray[] = $studiengangtyp;
$qry .= " AND tbl_studiengang.typ = ?";
}
return $this->execQuery($qry, $parametersArray);
}
}
+23 -125
View File
@@ -37,17 +37,7 @@ class MessageToken_model extends DB_Model
WHERE r.token = ?
LIMIT 1';
$result = $this->db->query($sql, array(MSG_STATUS_DELETED, $token));
// If no errors occurred
if ($result)
{
return success($result->result());
}
else
{
return error($this->db->error());
}
return $this->execQuery($sql, array(MSG_STATUS_DELETED, $token));
}
/**
@@ -74,25 +64,24 @@ class MessageToken_model extends DB_Model
WHERE r.token = ?
LIMIT 1';
$msgs = $this->db->query($sql, array(MSG_STATUS_ARCHIVED, $token));
$msgsResult = $this->execQuery($sql, array(MSG_STATUS_ARCHIVED, $token));
// If no errors occurred
if ($msgs)
if (isSuccess($msgsResult))
{
$msgs_result = $msgs->result();
// If at least a record is present
if (count($msgs_result) > 0)
if (hasData($msgsResult))
{
$msg = $msgs_result[0];
$msg = getData($msgsResult)[0];
$msgStatusResult = error();
$msgStatusResult = false; // pessimistic expectation
$this->load->model('system/MsgStatus_model', 'MsgStatusModel');
// If the status of the message is unread
if ($msg->status == MSG_STATUS_UNREAD)
{
// Insert the read status
$msgStatusResult = $this->db->insert(
'public.tbl_msg_status',
$msgStatusResult = $this->MsgStatusModel->insert(
array(
'message_id' => $msg->message_id,
'person_id' => $msg->receiver_id,
@@ -108,31 +97,23 @@ class MessageToken_model extends DB_Model
// If the status of the message is read
else if ($msg->status == MSG_STATUS_READ)
{
// Update updateamum to current date
$this->db->set('updateamum', 'NOW()');
$this->db->where('message_id', $msg->message_id);
$this->db->where('person_id', $msg->receiver_id);
$this->db->where('status', MSG_STATUS_READ);
$msgStatusResult = $this->db->update('public.tbl_msg_status');
$msgStatusResult = $this->MsgStatusModel->update(
array(
'message_id' => $msg->message_id,
'person_id' => $msg->receiver_id,
'status' => MSG_STATUS_READ
),
array('updateamum' => 'NOW()')
);
}
// If some of the previous DB manipulation (update or insert) has failed
if (!$msgStatusResult)
{
return error($this->db->error());
}
return $msgStatusResult;
}
return success($msgs_result);
}
else
{
return error($this->db->error());
return $msgsResult;
}
return success($result->result());
}
/**
@@ -152,45 +133,7 @@ class MessageToken_model extends DB_Model
LEFT JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
WHERE p.person_id = ?';
$result = $this->db->query($sql, array($person_id));
// If no errors occurred
if ($result)
{
return success($result->result());
}
else
{
return error($this->db->error());
}
}
/**
* Get data of a person
*/
public function getPersonData($person_id)
{
$sql = 'SELECT person_id,
vorname as "Vorname",
nachname as "Nachname",
anrede as "Anrede",
titelpost as "TitelPost",
titelpre as "TitelPre",
vornamen as "Vornamen"
FROM public.tbl_person
WHERE person_id %s ?';
$result = $this->db->query(sprintf($sql, is_array($person_id) ? 'IN' : '='), array($person_id));
// If no errors occurred
if ($result)
{
return success($result->result());
}
else
{
return error($this->db->error());
}
return $this->execQuery($sql, array($person_id));
}
/**
@@ -200,35 +143,12 @@ class MessageToken_model extends DB_Model
{
$sql = 'SELECT m.mitarbeiter_uid
FROM public.tbl_person p
LEFT JOIN public.tbl_benutzer b USING(person_id)
LEFT JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
JOIN public.tbl_benutzer b USING(person_id)
JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
WHERE p.person_id = ?
AND b.aktiv = TRUE';
$result = $this->db->query($sql, array($person_id));
// If no errors occurred
if ($result)
{
// If data are present
if (is_array($result->result()) && count($result->result()) > 0)
{
$personresults = $result->result();
$person = $personresults[0];
// If it is an employee
if ($person->mitarbeiter_uid != null)
{
return true;
}
}
return false;
}
else
{
return error($this->db->error());
}
return $this->execQuery($sql, array($person_id));
}
/**
@@ -254,28 +174,6 @@ class MessageToken_model extends DB_Model
LIMIT 1
';
$result = $this->db->query($sql, array($oe_kurzbz));
if ($result) // If no errors occurred
{
$result_arr = $result->result();
// If data are present
if (is_array($result_arr)
&& count($result_arr) > 0
&& is_object($result_arr[0])
&& isset($result_arr[0]->oe_kurzbz))
{
return success($result_arr[0]->oe_kurzbz);
}
else
{
return error();
}
}
else
{
return error($this->db->error());
}
return $result;
return $this->execQuery($sql, array($oe_kurzbz));
}
}
@@ -29,8 +29,7 @@ class PersonLock_model extends DB_Model
$result = $this->loadWhere($lockdata);
if ($result->error)
return error($result->retval);
if ($result->error) return $result;
if (count($result->retval) > 0)
return success($result->retval);
@@ -49,8 +48,7 @@ class PersonLock_model extends DB_Model
{
$locked = $this->checkIfLocked($person_id, $app);
if ($locked->error)
return error($locked->retval);
if ($locked->error) return $locked;
//insert only if not already locked
if ($locked->retval === null)
@@ -77,8 +75,7 @@ class PersonLock_model extends DB_Model
foreach ($locks->retval as $lock)
{
$result = $this->delete($lock->lock_id);
if ($result->error)
return error($result->retval);
if ($result->error) return $result;
$deleted[] = $lock;
}
+153 -67
View File
@@ -25,7 +25,8 @@ class Recipient_model extends DB_Model
ks.kontakt,
p.nachname,
p.vorname,
b.uid
b.uid,
mr.sent
FROM public.tbl_msg_recipient mr INNER JOIN public.tbl_msg_message mm USING (message_id)
INNER JOIN public.tbl_person p ON (mm.person_id = p.person_id)
LEFT JOIN public.tbl_benutzer b ON (mr.person_id = b.person_id)
@@ -56,11 +57,13 @@ class Recipient_model extends DB_Model
m.oe_kurzbz,
s.status,
s.statusinfo,
s.insertamum as statusamum
s.insertamum as statusamum,
b.uid
FROM public.tbl_msg_recipient r JOIN public.tbl_msg_message m USING (message_id)
JOIN (
SELECT * FROM public.tbl_msg_status WHERE status < ? ORDER BY insertamum DESC, status DESC
) s ON (r.message_id = s.message_id AND r.person_id = s.person_id)
) s ON (r.message_id = s.message_id AND r.person_id = s.person_id),
LEFT JOIN public.tbl_benutzer b USING(person_id)
WHERE r.token = ?
LIMIT 1';
@@ -196,74 +199,24 @@ class Recipient_model extends DB_Model
}
/**
* getMessages
* Gets all messages for which notice emails are still not sent
*
* Gets all the messages to be sent
*
* @param kontaktType specifies the type of the kontakt to get
* @param sent specifies the status of the messages to get (NULL never sent, otherwise the shipping date)
* @param limit specifies the number of messages to get
* @param message_id specifies a single message
* @param kontaktType specifies the type of the kontakt to get (email,...)
* @param limit specifies the max number of messages to get
* @param since specifies from which date messages have to be retrieved
*/
public function getMessages($kontaktType, $sent, $limit = null, $message_id = null)
public function getNotSentMessages($limit, $since)
{
$query = 'SELECT mm.message_id,
ks.kontakt as sender,
kr.kontakt as receiver,
mu.mitarbeiter_uid as employeeContact,
ms.mitarbeiter_uid as senderemployeeContact,
mr.person_id as receiver_id,
mr.token,
mm.subject,
mm.body,
mr.sentinfo
FROM public.tbl_msg_recipient mr INNER JOIN public.tbl_msg_message mm USING (message_id)
LEFT JOIN (
SELECT person_id, kontakt FROM public.tbl_kontakt WHERE kontakttyp = ?
) ks ON (ks.person_id = mm.person_id)
LEFT JOIN (
SELECT person_id, kontakt FROM public.tbl_kontakt WHERE kontakttyp = ?
) kr ON (kr.person_id = mr.person_id)
LEFT JOIN (
SELECT b.person_id,
m.mitarbeiter_uid
FROM public.tbl_benutzer b INNER JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
WHERE b.aktiv = TRUE
) mu ON (mu.person_id = mr.person_id)
LEFT JOIN (
SELECT b.person_id,
m.mitarbeiter_uid
FROM public.tbl_benutzer b INNER JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
WHERE b.aktiv = TRUE
) ms ON (ms.person_id = mm.person_id)';
$query = 'SELECT mm.message_id
FROM public.tbl_msg_recipient mr
JOIN public.tbl_msg_message mm USING (message_id)
WHERE mr.sent IS NULL
AND mr.sentinfo IS NULL
AND mm.insertamum > ?
ORDER BY mr.insertamum ASC
LIMIT ?';
$parametersArray = array($kontaktType, $kontaktType);
if (is_null($sent) || $sent == '')
{
$query .= ' WHERE mr.sent IS NULL';
}
else
{
array_push($parametersArray, $sent);
$query .= ' WHERE mr.sent = ?';
}
if (!is_null($message_id))
{
array_push($parametersArray, $message_id);
$query .= ' AND mm.message_id = ?';
}
$query .= ' ORDER BY mr.insertamum ASC';
if (!is_null($limit))
{
$query .= ' LIMIT ?';
array_push($parametersArray, $limit);
}
return $this->execQuery($query, $parametersArray);
return $this->execQuery($query, array($since, $limit));
}
/**
@@ -307,4 +260,137 @@ class Recipient_model extends DB_Model
return $this->execQuery($sql, $parametersArray);
}
/**
* - Gets the directly recieved messages using the given person id
* - Gets the recieved messages from an organisation unit where this person plays a role given by the parameter functions
*/
public function getReceivedMessages($person_id, $functions)
{
$sql = '-- Messages sent directly to the person
SELECT mr.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum AS sent,
p.vorname,
p.nachname,
MAX(ms.status) AS status,
ms.person_id AS statusPersonId,
mr.token
FROM public.tbl_msg_recipient mr
JOIN public.tbl_msg_message mm ON (mm.message_id = mr.message_id)
JOIN public.tbl_msg_status ms ON (ms.message_id = mr.message_id AND ms.person_id = mr.person_id)
JOIN public.tbl_person p ON (p.person_id = mm.person_id)
WHERE mr.person_id = ?
GROUP BY mr.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum,
p.vorname,
p.nachname,
ms.person_id,
mr.token
UNION
-- Messages sent to a person that belongs to the recipient organisation unit
SELECT mrou.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum AS sent,
pr.vorname,
pr.nachname,
MAX(ms.status) AS status,
ms.person_id AS statusPersonId,
mrou.token
FROM public.tbl_person p
JOIN public.tbl_benutzer b ON (b.person_id = p.person_id)
JOIN (
SELECT uid, oe_kurzbz
FROM public.tbl_benutzerfunktion
WHERE (datum_von IS NULL OR datum_von <= NOW())
AND (datum_bis IS NULL OR datum_bis >= NOW())
AND funktion_kurzbz IN ?
) bf ON (bf.uid = b.uid)
JOIN public.tbl_msg_recipient mrou ON (mrou.oe_kurzbz = bf.oe_kurzbz)
JOIN public.tbl_msg_message mm ON (mm.message_id = mrou.message_id)
JOIN public.tbl_msg_status ms ON (ms.message_id = mrou.message_id AND ms.person_id = mrou.person_id)
JOIN public.tbl_person pr ON (pr.person_id = mm.person_id)
WHERE p.person_id = ?
GROUP BY mrou.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum,
pr.vorname,
pr.nachname,
ms.person_id,
mrou.token
ORDER BY sent DESC';
return $this->execQuery($sql, array($person_id, $functions, $person_id));
}
/**
* Gets all the sent message by the given person
*/
public function getSentMessages($person_id)
{
$sql = 'SELECT mm.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum AS sent,
p.person_id,
p.vorname,
p.nachname,
MAX(ms.status) AS status,
ms.person_id AS statusPersonId,
oe.bezeichnung AS oe,
mr.token
FROM public.tbl_msg_message mm
JOIN public.tbl_msg_recipient mr ON (mr.message_id = mm.message_id)
JOIN public.tbl_msg_status ms ON (ms.message_id = mm.message_id AND ms.person_id = mr.person_id)
JOIN public.tbl_person p ON (p.person_id = mr.person_id)
LEFT JOIN public.tbl_organisationseinheit oe ON (oe.oe_kurzbz = mr.oe_kurzbz)
WHERE mm.person_id = ?
GROUP BY mm.message_id,
mm.relationmessage_id,
mm.subject,
mm.body,
mm.insertamum,
p.person_id,
p.vorname,
p.nachname,
ms.person_id,
oe.bezeichnung,
mr.token
ORDER BY sent DESC';
return $this->execQuery($sql, array($person_id));
}
/**
*
*/
public function getMessagesById($messageIds)
{
$sql = 'SELECT mm.message_id,
mm.person_id AS sender_id,
mm.subject,
mm.body,
mm.relationmessage_id,
mm.oe_kurzbz AS sender_ou,
mr.person_id AS receiver_id,
mr.token,
mr.sent,
mr.sentinfo,
mr.oe_kurzbz AS receiver_ou
FROM public.tbl_msg_message mm
JOIN public.tbl_msg_recipient mr ON (mr.message_id = mm.message_id)
WHERE mm.message_id IN ?';
return $this->execQuery($sql, array($messageIds));
}
}
+11 -10
View File
@@ -24,30 +24,32 @@ class Variable_model extends DB_Model
*/
public function getVariables($uid, $names = null)
{
if (isEmptyString($uid) || (isset($names) && !is_array($names)))
if (isEmptyString($uid))
$result = error('wrong parameters passed');
else
{
$vardata = array();
$parametersArray = array($uid);
$qry = "SELECT name, wert FROM public.tbl_variable WHERE uid = ?";
if (isset($names))
if (!isEmptyArray($names))
{
$qry .= " AND name IN ('".implode(',', $names)."')";
$qry .= " AND name IN ?";
$parametersArray[] = $names;
}
$qry .= ";";
$varresults = $this->execQuery($qry, array($uid));
$varresults = $this->execQuery($qry, $parametersArray);
if (hasData($varresults))
{
$varresults = getData($varresults);
foreach ($varresults as $varresult)
{
if (isset($varresult->wert))
$vardata[$varresult->name] = $varresult->wert;
}
foreach ($varresults as $varresult)
{
if (isset($varresult->wert))
$vardata[$varresult->name] = $varresult->wert;
}
}
$vardefaults = $this->VariablennameModel->getDefaults($names);
@@ -56,7 +58,6 @@ class Variable_model extends DB_Model
{
$vardefaults = getData($vardefaults);
foreach ($vardefaults as $vardefault)
{
if (!isset($vardata[$vardefault->name]) && isset($vardefault->defaultwert))
+89 -89
View File
@@ -1,89 +1,89 @@
<?php
$this->load->view('templates/header', array('title' => 'StatusEdit'));
$s = $status;
?>
<div class="row">
<div class="span4">
<h2>Status: <?php echo $s->status_kurzbz; ?></h2>
<form method="post" action="../saveStatus">
<table>
<tr>
<td colspan="2">
beschreibung:<br/><br/>
<input type="text" name="beschreibung" value="<?php echo $s->beschreibung; ?>" /><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Anmerkung:<br/><br/>
<textarea name="anmerkung"><?php echo $s->anmerkung; ?></textarea><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php
$val = '';
$i = 0;
?>
<?php foreach ($sprache as $sp): ?>
<?php echo $sp->sprache; ?>:<br/>
<?php
if (!isset($s->bezeichnung_mehrsprachig[$i]))
{
$val = '';
}
else
{
$val = $s->bezeichnung_mehrsprachig[$i];
}
$i++;
?>
<input type="text" name="bezeichnung_mehrsprachig[]" value="<?php echo $val; ?>" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="status_kurzbz" value="<?php echo $s->status_kurzbz; ?>" />
</form>
</div>
</div>
</body>
<?php
if (!is_null($update))
{
?>
<script>
parent.document.getElementById("StatusgrundLeft").contentWindow.location.reload(true);
</script>
<?php
}
?>
</html>
<?php
$this->load->view('templates/header', array('title' => 'StatusEdit'));
$s = $status;
?>
<div class="row">
<div class="span4">
<h2>Status: <?php echo $s->status_kurzbz; ?></h2>
<form method="post" action="../saveStatus">
<table>
<tr>
<td colspan="2">
beschreibung:<br/><br/>
<input type="text" name="beschreibung" value="<?php echo $s->beschreibung; ?>" /><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Anmerkung:<br/><br/>
<textarea name="anmerkung"><?php echo $s->anmerkung; ?></textarea><br/>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php
$val = '';
$i = 0;
?>
<?php foreach ($sprache as $sp): ?>
<?php echo $sp->sprache; ?>:<br/>
<?php
if (!isset($s->bezeichnung_mehrsprachig[$i]))
{
$val = '';
}
else
{
$val = $s->bezeichnung_mehrsprachig[$i];
}
$i++;
?>
<input type="text" name="bezeichnung_mehrsprachig[]" value="<?php echo $val; ?>" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="status_kurzbz" value="<?php echo $s->status_kurzbz; ?>" />
</form>
</div>
</div>
</body>
<?php
if (!is_null($update))
{
?>
<script>
parent.document.getElementById("StatusgrundLeft").contentWindow.location.reload(true);
</script>
<?php
}
?>
</html>
+32 -32
View File
@@ -1,32 +1,32 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Statusgrund</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset cols="30%, *">
<frame src="Statusgrund/listStatus" id="StatusgrundLeft" name="StatusgrundLeft" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
<frameset rows="30%, *">
<frame src="" id="StatusgrundTop" name="StatusgrundTop" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
<frame src="" id="StatusgrundBottom" name="StatusgrundBottom" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
</frameset>
</frameset>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Statusgrund</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset cols="30%, *">
<frame src="Statusgrund/listStatus" id="StatusgrundLeft" name="StatusgrundLeft" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
<frameset rows="30%, *">
<frame src="" id="StatusgrundTop" name="StatusgrundTop" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
<frame src="" id="StatusgrundBottom" name="StatusgrundBottom" frameborder="1" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
</body>
</noframes>
</frameset>
</frameset>
</html>
+107 -107
View File
@@ -1,107 +1,107 @@
<?php
$this->load->view('templates/header', array('title' => 'StatusgrundEdit'));
$sg = $statusgrund;
?>
<div class="row">
<div class="span4">
<h2>Statusgrund: <?php echo $sg->status_kurzbz; ?></h2>
<form method="post" action="<?php echo site_url("crm/Statusgrund/saveGrund"); ?>">
<table>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php
$i = 0;
$val = "";
?>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<?php
if (!isset($sg->bezeichnung_mehrsprachig[$i]))
{
$val = "";
}
else
{
$val = $sg->bezeichnung_mehrsprachig[$i];
}
$i++;
?>
<input type="text" name="bezeichnung_mehrsprachig[]" value="<?php echo $val; ?>" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Beschreibung:<br/><br/>
<?php
$i = 0;
$val = "";
?>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<?php
if (!isset($sg->beschreibung[$i]))
{
$val = "";
}
else
{
$val = $sg->beschreibung[$i];
}
$i++;
?>
<textarea name="beschreibung[]"><?php echo $val; ?></textarea><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td>
Aktiv:
</td>
<td>
<input type="checkbox" name="aktiv" <?php echo isset($sg->aktiv) && $sg->aktiv === true ? "checked" : ""; ?> />
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="statusgrund_id" value="<?php echo isset($sg->statusgrund_id) ? $sg->statusgrund_id : ""; ?>" />
</form>
</div>
</div>
</body>
<?php
if (!is_null($update))
{
?>
<script>
parent.document.getElementById("StatusgrundTop").contentWindow.location.reload(true);
</script>
<?php
}
?>
</html>
<?php
$this->load->view('templates/header', array('title' => 'StatusgrundEdit'));
$sg = $statusgrund;
?>
<div class="row">
<div class="span4">
<h2>Statusgrund: <?php echo $sg->status_kurzbz; ?></h2>
<form method="post" action="<?php echo site_url("crm/Statusgrund/saveGrund"); ?>">
<table>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php
$i = 0;
$val = "";
?>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<?php
if (!isset($sg->bezeichnung_mehrsprachig[$i]))
{
$val = "";
}
else
{
$val = $sg->bezeichnung_mehrsprachig[$i];
}
$i++;
?>
<input type="text" name="bezeichnung_mehrsprachig[]" value="<?php echo $val; ?>" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Beschreibung:<br/><br/>
<?php
$i = 0;
$val = "";
?>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<?php
if (!isset($sg->beschreibung[$i]))
{
$val = "";
}
else
{
$val = $sg->beschreibung[$i];
}
$i++;
?>
<textarea name="beschreibung[]"><?php echo $val; ?></textarea><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td>
Aktiv:
</td>
<td>
<input type="checkbox" name="aktiv" <?php echo isset($sg->aktiv) && $sg->aktiv === true ? "checked" : ""; ?> />
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="statusgrund_id" value="<?php echo isset($sg->statusgrund_id) ? $sg->statusgrund_id : ""; ?>" />
</form>
</div>
</div>
</body>
<?php
if (!is_null($update))
{
?>
<script>
parent.document.getElementById("StatusgrundTop").contentWindow.location.reload(true);
</script>
<?php
}
?>
</html>
+66 -66
View File
@@ -1,66 +1,66 @@
<?php
$this->load->view('templates/header', array('title' => 'StatusgrundNew'));
?>
<div class="row">
<div class="span4">
<h2>Neuer Statusgrund</h2>
<form method="post" action="<?php echo site_url("crm/Statusgrund/insGrund"); ?>">
<table>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<input type="text" name="bezeichnung_mehrsprachig[]" value="" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Beschreibung:<br/><br/>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<textarea name="beschreibung[]"></textarea><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td>
Aktiv:
</td>
<td>
<input type="checkbox" name="aktiv" />
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="status_kurzbz" value="<?php echo $status_kurzbz; ?>" />
</form>
</div>
</div>
</body>
</html>
<?php
$this->load->view('templates/header', array('title' => 'StatusgrundNew'));
?>
<div class="row">
<div class="span4">
<h2>Neuer Statusgrund</h2>
<form method="post" action="<?php echo site_url("crm/Statusgrund/insGrund"); ?>">
<table>
<tr>
<td colspan="2">
Bezeichnung mehrsprachig:<br/><br/>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<input type="text" name="bezeichnung_mehrsprachig[]" value="" /><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2">
Beschreibung:<br/><br/>
<?php foreach ($sprache as $s): ?>
<?php echo $s->sprache; ?>:<br/>
<textarea name="beschreibung[]"></textarea><br/>
<?php endforeach ?>
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td>
Aktiv:
</td>
<td>
<input type="checkbox" name="aktiv" />
</td>
</tr>
<tr>
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="submit">Save</button>
</td>
</tr>
</table>
<input type="hidden" name="status_kurzbz" value="<?php echo $status_kurzbz; ?>" />
</form>
</div>
</div>
</body>
</html>
@@ -144,12 +144,13 @@ $this->load->view(
</div>
</div>
<div class="col-md-offset-2 col-md-4 col-xs-6">
<div class="input-group">
<input id="password" type="password" class="form-control" placeholder="CIS-Passwort">
<span class="input-group-btn">
<button id="accept-lehrauftraege" class="btn btn-primary pull-right">Lehrauftrag annehmen</button>
</span>
</div>
<div class="input-group">
<input id="username" type="hidden" value=""><!-- this is to prevent Chrome autofilling a random input field with the username-->
<input id="password" type="password" autocomplete="new-password" class="form-control" placeholder="CIS-Passwort">
<span class="input-group-btn">
<button id="accept-lehrauftraege" class="btn btn-primary pull-right">Lehrauftrag annehmen</button>
</span>
</div>
</div>
</div>
<br>
@@ -182,7 +182,8 @@ FROM
(SELECT
uid
FROM
public.tbl_benutzer
public.tbl_benutzer JOIN public.tbl_mitarbeiter ma
ON tbl_benutzer.uid = ma.mitarbeiter_uid
WHERE
person_id = tmp_projektbetreuung.person_id
ORDER BY aktiv DESC, updateaktivam DESC -- accept inactive as some person_ids have no active, but order them last
@@ -296,7 +297,6 @@ $filterWidgetArray = array(
'tableUniqueId' => 'acceptLehrauftrag',
'requiredPermissions' => 'lehre/lehrauftrag_akzeptieren',
'datasetRepresentation' => 'tabulator',
'reloadDataset' => true, // reload query on page refresh
'columnsAliases' => array( // TODO: use phrasen
'Status', // alias for row_index, because row_index is formatted to display the status icons
'LV- / Projektbezeichnung',
@@ -187,7 +187,8 @@ FROM
(SELECT
uid
FROM
public.tbl_benutzer
public.tbl_benutzer JOIN public.tbl_mitarbeiter ma
ON tbl_benutzer.uid = ma.mitarbeiter_uid
WHERE
person_id = tmp_projektbetreuung.person_id
ORDER BY aktiv DESC, updateaktivam DESC -- accept inactive as some person_ids have no active, but order them last
@@ -304,7 +305,6 @@ $filterWidgetArray = array(
'tableUniqueId' => 'approveLehrauftrag',
'requiredPermissions' => 'lehre/lehrauftrag_erteilen',
'datasetRepresentation' => 'tabulator',
'reloadDataset' => true, // reload query on page refresh
'columnsAliases' => array( // TODO: use phrasen
'Status', // alias for row_index, because row_index is formatted to display the status icons
'Personalnummer',
@@ -53,7 +53,6 @@ $tableWidgetArray = array(
'tableUniqueId' => 'cancelledLehrauftrag',
'requiredPermissions' => 'lehre/lehrauftrag_akzeptieren',
'datasetRepresentation' => 'tabulator',
'reloadDataset' => true, // reload query on page refresh
'columnsAliases' => array( // TODO: use phrasen
'Status',
'Studiensemester',
@@ -219,7 +219,8 @@ FROM
(SELECT
uid
FROM
public.tbl_benutzer
public.tbl_benutzer JOIN public.tbl_mitarbeiter ma
ON tbl_benutzer.uid = ma.mitarbeiter_uid
WHERE
person_id = tmp_projektbetreuung.person_id
ORDER BY aktiv DESC, updateaktivam DESC -- accept inactive as some person_ids have no active, but order them last
@@ -336,7 +337,6 @@ $filterWidgetArray = array(
'tableUniqueId' => 'orderLehrauftrag',
'requiredPermissions' => 'lehre/lehrauftrag_bestellen',
'datasetRepresentation' => 'tabulator',
'reloadDataset' => true, // reload query on page refresh
'columnsAliases' => array( // TODO: use phrasen
'Status', // alias for row_index, because row_index is formatted to display the status icons
'Personalnummer',
+150 -150
View File
@@ -1,150 +1,150 @@
<?php $this->load->view("templates/header", array("title" => "UDF", "widgetsCSS" => true)); ?>
<body style="background-color: #eff0f1;">
<?php
if ($result != null)
{
if (isSuccess($result))
{
?>
<div style="color: black;">
Saved!
</div>
<br>
<?php
}
else
{
?>
<div style="color: red;">
Error while saving!
</div>
<br>
<div style="color: red;">
<?php
$errors = $result->retval;
if(is_array($errors))
{
foreach ($errors as $error)
{
foreach ($error as $fieldError)
{
echo $fieldError->code . ': ' . $fieldError->retval . '<br>';
}
}
}
else
echo $result->retval;
?>
</div>
<br>
<br>
<br>
<?php
}
}
?>
<form action="<?php echo site_url('system/FAS_UDF/saveUDF'); ?>" method="POST">
<div class="div-table">
<div class="div-row">
<div class="div-cell" style="font-size: 20px; font-weight: bold;">
Zusatzfelder
</div>
</div>
<div class="div-row">
<div class="div-cell">
&nbsp;
</div>
</div>
<div class="div-row">
<?php
if (isset($personUdfs))
{
?>
<div class="div-cell">
<?php
echo $this->udflib->UDFWidget(
array(
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_person',
UDFLib::UDFS_ARG_NAME => $personUdfs
)
);
?>
</div>
<div class="div-cell" style="width: 40px;">
&nbsp;
</div>
<?php
}
?>
<?php
if (isset($prestudentUdfs))
{
?>
<div class="div-cell">
<?php
echo $this->udflib->UDFWidget(
array(
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
UDFLib::UDFS_ARG_NAME => $prestudentUdfs
)
);
?>
</div>
<?php
}
?>
</div>
<div class="div-row">
<div class="div-cell">
&nbsp;
</div>
</div>
<div class="div-row halign-right">
<?php
if (isset($personUdfs) && isset($prestudentUdfs))
{
?>
<div class="div-cell">
&nbsp;
</div>
<div class="div-cell">
&nbsp;
</div>
<?php
}
?>
<div class="div-cell halign-right">
<input type="submit" value="&nbsp;Speichern&nbsp;">
</div>
</div>
</div>
<?php
if (isset($personUdfs))
{
?>
<input type="hidden" name="person_id" value="<?php echo $personUdfs['person_id']; ?>">
<?php
}
?>
<?php
if (isset($prestudentUdfs))
{
?>
<input type="hidden" name="prestudent_id" value="<?php echo $prestudentUdfs['prestudent_id']; ?>">
<?php
}
?>
</form>
</body>
<?php $this->load->view("templates/footer"); ?>
<?php $this->load->view("templates/header", array("title" => "UDF", "widgetsCSS" => true)); ?>
<body style="background-color: #eff0f1;">
<?php
if ($result != null)
{
if (isSuccess($result))
{
?>
<div style="color: black;">
Saved!
</div>
<br>
<?php
}
else
{
?>
<div style="color: red;">
Error while saving!
</div>
<br>
<div style="color: red;">
<?php
$errors = $result->retval;
if(is_array($errors))
{
foreach ($errors as $error)
{
foreach ($error as $fieldError)
{
echo $fieldError->code . ': ' . $fieldError->retval . '<br>';
}
}
}
else
echo $result->retval;
?>
</div>
<br>
<br>
<br>
<?php
}
}
?>
<form action="<?php echo site_url('system/FAS_UDF/saveUDF'); ?>" method="POST">
<div class="div-table">
<div class="div-row">
<div class="div-cell" style="font-size: 20px; font-weight: bold;">
Zusatzfelder
</div>
</div>
<div class="div-row">
<div class="div-cell">
&nbsp;
</div>
</div>
<div class="div-row">
<?php
if (isset($personUdfs))
{
?>
<div class="div-cell">
<?php
echo $this->udflib->UDFWidget(
array(
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_person',
UDFLib::UDFS_ARG_NAME => $personUdfs
)
);
?>
</div>
<div class="div-cell" style="width: 40px;">
&nbsp;
</div>
<?php
}
?>
<?php
if (isset($prestudentUdfs))
{
?>
<div class="div-cell">
<?php
echo $this->udflib->UDFWidget(
array(
UDFLib::SCHEMA_ARG_NAME => 'public',
UDFLib::TABLE_ARG_NAME => 'tbl_prestudent',
UDFLib::UDFS_ARG_NAME => $prestudentUdfs
)
);
?>
</div>
<?php
}
?>
</div>
<div class="div-row">
<div class="div-cell">
&nbsp;
</div>
</div>
<div class="div-row halign-right">
<?php
if (isset($personUdfs) && isset($prestudentUdfs))
{
?>
<div class="div-cell">
&nbsp;
</div>
<div class="div-cell">
&nbsp;
</div>
<?php
}
?>
<div class="div-cell halign-right">
<input type="submit" value="&nbsp;Speichern&nbsp;">
</div>
</div>
</div>
<?php
if (isset($personUdfs))
{
?>
<input type="hidden" name="person_id" value="<?php echo $personUdfs['person_id']; ?>">
<?php
}
?>
<?php
if (isset($prestudentUdfs))
{
?>
<input type="hidden" name="prestudent_id" value="<?php echo $prestudentUdfs['prestudent_id']; ?>">
<?php
}
?>
</form>
</body>
<?php $this->load->view("templates/footer"); ?>
@@ -274,7 +274,6 @@
'filter_id' => $this->input->get('filter_id'),
'requiredPermissions' => 'infocenter',
'datasetRepresentation' => 'tablesorter',
'reloadDataset' => ($this->input->get('reloadDataset')=='true'?true:false),
'customMenu' => true,
'checkboxes' => 'PersonId',
'additionalColumns' => array('Details'),
@@ -22,7 +22,7 @@
'customJSs' => array(
'public/js/bootstrapper.js',
'public/js/tablesort/tablesort.js',
'public/js/messaging/messageList.js',
'public/js/infocenter/messageList.js',
'public/js/infocenter/infocenterDetails.js'
),
'phrases' => array(
@@ -154,7 +154,7 @@
<div class="panel-body">
<div class="row" id="messagelist">
<?php
$this->load->view('system/messages/messageList.php', $messages);
$this->load->view('system/infocenter/messageList.php', $messages);
?>
</div>
</div>
@@ -135,7 +135,7 @@
FROM tbl_prestudentstatus spss
WHERE spss.prestudent_id = pss.prestudent_id
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >
(SELECT start FROM public.tbl_studiensemester sss WHERE studiensemester_kurzbz = '.$STUDIENSEMESTER.'))
)
LIMIT 1
@@ -236,7 +236,6 @@
'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,7 +204,6 @@
'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(
+18 -18
View File
@@ -1,19 +1,19 @@
<table id="logtable" class="table table-bordered table-hover">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global', 'datum')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'aktivitaet')) ?></th>
<th>User</th>
</tr>
</thead>
<tbody>
<?php foreach ($logs as $log): ?>
<tr data-toggle="tooltip"
title="<?php echo isset($log->logdata->message) ? $log->logdata->message : '' ?>">
<td><?php echo date_format(date_create($log->zeitpunkt), 'd.m.Y H:i:s') ?></td>
<td><?php echo isset($log->logdata->name) ? $log->logdata->name : '' ?></td>
<td><?php echo $log->insertvon ?></td>
</tr>
<?php endforeach ?>
</tbody>
<table id="logtable" class="table table-bordered table-hover">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global', 'datum')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'aktivitaet')) ?></th>
<th>User</th>
</tr>
</thead>
<tbody>
<?php foreach ($logs as $log): ?>
<tr data-toggle="tooltip"
title="<?php echo isset($log->logdata->message) ? $log->logdata->message : '' ?>">
<td><?php echo date_format(date_create($log->zeitpunkt), 'd.m.Y H:i:s') ?></td>
<td><?php echo isset($log->logdata->name) ? $log->logdata->name : '' ?></td>
<td><?php echo $log->insertvon ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
@@ -1,37 +1,37 @@
<?php
$msgExists = count($messages) > 0;
$widthColumn = $msgExists === true ? 8 : 12;
?>
<div class="col-lg-<?php echo $widthColumn ?>">
<table id="msgtable" class="table table-bordered table-condensed tablesort-hover tablesort-active">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global','gesendetAm')) ?></th>
<th><?php echo ucfirst($this->p->t('global','sender')) ?></th>
<th><?php echo ucfirst($this->p->t('global','empfaenger')) ?></th>
<th><?php echo ucfirst($this->p->t('global','betreff')) ?></th>
<th><?php echo ucfirst($this->p->t('global','gelesenAm')) ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($messages as $message): ?>
<tr id="<?php echo $message->message_id.'_'.$message->repersonid ?>" style="cursor: pointer">
<td><?php echo isset($message->insertamum) ? date_format(date_create($message->insertamum), 'd.m.Y H:i:s') : '' ?></td>
<td><?php echo $message->sevorname.' '.$message->senachname ?></td>
<td><?php echo $message->revorname.' '.$message->renachname ?></td>
<td><?php echo $message->subject ?></td>
<td><?php echo isset($message->statusamum) ? date_format(date_create($message->statusamum), 'd.m.Y H:i:s') : '' ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php if ($msgExists === true): ?>
<div class="col-lg-4">
<br>
<div class="text-center"><label for="msgbody" id="msgsubject"></label></div>
<div>
<textarea id="msgbody"></textarea>
</div>
</div>
<?php endif; ?>
<?php
$msgExists = count($messages) > 0;
$widthColumn = $msgExists === true ? 8 : 12;
?>
<div class="col-lg-<?php echo $widthColumn ?>">
<table id="msgtable" class="table table-bordered table-condensed tablesort-hover tablesort-active">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global','gesendetAm')) ?></th>
<th><?php echo ucfirst($this->p->t('global','sender')) ?></th>
<th><?php echo ucfirst($this->p->t('global','empfaenger')) ?></th>
<th><?php echo ucfirst($this->p->t('global','betreff')) ?></th>
<th><?php echo ucfirst($this->p->t('global','gelesenAm')) ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($messages as $message): ?>
<tr id="<?php echo $message->message_id.'_'.$message->repersonid ?>" style="cursor: pointer">
<td><?php echo isset($message->insertamum) ? date_format(date_create($message->insertamum), 'd.m.Y H:i:s') : '' ?></td>
<td><?php echo $message->sevorname.' '.$message->senachname ?></td>
<td><?php echo $message->revorname.' '.$message->renachname ?></td>
<td><?php echo $message->subject ?></td>
<td><?php echo isset($message->statusamum) ? date_format(date_create($message->statusamum), 'd.m.Y H:i:s') : '' ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php if ($msgExists === true): ?>
<div class="col-lg-4">
<br>
<div class="text-center"><label for="msgbody" id="msgsubject"></label></div>
<div>
<textarea id="msgbody"></textarea>
</div>
</div>
<?php endif; ?>
+19 -19
View File
@@ -1,20 +1,20 @@
<table id="notiztable" class="table table-bordered table-hover">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global', 'datum')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'notiz')) ?></th>
<th>User</th>
</tr>
</thead>
<tbody>
<?php foreach ($notizen as $notiz): ?>
<tr data-toggle="tooltip"
title="<?php echo isset($notiz->text) ? html_escape($notiz->text) : '' ?>" style="cursor: pointer">
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
<td><?php echo html_escape($notiz->titel) ?></td>
<td><?php echo $notiz->verfasser_uid ?></td>
<td style="display: none" class="hiddennotizid"><?php echo $notiz->notiz_id ?></td>
</tr>
<?php endforeach ?>
</tbody>
<table id="notiztable" class="table table-bordered table-hover">
<thead>
<tr>
<th><?php echo ucfirst($this->p->t('global', 'datum')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'notiz')) ?></th>
<th>User</th>
</tr>
</thead>
<tbody>
<?php foreach ($notizen as $notiz): ?>
<tr data-toggle="tooltip"
title="<?php echo isset($notiz->text) ? html_escape($notiz->text) : '' ?>" style="cursor: pointer">
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
<td><?php echo html_escape($notiz->titel) ?></td>
<td><?php echo $notiz->verfasser_uid ?></td>
<td style="display: none" class="hiddennotizid"><?php echo $notiz->notiz_id ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
@@ -113,7 +113,7 @@
</table>
<div class="row">
<div class="col-xs-6">
<form id="sendmsgform" method="post" action="<?php echo site_url('/system/Messages/write'); ?>" target="_blank">
<form id="sendmsgform" method="post" action="<?php echo site_url('/system/messages/Messages/writeTemplate'); ?>" target="_blank">
<input type="hidden" name="person_id" value="<?php echo $stammdaten->person_id ?>">
<a id="sendmsglink" href="javascript:void(0);">
<i class="fa fa-envelope"></i>&nbsp;<?php echo $this->p->t('ui','nachrichtSenden'); ?>
@@ -14,7 +14,6 @@
',
'requiredPermissions' => 'admin',
'datasetRepresentation' => 'tablesorter',
'reloadDataset' => true,
'columnsAliases' => array(
'Log id',
'Request id',
@@ -0,0 +1,61 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Read personal messages',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'momentjs' => true,
'tabulator' => true,
'ajaxlib' => true,
'dialoglib' => true,
'tinymce' => true,
'phrases' => array('global', 'ui'),
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/read.js')
)
);
?>
<body>
<fieldset>
<span id="toggleMessages" class="toggle">
<input type="radio" name="toggleMessages" id="received" checked>
<label for="received">
<?php echo $this->p->t('global', 'received'); ?>
</label>
<input type="radio" name="toggleMessages" id="sent">
<label for="sent">
<?php echo ucfirst($this->p->t('global', 'gesendet')); ?>
</label>
</span>
<span class="buttonsSpacer"></span>
<span>
<input id="writeMessage" type="button" value="<?php echo $this->p->t('ui', 'nachrichtSenden'); ?>">
<input id="replyMessage" type="button" value="<?php echo $this->p->t('global', 'reply'); ?>">
</span>
</fieldset>
<div id="lstMessagesPanel"></div>
<div id="readMessagePanel"></div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,100 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Write a new message',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'ajaxlib' => true,
'dialoglib' => true,
'tinymce' => true,
'phrases' => array('global', 'ui'),
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/write.js')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo $this->p->t('ui', 'nachrichtSenden'); ?>
</h3>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>
<?php echo $this->p->t('global', 'empfaenger'); ?>:
</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<select id="organisationUnit">
<?php echo $organisationUnitOptions; ?>
</select>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>
<?php echo $this->p->t('global', 'betreff'); ?>:
</label>
</div>
&nbsp;
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12">
<label>
<?php echo $this->p->t('global', 'nachricht'); ?>:
</label>
<textarea id="body"></textarea>
<br>
<div>
<?php echo $this->p->t('ui', 'altRecipientNote'); ?>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12 text-right">
<button id="sendButton" class="btn btn-default" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,101 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Reply to a message',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'ajaxlib' => true,
'dialoglib' => true,
'tinymce' => true,
'phrases' => array('global', 'ui'),
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/writeReply.js')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo $this->p->t('ui', 'nachrichtSenden'); ?>
</h3>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'empfaenger')); ?>:
</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php echo $receiver; ?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'betreff')); ?>:
</label>
</div>
&nbsp;
<div class="col-lg-7">
<input id="subject" name="subject" type="text" value="<?php echo $subject; ?>">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12">
<label>
<?php echo ucfirst($this->p->t('global', 'nachricht')); ?>:
</label>
<textarea id="body">
<?php echo $body; ?>
</textarea>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12 text-right">
<input id="receiver_id" type="hidden" value="<?php echo $receiver_id; ?>">
<input id="relationmessage_id" type="hidden" value="<?php echo $relationmessage_id; ?>">
<input id="token" type="hidden" value="<?php echo $token; ?>">
<button id="sendButton" class="btn btn-default" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -2,12 +2,12 @@
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'MessageSent',
'title' => 'Message sent failure - Fehler beim Senden der Nachricht',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageSent.css')
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css')
)
);
?>
@@ -20,47 +20,31 @@
<div class="row">
<div class="col-xs-6">
<h3 class="page-header text-right">Thank you for getting in touch!</h3>
<h3 class="page-header text-right"></h3>
</div>
<div class="col-xs-6">
<h3 class="page-header">Danke für die Kontaktaufnahme!</h3>
<h3 class="page-header"></h3>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel panel-success">
<div class="panel-heading">
<div class="row">
<div class="col-xs-6 text-right">
Message sent successfully!
An error occurred while sending your message, please try later.
</div>
<div class="col-xs-6">
Nachricht erfolgreich versandt!
Beim Senden Ihrer Nachricht ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.
</div>
</div>
</div>
<div class="panel-body">
<div class="row">
<div class="col-xs-6 text-right">
<span class="rwd-line">
Thank you for your message.
</span>
<span class="rwd-line">
We will get back to you shortly.
</span>
</div>
<div class="col-xs-6">
<span class="rwd-line">
Herzlichen Dank für Ihre Nachricht.
</span>
<span class="rwd-line">
Wir werden uns schnellstmöglich um Ihr Anliegen kümmern.
</span>
</div>
</div>
<br>
@@ -72,18 +56,12 @@
Sie können dieses Fenster schließen.
</div>
</div>
<br>
<div class="row">
<div class="col-xs-6 text-right">
Your InfoCenter@FHTW Team
</div>
<div class="col-xs-6">
Ihr InfoCenter@FHTW Team
</div>
</div>
<br>
</div>
</div>
<div class="row">
<div class="col-xs-12 text-center">
<p class="signatureblock">
@@ -93,6 +71,7 @@
</p>
</div>
</div>
</div>
</div>
</div>
@@ -2,12 +2,12 @@
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'MessageSent',
'title' => 'Message sent successfully - Nachricht erfolgreich versandt!',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageSent.css')
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css')
)
);
?>
@@ -17,11 +17,6 @@
<div id="page-wrapper">
<div class="container-fluid">
<?php
if ($success)
{
?>
<div class="row">
<div class="col-xs-6">
@@ -79,11 +74,6 @@
</div>
</div>
<?php
}
?>
</div>
</div>
</div>
@@ -1,75 +1,104 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'MessageSent',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageReply.css')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-xs-12">
<h3 class="page-header text-center">You have a new message</h3>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="panel panel-success">
<div class="panel-heading text-center">
<?php echo $message->subject; ?>
</div>
<div class="panel-body">
<table class="table table-condensed table-bordered" id="msgtable" align="center">
<tr>
<td width="80px">
<b>From:</b>
</td>
<td>
<?php echo $sender->vorname.' '.$sender->nachname; ?>
</td>
</tr>
<tr>
<td width="80px">
<b>Subject:</b>
</td>
<td>
<?php echo $message->subject; ?>
</td>
</tr>
<tr>
<td width="80px">
<b>Message:</b>
</td>
<td>
<?php echo $message->body; ?>
</td>
</tr>
</table>
</div>
<div class="panel-footer">
<div class="row">
<div class="col-xs-12 text-center">
<?php if ($isEmployee === false && $href != ''): ?>
<button class="btn btn-default" id="replybutton" onclick="location.href='<?php echo $href; ?>';">
<i class="fa fa-reply"></i>&nbsp;Reply
</button>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Read message - Lies die Nachricht',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-xs-12">
<h3 class="page-header text-center">
<?php echo ucfirst($this->p->t('ui', 'newMessage')); ?>:
</h3>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="panel panel-success">
<div class="panel-heading text-center">
<?php echo $message->subject; ?>
</div>
<div class="panel-body">
<table class="table table-condensed table-bordered" id="msgtable" align="center">
<tr>
<td width="80px">
<b>
<?php echo ucfirst($this->p->t('ui', 'from')); ?>:
</b>
</td>
<td>
<?php echo $sender->vorname.' '.$sender->nachname; ?>
</td>
</tr>
<tr>
<td width="80px">
<b>
<?php echo ucfirst($this->p->t('global', 'betreff')); ?>:
</b>
</td>
<td>
<?php echo $message->subject; ?>
</td>
</tr>
<tr>
<td width="80px">
<b>
<?php echo ucfirst($this->p->t('global', 'nachricht')); ?>:
</b>
</td>
<td>
<?php echo $message->body; ?>
</td>
</tr>
</table>
</div>
<div class="panel-footer">
<div class="row">
<div class="col-xs-12 text-center">
<?php if (!isEmptyString($hrefReply)): ?>
<button class="btn btn-default" id="replybutton" onclick="location.href='<?php echo $hrefReply; ?>';">
<i class="fa fa-reply"></i>&nbsp;<?php echo ucfirst($this->p->t('global', 'reply')); ?>
</button>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,93 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Reply to a message',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/messageWriteReply.js')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo ucfirst($this->p->t('ui', 'nachrichtSenden')); ?>
</h3>
</div>
</div>
<form id="sendForm" method="post" action="<?php echo site_url('system/messages/ViewMessage/sendReply'); ?>">
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'empfaenger')); ?>:
</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php echo $receiver; ?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'betreff')); ?>:
</label>
</div>
&nbsp;
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="<?php echo $subject; ?>" name="subject">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12">
<label>
<?php echo ucfirst($this->p->t('global', 'nachricht')); ?>:
</label>
<textarea id="bodyTextArea" name="body"><?php echo $body; ?></textarea>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-12 text-right">
<button id="sendButton" class="btn btn-default" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
<input type="hidden" name="receiver_id" value="<?php echo $receiver_id; ?>">
<input type="hidden" name="relationmessage_id" value="<?php echo $relationmessage_id; ?>">
<input type="hidden" name="token" value="<?php echo $token; ?>">
</form>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -0,0 +1,170 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Write a new message or reply using templates',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'ajaxlib' => true,
'fontawesome' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'dialoglib' => true,
'widgets' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/message.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/messageWrite.js')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
<?php echo ucfirst($this->p->t('ui', 'nachrichtSenden')); ?>
</h3>
</div>
</div>
<form id="sendForm" method="post" action="<?php echo site_url('/system/messages/Messages/sendImplicitTemplate'); ?>">
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'empfaenger')); ?>:
</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php echo $recipientsList; ?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>
<?php echo ucfirst($this->p->t('global', 'betreff')); ?>:
</label>
</div>
&nbsp;
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="<?php echo $subject; ?>" name="subject">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-9">
<label>
<?php echo ucfirst($this->p->t('global', 'nachricht')); ?>:
</label>
<textarea id="bodyTextArea" name="body">
<?php echo $body; ?>
</textarea>
</div>
<div class="col-lg-3">
<div class="form-group">
<label>
<?php echo ucfirst($this->p->t('ui', 'felder')); ?>:
</label>
<?php
echo $this->widgetlib->widget(
'MultipleDropdown_widget',
array('elements' => success($variables)),
array(
'name' => 'variables[]',
'id' => 'variables',
'size' => 27,
'multiple' => true
)
);
?>
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-xs-3">
<?php
echo $this->widgetlib->widget(
'Vorlage_widget',
array('oe_kurzbz' => $organisationUnits, 'isAdmin' => $senderIsAdmin),
array('name' => 'vorlage', 'id' => 'vorlageDnD')
);
?>
</div>
<div class="col-lg-7 col-xs-9 text-right">
<button id="sendButton" class="btn btn-default" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
<hr>
<div class="row">
<div class="col-lg-12">
<label>
<?php echo ucfirst($this->p->t('global', 'vorschau')); ?>:
</label>
</div>
</div>
<div class="well" id="templatePreviewDiv">
<div class="row">
<div class="col-sm-12" style="display: inline">
<div class="form-group form-inline">
<div class="input-group">
<?php
echo $this->widgetlib->widget(
'Dropdown_widget',
array('elements' => success($recipientsArray), 'emptyElement' => ucfirst($this->p->t('global', 'empfaenger')).'...'),
array(
'name' => 'recipients[]',
'id' => 'recipients'
)
);
?>
<span class="input-group-btn">
<a class="btn btn-default" href="#templatePreviewDiv" id="refresh">
<?php echo ucfirst($this->p->t('ui', 'refresh')); ?>
</a>
</span>
</div>
</div>
</div>
</div>
<br>
<textarea id="tinymcePreview"></textarea>
</div>
<?php echo $recipients_ids; ?>
<?php echo $relationmessage_id; ?>
<?php echo $type; ?>
</form>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -1,81 +0,0 @@
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label>Receiver:</label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php
for ($i = 0; $i < count($receivers); $i++)
{
$receiver = $receivers[$i];
// Every 10 recipients a new line
if ($i > 1 && $i % 10 == 0)
{
echo '<br>';
}
echo $receiver->Vorname." ".$receiver->Nachname."; ";
}
?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label>Subject:</label>
</div>&nbsp;
<?php
$subject = '';
if (isset($message))
{
$subject = 'Re: '.$message->subject;
}
?>
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="<?php echo $subject; ?>"
name="subject">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-<?php echo isset($variables) ? 10 : 12 ?>">
<label>Message:</label>
<?php
$body = '';
if (isset($message))
{
if (isset($receivers[0]))
$body .= '<p></p><p></p><blockquote><i>On '.date_format(date_create($message->sent), 'd.m.Y H:i').' '.$receivers[0]->Vorname.' '.$receivers[0]->Nachname.' wrote:'.'</i></blockquote>';
$body .= '<blockquote style="border-left:2px solid; padding-left: 8px">';
$body .= $message->body.'</blockquote>';
}
?>
<textarea id="bodyTextArea" name="body"><?php echo $body; ?></textarea>
</div>
<?php
if (isset($variables)):
?>
<div class="col-lg-2">
<div class="form-group">
<label>Fields:</label>
<select id="variables" class="form-control" size="14" multiple="multiple">
<?php
foreach ($variables as $key => $val)
{
?>
<option value="<?php echo $key; ?>"><?php echo $val; ?></option>
<?php
}
?>
</select>
</div>
</div>
<?php endif; ?>
</div>
<br>
<div class="row">
<div class="col-lg-<?php echo isset($variables) ? 10 : 12 ?> text-right">
<button id="sendButton" class="btn btn-default" type="button">Send</button>
</div>
</div>
@@ -1,183 +0,0 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Write a message',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'ajaxlib' => true,
'fontawesome' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageWrite.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/messageWrite.js')
)
);
?>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header"><?php echo ucfirst($this->p->t('ui', 'nachrichtSenden')); ?></h3>
</div>
</div>
<form id="sendForm" method="post" action="<?php echo site_url('/system/Messages/send'); ?>">
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfieldcol-left">
<label><?php echo ucfirst($this->p->t('global', 'empfaenger')).':'; ?></label>
</div>
<div class="col-lg-11 msgfieldcol-right">
<?php
for ($i = 0; $i < count($recipients); $i++)
{
$receiver = $recipients[$i];
// Every 10 recipients a new line
if ($i > 1 && $i % 10 == 0)
{
echo '<br>';
}
echo $receiver->Vorname." ".$receiver->Nachname."; ";
}
?>
</div>
</div>
</div>
<div class="row">
<div class="form-group">
<div class="col-lg-1 msgfield msgfieldcol-left">
<label><?php echo ucfirst($this->p->t('global', 'betreff')).':'; ?></label>
</div>&nbsp;
<?php
$subject = '';
if (isset($message))
{
$subject = 'Re: '.$message->subject;
}
?>
<div class="col-lg-7">
<input id="subject" class="form-control" type="text" value="<?php echo $subject; ?>" name="subject">
</div>
</div>
</div>
<br>
<div class="row">
<div class="col-lg-10">
<label><?php echo ucfirst($this->p->t('global', 'nachricht')).':'; ?></label>
<?php
$body = '';
if (isset($message))
{
$body = $message->body;
}
?>
<textarea id="bodyTextArea" name="body"><?php echo $body; ?></textarea>
</div>
<?php
if (isset($variables))
{
?>
<div class="col-lg-2">
<div class="form-group">
<label><?php echo ucfirst($this->p->t('ui', 'felder')).':'; ?></label>
<select id="variables" class="form-control" size="14" multiple="multiple">
<?php
foreach ($variables as $key => $val)
{
?>
<option value="<?php echo $key; ?>"><?php echo $val; ?></option>
<?php
}
?>
</select>
</div>
</div>
<?php
}
?>
</div>
<br>
<div class="row">
<div class="col-xs-3">
<?php
echo $this->widgetlib->widget(
'Vorlage_widget',
array('oe_kurzbz' => $oe_kurzbz, 'isAdmin' => $isAdmin),
array('name' => 'vorlage', 'id' => 'vorlageDnD')
);
?>
</div>
<div class="col-lg-7 col-xs-9 text-right">
<button id="sendButton" class="btn btn-default" type="button"><?php echo $this->p->t('ui', 'senden'); ?></button>
</div>
</div>
<?php
if (isset($recipients) && count($recipients) > 0)
{
?>
<hr>
<div class="row">
<div class="col-lg-12">
<label><?php echo ucfirst($this->p->t('global', 'vorschau')).':'; ?></label>
</div>
</div>
<div class="well">
<div class="row">
<div class="col-lg-5">
<div class="form-grop form-inline">
<label><?php echo ucfirst($this->p->t('global', 'empfaenger')).': '; ?></label>
<select id="recipients">
<?php
if (count($recipients) > 1) echo '<option value="-1">Select...</option>';
foreach ($recipients as $receiver)
{
?>
<option value="<?php echo $receiver->person_id; ?>">
<?php echo $receiver->Vorname." ".$receiver->Nachname; ?>
</option>
<?php
}
?>
</select>
&nbsp;
<strong><a href="#" id="refresh">Refresh</a></strong>
</div>
</div>
<div class="col-lg-2">
</div>
</div>
<br>
<textarea id="tinymcePreview"></textarea>
</div>
<?php
}
?>
<?php
foreach ($recipients as $receiver)
{
echo '<input type="hidden" name="persons[]" value="'.$receiver->person_id.'">'."\n";
}
?>
<?php
if (isset($message))
{
?>
<input type="hidden" name="relationmessage_id" value="<?php echo $message->message_id; ?>">
<?php
}
?>
</form>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
@@ -1,63 +0,0 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'MessageReply',
'jquery' => true,
'bootstrap' => true,
'fontawesome' => true,
'tinymce' => true,
'sbadmintemplate' => true,
'customCSSs' => array('public/css/sbadmin2/admintemplate_contentonly.css', 'public/css/messaging/messageWrite.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/messaging/messageWriteReply.js')
)
);
?>
<body>
<?php
$href = site_url('/ViewMessage/sendReply');
?>
<div id="wrapper">
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">Send message</h3>
</div>
</div>
<form id="sendForm" method="post" action="<?php echo $href; ?>">
<?php
$this->load->view('system/messages/messageForm.php');
for ($i = 0; $i < count($receivers); $i++)
{
$receiver = $receivers[$i];
$receiverid = $receiver->person_id;
$fieldname = 'persons[]';
echo '<input type="hidden" name="'.$fieldname.'" value="'.$receiverid.'">'."\n";
}
?>
<?php
if (isset($message))
{
?>
<input type="hidden" name="relationmessage_id" value="<?php echo $message->message_id; ?>">
<?php
}
if (isset($token))
{
?>
<input type="hidden" name="token" value="<?php echo $token; ?>">
<?php
}
?>
</form>
</div>
</div>
</div>
</body>
<?php $this->load->view("templates/FHC-Footer"); ?>
+20 -20
View File
@@ -1,20 +1,20 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Phrasen</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset rows="30%,*">
<frame src="Phrases/table" id="PhrasesTop" name="PhrasesTop" frameborder="0" />
<frame src="Phrases/edit" id="PhrasesBottom" name="PhrasesBottom" frameborder="0" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
<a href="PhrasesList">Use without frames</a>
</body>
</noframes>
</frameset>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<html lang="de_AT">
<head>
<title>VileSci - Phrasen</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<frameset rows="30%,*">
<frame src="Phrases/table" id="PhrasesTop" name="PhrasesTop" frameborder="0" />
<frame src="Phrases/edit" id="PhrasesBottom" name="PhrasesBottom" frameborder="0" />
<noframes>
<body bgcolor="#FFFFFF">
This application works only with a frames-enabled browser.<br />
<a href="PhrasesList">Use without frames</a>
</body>
</noframes>
</frameset>
</html>
@@ -1,17 +1,17 @@
<?php
$this->load->view('templates/header', array('title' => 'PhrasesEdit'));
?>
<div class="row">
<div class="span4">
<h2>Phrase: <?php echo $phrase->phrase_id; ?></h2>
<form method="post" action="../save">
Bezeichnung: <input type="text" name="phrase" value="<?php echo $phrase->phrase; ?>" />
<input type="hidden" name="phrase_id" value="<?php echo $phrase->phrase_id; ?>" />
<button type="submit">Save</button>
</form>
</div>
</div>
</body>
</html>
<?php
$this->load->view('templates/header', array('title' => 'PhrasesEdit'));
?>
<div class="row">
<div class="span4">
<h2>Phrase: <?php echo $phrase->phrase_id; ?></h2>
<form method="post" action="../save">
Bezeichnung: <input type="text" name="phrase" value="<?php echo $phrase->phrase; ?>" />
<input type="hidden" name="phrase_id" value="<?php echo $phrase->phrase_id; ?>" />
<button type="submit">Save</button>
</form>
</div>
</div>
</body>
</html>
@@ -1,54 +1,54 @@
<?php
$this->load->view('templates/header', array('title' => 'PhrasenInhaltList', 'tablesort' => true, 'tableid' => 't1', 'headers' => '5:{sorter:false}'));
?>
<div class="row">
<div class="span4">
<h2>Phrase Inhalt - <?php echo $phrase; ?></h2>
<form method="post" action="../newText" target="PhrasesBottom">
<input type="hidden" name="phrase_id" value="<?php echo $phrase_id; ?>"/>
<button type="submit">Neu</button>
</form>
<table id="t1" class="tablesorter">
<thead>
<tr><th class='table-sortable:default'>ID</th>
<th class='table-sortable:default'>Sprache</th>
<th class='table-sortable:default'>OrgEinheit</th>
<th class='table-sortable:default'>OrgForm</th>
<th class='table-sortable:default'>Text</th>
<th>Beschreibung</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($phrase_inhalt as $v): ?>
<tr><td><a href="../editText/<?php echo $v->phrasentext_id; ?>" target="PhrasesBottom"><?php echo $v->phrasentext_id; ?></a></td>
<td><?php echo $v->sprache; ?></td>
<td><?php echo $v->orgeinheit_kurzbz; ?></td>
<td><?php echo $v->orgform_kurzbz; ?></td>
<td><?php echo $v->text; ?></td>
<td><?php echo $v->description; ?></td>
<td><a href="../editText/<?php echo $v->phrasentext_id; ?>" target="PhrasesBottom">edit</a></td>
<td>
<a href="javascript:void(0);" onclick="delPhrasentext(<?php echo $v->phrasentext_id; ?>, <?php echo $phrase_id; ?>)">delete</a>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
<script>
function delPhrasentext(id,pid)
{
var c = confirm("Wirklich löschen?");
if (c == true)
window.location.href = "../deltext/"+id+"/"+pid;
}
</script>
<?php
$this->load->view('templates/footer');
?>
<?php
$this->load->view('templates/header', array('title' => 'PhrasenInhaltList', 'tablesort' => true, 'tableid' => 't1', 'headers' => '5:{sorter:false}'));
?>
<div class="row">
<div class="span4">
<h2>Phrase Inhalt - <?php echo $phrase; ?></h2>
<form method="post" action="../newText" target="PhrasesBottom">
<input type="hidden" name="phrase_id" value="<?php echo $phrase_id; ?>"/>
<button type="submit">Neu</button>
</form>
<table id="t1" class="tablesorter">
<thead>
<tr><th class='table-sortable:default'>ID</th>
<th class='table-sortable:default'>Sprache</th>
<th class='table-sortable:default'>OrgEinheit</th>
<th class='table-sortable:default'>OrgForm</th>
<th class='table-sortable:default'>Text</th>
<th>Beschreibung</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($phrase_inhalt as $v): ?>
<tr><td><a href="../editText/<?php echo $v->phrasentext_id; ?>" target="PhrasesBottom"><?php echo $v->phrasentext_id; ?></a></td>
<td><?php echo $v->sprache; ?></td>
<td><?php echo $v->orgeinheit_kurzbz; ?></td>
<td><?php echo $v->orgform_kurzbz; ?></td>
<td><?php echo $v->text; ?></td>
<td><?php echo $v->description; ?></td>
<td><a href="../editText/<?php echo $v->phrasentext_id; ?>" target="PhrasesBottom">edit</a></td>
<td>
<a href="javascript:void(0);" onclick="delPhrasentext(<?php echo $v->phrasentext_id; ?>, <?php echo $phrase_id; ?>)">delete</a>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</div>
</div>
<script>
function delPhrasentext(id,pid)
{
var c = confirm("Wirklich löschen?");
if (c == true)
window.location.href = "../deltext/"+id+"/"+pid;
}
</script>
<?php
$this->load->view('templates/footer');
?>

Some files were not shown because too many files have changed in this diff Show More