This commit is contained in:
Gerry Raab
2017-09-07 22:16:03 +02:00
6 changed files with 243 additions and 36 deletions
+1
View File
@@ -13,6 +13,7 @@
- **[FAS]** Bei Statuswechsel von Studierenden können Gründe für den Statuswechsel angegeben werden
- **[ADDONS]** Addons können Menüpunkte im Vilesci anpassen
- **[ADDONS]** Addons können Noten für die Gesamtnote vorschlagen
- **[CORE]** UserDefinedFields
### CHANGED
- **[CORE]** Berechtigungsprüfung wurde angepasst damit deaktivierte Benutzer keine Berechtigungen mehr haben
+20 -4
View File
@@ -422,7 +422,8 @@ class MessageLib
for ($i = 0; $i < count($result->retval) && $sent; $i++)
{
// If the person has an email account
if (!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '')
if ((!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '')
|| (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != ''))
{
$href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[0]->token;
// Using a template for the html email body
@@ -461,10 +462,17 @@ class MessageLib
{
$sender = $result->retval[0]->sender;
}
$receiverContanct = $result->retval[$i]->receiver;
if (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != '')
{
$receiverContanct = $result->retval[$i]->employeecontact.'@'.DOMAIN;
}
// Sending email
$sent = $this->ci->maillib->send(
$sender,
$result->retval[$i]->receiver,
$receiverContanct,
$result->retval[$i]->subject,
$body,
null,
@@ -546,6 +554,7 @@ class MessageLib
null,
$message_id
);
// Checks if errors were occurred
if (isSuccess($result))
{
@@ -553,7 +562,8 @@ class MessageLib
if (is_array($result->retval) && count($result->retval) > 0)
{
// If the person has an email account
if (!is_null($result->retval[0]->receiver) && $result->retval[0]->receiver != '')
if ((!is_null($result->retval[0]->receiver) && $result->retval[0]->receiver != '')
|| (!is_null($result->retval[0]->employeecontact) && $result->retval[0]->employeecontact != ''))
{
// If it is required use a multi-part message in MIME format
if ($multiPartMime === true)
@@ -602,10 +612,16 @@ class MessageLib
$sender = $result->retval[0]->sender;
}
$receiverContanct = $result->retval[0]->receiver;
if (!is_null($result->retval[0]->employeecontact) && $result->retval[0]->employeecontact != '')
{
$receiverContanct = $result->retval[0]->employeecontact.'@'.DOMAIN;
}
// Sending email
$sent = $this->ci->maillib->send(
$sender,
$result->retval[0]->receiver,
$receiverContanct,
is_null($subject) ? $result->retval[0]->subject : $subject, // if parameter subject is not null, use it!
$bodyMsg,
null,
+37 -30
View File
@@ -12,7 +12,7 @@ class Recipient_model extends DB_Model
$this->pk = array('person_id', 'message_id');
$this->hasSequence = false;
}
/**
* Get data for a received message
*/
@@ -27,7 +27,7 @@ class Recipient_model extends DB_Model
return $ent;
if (isError($ent = $this->isEntitled('public.tbl_msg_recipient', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)))
return $ent;
$query = 'SELECT mr.message_id,
mr.person_id,
mm.subject,
@@ -43,13 +43,13 @@ class Recipient_model extends DB_Model
SELECT person_id, kontakt FROM public.tbl_kontakt WHERE kontakttyp = \'email\'
) ks ON (ks.person_id = mr.person_id)
WHERE mr.message_id = ? AND mr.person_id = ?';
$parametersArray = array($message_id, $person_id);
// Get data of the messages to sent
return $this->execQuery($query, $parametersArray);
}
/**
* Get a received message identified by token
*/
@@ -62,7 +62,7 @@ class Recipient_model extends DB_Model
return $ent;
if (isError($ent = $this->isEntitled('public.tbl_msg_status', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)))
return $ent;
$sql = 'SELECT r.message_id,
m.person_id as sender_id,
r.person_id as receiver_id,
@@ -80,10 +80,10 @@ class Recipient_model extends DB_Model
) s ON (r.message_id = s.message_id AND r.person_id = s.person_id)
WHERE r.token = ?
LIMIT 1';
return $this->execQuery($sql, array(MSG_STATUS_DELETED, $token));
}
/**
* Get all received messages for a person identified by person_id
*/
@@ -98,7 +98,7 @@ class Recipient_model extends DB_Model
return $ent;
if (isError($ent = $this->isEntitled('public.tbl_msg_status', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)))
return $ent;
$sql = 'SELECT DISTINCT ON (r.message_id) r.message_id,
m.person_id,
m.subject,
@@ -126,9 +126,9 @@ class Recipient_model extends DB_Model
) s ON (m.message_id = s.message_id AND r.person_id = s.person_id)
WHERE r.person_id = ?
ORDER BY r.message_id DESC, s.status DESC';
$parametersArray = array($person_id);
if ($all == 'true')
{
$sql = sprintf($sql, '');
@@ -138,10 +138,10 @@ class Recipient_model extends DB_Model
array_push($parametersArray, $person_id, $person_id);
$sql = sprintf($sql, 'WHERE person_id = ? AND message_id NOT IN (SELECT message_id FROM public.tbl_msg_status WHERE status >= 3 AND person_id = ?)');
}
return $this->execQuery($sql, $parametersArray);
}
/**
* Get all received messages for a person identified by uid
*/
@@ -188,18 +188,18 @@ class Recipient_model extends DB_Model
SELECT * FROM public.tbl_msg_status ORDER BY insertamum DESC LIMIT 1
) s ON (r.message_id = s.message_id AND r.person_id = s.person_id)
WHERE b.uid = ?';
if (! $all)
$sql .= ' AND (status < 3 OR status IS NULL)';
return $this->execQuery($sql, array($uid));
}
/**
* getMessages
*
*
* 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
@@ -214,10 +214,11 @@ class Recipient_model extends DB_Model
return $ent;
if (isError($ent = $this->isEntitled('public.tbl_kontakt', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)))
return $ent;
$query = 'SELECT mm.message_id,
ks.kontakt as sender,
kr.kontakt as receiver,
mu.mitarbeiter_uid as employeeContact,
mr.person_id as receiver_id,
mr.token,
mm.subject,
@@ -229,10 +230,16 @@ class Recipient_model extends DB_Model
) 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)';
) 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)';
$parametersArray = array($kontaktType, $kontaktType);
if (is_null($sent) || $sent == '')
{
$query .= ' WHERE mr.sent IS NULL';
@@ -242,24 +249,24 @@ class Recipient_model extends DB_Model
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);
}
/**
* Get all unread messages for a person identified by person_id
*/
@@ -270,7 +277,7 @@ class Recipient_model extends DB_Model
return $ent;
if (isError($ent = $this->isEntitled('public.tbl_msg_status', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR)))
return $ent;
$sql = 'SELECT COUNT(r.message_id) AS unreadMessages
FROM public.tbl_msg_recipient r JOIN public.tbl_msg_status s
ON (r.message_id = s.message_id AND r.person_id = s.person_id)
@@ -283,9 +290,9 @@ class Recipient_model extends DB_Model
WHERE r.person_id = ?
AND s.status > ?
)';
$parametersArray = array($person_id, MSG_STATUS_UNREAD, $person_id, MSG_STATUS_UNREAD);
return $this->execQuery($sql, $parametersArray);
}
}
+1 -2
View File
@@ -168,10 +168,9 @@ $menu=array
'Kartenverwaltung'=>array('name'=>'Kartenverwaltung','link'=>'fhausweis/kartenverwaltung.php','target'=>'main'),
'KarteZuweisen'=>array('name'=>'Karte zuweisen','link'=>'fhausweis/kartezuweisen.php','target'=>'main'),
'Kartentausch'=>array('name'=>'Kartentausch','link'=>'fhausweis/kartentausch.php','target'=>'main'),
'Kartenausgabe'=>array('name'=>'Kartenausgabe','link'=>'fhausweis/kartenausgabe.php','target'=>'main'),
'Verlaengerung'=>array('name'=>'Verlängerung','link'=>'fhausweis/verlaengerung.php','target'=>'main'),
'Suche'=>array('name'=>'Suche','link'=>'fhausweis/search.php','target'=>'main'),
'Synchronisation'=>array('name'=>'Syncronisation', 'link'=>'stammdaten/imexport/zutrittskarten/index.html', 'target'=>'main'),
'Korrektur'=>array('name'=>'Kartenkorrektur','link'=>'fhausweis/kartenkorrektur.php','target'=>'main')
)
),
'Wartung'=> array
+28
View File
@@ -402,6 +402,34 @@ if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname =
}
}
// FOREIGN KEY tbl_phrasentext_orgeinheit_kurzbz_fkey: system.tbl_phrasentext.orgeinheit_kurzbz references public.tbl_organisationseinheit.orgeinheit_kurzbz
if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_phrasentext_orgeinheit_kurzbz_fkey'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "ALTER TABLE system.tbl_phrasentext ADD CONSTRAINT tbl_phrasentext_orgeinheit_kurzbz_fkey FOREIGN KEY (orgeinheit_kurzbz) REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;";
if (!$db->db_query($qry))
echo '<strong>system.tbl_phrasentext: '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_phrasentext: added foreign key on column orgeinheit_kurzbz referenced to public.tbl_organisationseinheit(orgeinheit_kurzbz)';
}
}
// FOREIGN KEY tbl_phrasentext_orgform_kurzbz_fkey: system.tbl_phrasentext.orgform_kurzbz references bis.tbl_orgform.orgform_kurzbz
if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_phrasentext_orgform_kurzbz_fkey'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "ALTER TABLE system.tbl_phrasentext ADD CONSTRAINT tbl_phrasentext_orgform_kurzbz_fkey FOREIGN KEY (orgform_kurzbz) REFERENCES bis.tbl_orgform(orgform_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;";
if (!$db->db_query($qry))
echo '<strong>system.tbl_phrasentext: '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_phrasentext: added foreign key on column orgform_kurzbz referenced to bis.tbl_orgform(orgform_kurzbz)';
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
+156
View File
@@ -0,0 +1,156 @@
<?php
/* Copyright (C) 2017 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
/**
* Gui zum aktivieren der Zutrittskarte
* Hier wird die neue Karte einmal über den Kartenleser gezogen zum das Ausgabedatum zu setzen
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/student.class.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/betriebsmittel.class.php');
require_once('../../include/betriebsmittelperson.class.php');
require_once('../../include/benutzerberechtigung.class.php');
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
echo '<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="../../skin/fhcomplete.css" type="text/css">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../skin/jquery.css" type="text/css"/>
<script type="text/javascript" src="../../include/js/jquery.js"></script>
<title>Kartentausch</title>
</head>
<body>
<h2>Zutrittskarte - Ausgabe</h2>';
if(!$rechte->isBerechtigt('basis/fhausweis', 'suid'))
die('Sie haben keine Berechtigung für diese Seite');
$db = new basis_db();
$kartennummer = (isset($_POST['kartennummer'])?$_POST['kartennummer']:'');
$action=(isset($_POST['action'])?$_POST['action']:'');
if ($action == 'kartenausgabe')
{
$bmp = new betriebsmittelperson();
if ($bmp->getKartenzuordnung($kartennummer))
{
if ($bmp->uid != '')
{
$karten_user = $bmp->uid;
$benutzer = new benutzer();
if(!$benutzer->load($karten_user))
{
echo '<span class="error">Fehler beim Laden des Benutzers</span>';
}
else
{
$error=false;
//Neue Karte aktivieren
$bmp = new betriebsmittelperson();
if ($bmp->getKartenzuordnungPerson($benutzer->person_id, $kartennummer))
{
if ($bmp->ausgegebenam == '')
{
$bmp->ausgegebenam=date('Y-m-d');
$bmp->updateamum = date('Y-m-d H:i:s');
$bmp->updatevon = $uid;
if(!$bmp->save(false))
{
echo '<span class="error">Fehler beim Tauschen: '.$bmp->errormsg.'</span>';
$error=true;
}
else
echo '<span class="ok">Karte wurde erfolgreich aktiviert.</span><br>
<table>
<tr>
<td>
<img src="../../content/bild.php?src=person&person_id='.$benutzer->person_id.'"
height="100px" width="75px"/>
</td>
<td>
Vorname: '.$benutzer->vorname.'<br>
Nachname: '.$benutzer->nachname.'<br>
UID: <b>'.$benutzer->uid.'<br>
</td>
</tr>
</table>';
}
else
{
echo '<span>Karte wurde bereits am '.$bmp->ausgegebenam.' aktiviert</span>';
}
}
else
{
echo '
<span class="error">
Fehler beim Tauschen: Die neue Karte wurde dieser
Person noch nicht zugeordnet ('.$benutzer->uid.' '.$kartennummer.')
</span>';
$error = true;
}
}
}
else
{
echo '<span class="error">Diese Karte ist derzeit nicht zugewiesen</span>';
}
}
else
{
echo '<span class="error">Diese Karte ist derzeit nicht zugewiesen</span>';
}
echo '<br><hr><br>';
}
echo '
Ziehen Sie die neue Karte über den Hitag Kartenleser um die Karte zu aktivieren:
<script type="text/javascript">
$(document).ready(function()
{
$("#kartennummer").val("");
$("#kartennummer").focus();
});
</script>
<br><br>
<form action="'.$_SERVER['PHP_SELF'].'" METHOD="POST">
<input type="hidden" name="action" value="kartenausgabe" />
Kartennummer:
<input type="text" id="kartennummer" name="kartennummer"/>
<input type="submit" name="ausgeben" value="Ausgeben" />
</form>
';
echo '</body>
</html>';
?>