mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Syncro für Berechtigungen WaWi->FHC
This commit is contained in:
@@ -805,6 +805,9 @@ class benutzerberechtigung extends basis_db
|
||||
|
||||
foreach ($this->berechtigungen as $b)
|
||||
{
|
||||
if(!mb_strstr($b->berechtigung_kurzbz,'wawi/'))
|
||||
continue;
|
||||
|
||||
if (($berechtigung_kurzbz==$b->berechtigung_kurzbz || $berechtigung_kurzbz==null || mb_substr($berechtigung_kurzbz,0,mb_strpos($berechtigung_kurzbz,':'))==$b->berechtigung_kurzbz)
|
||||
&& (($timestamp>$b->starttimestamp || $b->starttimestamp==null) && ($timestamp<$b->endetimestamp || $b->endetimestamp==null)))
|
||||
{
|
||||
@@ -826,7 +829,7 @@ class benutzerberechtigung extends basis_db
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!is_null($b->oe_kurzbz))
|
||||
if($b->oe_kurzbz!='')
|
||||
{
|
||||
$childoes = $oe->getChilds($b->oe_kurzbz);
|
||||
foreach($childoes as $row)
|
||||
@@ -869,7 +872,7 @@ class benutzerberechtigung extends basis_db
|
||||
if(count($not)>0)
|
||||
$qry.=" AND oe_kurzbz NOT IN(".$this->implode4SQL($not).")";
|
||||
}
|
||||
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
|
||||
@@ -39,6 +39,69 @@ class berechtigung extends basis_db
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt eine Berechtigung
|
||||
* @param $berechtigung_kurzbz
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function load($berechtigung_kurzbz)
|
||||
{
|
||||
$qry = "SELECT * FROM system.tbl_berechtigung WHERE berechtigung_kurzbz='".addslashes($berechtigung_kurzbz)."'";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$this->berechtigung_kurzbz=$row->berechtigung_kurzbz;
|
||||
$this->beschreibung = $row->beschreibung;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Eintrag wurde nicht gefunden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert eine Berechtigung
|
||||
*
|
||||
*/
|
||||
public function save($new=null)
|
||||
{
|
||||
if(is_null($new))
|
||||
$new = $this->new;
|
||||
|
||||
if($new)
|
||||
{
|
||||
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES(".
|
||||
$this->addslashes($this->berechtigung_kurzbz).','.
|
||||
$this->addslashes($this->beschreibung).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = 'UPDATE system.tbl_berechtigung
|
||||
SET beschreibung='.$this->addslashes($this->beschreibung).'
|
||||
WHERE berechtigung_kurzbz='.$this->addslashes($this->berechtigung_kurzbz).';';
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern: '.$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle BerechtigungsRollen
|
||||
* @return true wenn erfolgreich, false im Fehlerfall
|
||||
|
||||
@@ -1593,7 +1593,6 @@ if(!@$db->db_query('SELECT * FROM wawi.tbl_konto LIMIT 1'))
|
||||
GRANT SELECT, UPDATE ON SEQUENCE wawi.seq_bestellung_bestellung_id TO wawi;
|
||||
GRANT SELECT, UPDATE ON SEQUENCE wawi.seq_bestelldetail_bestelldetail_id TO wawi;
|
||||
|
||||
|
||||
-- INDEX
|
||||
|
||||
CREATE INDEX idx_bestelldetail_bestellung_id ON wawi.tbl_bestelldetail (bestellung_id);
|
||||
|
||||
@@ -0,0 +1,276 @@
|
||||
<?php
|
||||
/* Copyright (C) 2010 FH Technikum Wien
|
||||
*
|
||||
* 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: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Karl Burkhart <karl.burkhart@technikum-wien.at>.
|
||||
*/
|
||||
/**
|
||||
* Syncronisiert die Aufteilung von WaWi DB in FHComplete DB
|
||||
*/
|
||||
require_once('../../config/wawi.config.inc.php');
|
||||
require_once('../../include/basis_db.class.php');
|
||||
require_once('../../include/mail.class.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/berechtigung.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Herstellen der Datenbankverbindung');
|
||||
|
||||
if (!$conn_wawi = pg_pconnect(CONN_STRING_WAWI))
|
||||
die('Es konnte keine Verbindung zum Server aufgebaut werden. *** File:='.__FILE__.' Line:='.__LINE__."\n");
|
||||
|
||||
$error_log='';
|
||||
$update_log='';
|
||||
$anzahl=0;
|
||||
$anzahl_insert=0;
|
||||
$anzahl_update=0;
|
||||
$anzahl_delete=0;
|
||||
$anzahl_fehler=0;
|
||||
$starttime=date("d.m.Y H:i:s");
|
||||
|
||||
|
||||
checkBerechtigung('wawi/bestellung','Bestellungen verwalten');
|
||||
checkBerechtigung('wawi/rechnung','Rechnungen verwalten');
|
||||
checkBerechtigung('wawi/konto','Konten verwalten');
|
||||
checkBerechtigung('wawi/kostenstelle','Kostenstellen verwalten');
|
||||
checkBerechtigung('wawi/freigabe','Freigeben von Bestellungen');
|
||||
checkBerechtigung('wawi/rechnung_freigeben','Freigeben von Rechnungen');
|
||||
checkBerechtigung('wawi/rechnung_transfer','Setzen des TransferDatums von Rechnungen');
|
||||
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title>Synchro - WaWi -> FAS - Berechtigung</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
/*
|
||||
* Berechtigungen holen, Spalten:
|
||||
* username_neu, lesen, schreiben, freigeben, verwalten, kostenstelle_id, oe_kurzbz
|
||||
*
|
||||
* Direkte Kostenstellenzuordnung
|
||||
* UNION
|
||||
* Kostenstellenzuordnung über Gruppen
|
||||
* UNION
|
||||
* Studiengangszuordnung über Gruppen
|
||||
* UNION
|
||||
* Direkte Studiengangszuordnung
|
||||
*/
|
||||
$qry="
|
||||
SET CLIENT_ENCODING TO UNICODE;
|
||||
|
||||
SELECT
|
||||
username_neu, lesen, schreiben, freigeben, verwalten, kostenstelle_id, null as oe_kurzbz
|
||||
FROM
|
||||
public.kostenstelle_benutzer
|
||||
JOIN public.benutzer USING(user_id)
|
||||
UNION
|
||||
SELECT
|
||||
username_neu, lesen, schreiben, freigeben, verwalten, kostenstelle_id, null as oe_kurzbz
|
||||
FROM
|
||||
public.kostenstelle_gruppe
|
||||
JOIN public.gruppe_benutzer USING(gruppe_id)
|
||||
JOIN public.benutzer USING(user_id)
|
||||
UNION
|
||||
SELECT
|
||||
username_neu, lesen, schreiben, freigeben, verwalten, null as kostenstelle_id, oe_kurzbz
|
||||
FROM
|
||||
public.studiengang_gruppe
|
||||
JOIN public.gruppe_benutzer USING(gruppe_id)
|
||||
JOIN public.benutzer USING(user_id)
|
||||
JOIN public.studiengang USING(studiengang_id)
|
||||
UNION
|
||||
SELECT
|
||||
username_neu, lesen, schreiben, freigeben, verwalten, null as kostenstelle_id, oe_kurzbz
|
||||
FROM
|
||||
public.studiengang_benutzer
|
||||
JOIN public.benutzer USING(user_id)
|
||||
JOIN public.studiengang USING(studiengang_id)
|
||||
";
|
||||
if($result=pg_query($conn_wawi, $qry))
|
||||
{
|
||||
|
||||
$anzahl=pg_num_rows($result);
|
||||
|
||||
while($row = pg_fetch_object($result))
|
||||
{
|
||||
if($row->username_neu=='test')
|
||||
continue;
|
||||
|
||||
if($row->freigeben=='t' && $row->kostenstelle_id!='')
|
||||
{
|
||||
// wawi/freigabe suid kostenstelle_id
|
||||
addBerechtigung($row->username_neu, 'wawi/freigabe', 'suid', null, $row->kostenstelle_id);
|
||||
}
|
||||
|
||||
$art='';
|
||||
if($row->lesen=='t')
|
||||
$art='s';
|
||||
if($row->schreiben=='t')
|
||||
$art.='uid';
|
||||
|
||||
if($art!='')
|
||||
{
|
||||
// wawi/bestellung $art $kostenstelle_id/$oe_kurzbz
|
||||
addBerechtigung($row->username_neu, 'wawi/bestellung', $art, $row->oe_kurzbz, $row->kostenstelle_id);
|
||||
|
||||
// wawi/rechnung $art $kostenstelle_id/$oe_kurzbz
|
||||
addBerechtigung($row->username_neu, 'wawi/rechnung', $art, $row->oe_kurzbz, $row->kostenstelle_id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Permissions aufgrund des Feldes perms
|
||||
*/
|
||||
|
||||
//GST
|
||||
$qry = "SELECT username_neu FROM public.benutzer WHERE perms='gst'";
|
||||
if($result = pg_query($conn_wawi, $qry))
|
||||
{
|
||||
while($row = pg_fetch_object($result))
|
||||
{
|
||||
addBerechtigung($row->username_neu, 'wawi/freigabe', 'suid', 'gst', null);
|
||||
}
|
||||
}
|
||||
|
||||
//REK
|
||||
$qry = "SELECT username_neu FROM public.benutzer WHERE perms='rek'";
|
||||
if($result = pg_query($conn_wawi, $qry))
|
||||
{
|
||||
while($row = pg_fetch_object($result))
|
||||
{
|
||||
addBerechtigung($row->username_neu, 'wawi/freigabe', 'suid', 'etw', null);
|
||||
}
|
||||
}
|
||||
|
||||
//GMBH
|
||||
$qry = "SELECT username_neu FROM public.benutzer WHERE perms='gmb'";
|
||||
if($result = pg_query($conn_wawi, $qry))
|
||||
{
|
||||
while($row = pg_fetch_object($result))
|
||||
{
|
||||
addBerechtigung($row->username_neu, 'wawi/freigabe', 'suid', 'gmbh', null);
|
||||
}
|
||||
}
|
||||
|
||||
//Admin
|
||||
$qry = "SELECT username_neu FROM public.benutzer WHERE perms='admin'";
|
||||
if($result = pg_query($conn_wawi, $qry))
|
||||
{
|
||||
while($row = pg_fetch_object($result))
|
||||
{
|
||||
addBerechtigung($row->username_neu, 'wawi/konto', 'suid', 'gst', null);
|
||||
addBerechtigung($row->username_neu, 'wawi/kostenstelle', 'suid', 'gst', null);
|
||||
addBerechtigung($row->username_neu, 'wawi/bestellung', 'suid', 'gst', null);
|
||||
addBerechtigung($row->username_neu, 'wawi/rechnung', 'suid', 'gst', null);
|
||||
addBerechtigung($row->username_neu, 'wawi/rechnung_transfer', 'suid', 'gst', null);
|
||||
addBerechtigung($row->username_neu, 'wawi/rechnung_freigeben', 'suid', 'gst', null);
|
||||
}
|
||||
}
|
||||
//Mail versenden
|
||||
$statistik="Berechtigung Sync\n--------------\n";
|
||||
$statistik.="Beginn: ".$starttime." von ".DB_NAME." - Anzahl Einträge: ".$anzahl."\n\n";
|
||||
$statistik.="\nEingefügte Datensätze: $anzahl_insert";
|
||||
$statistik.="\nGeänderte Datensätze: $anzahl_update";
|
||||
$statistik.="\nFehler: $anzahl_fehler\n";
|
||||
|
||||
$synced=$statistik.$error_log.$update_log;
|
||||
$mail = new mail(MAIL_ADMIN, "vilesci@".DOMAIN, "SYNC Berechtigung von ".DB_NAME, $synced);
|
||||
$mail->setReplyTo("vilesci@".DOMAIN);
|
||||
if(!$mail->send())
|
||||
{
|
||||
echo "<font color=\"#FF0000\">Fehler beim Versenden des Durchführungs-Mails!</font><br>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob die Berechtigung (Benutzerrolle) vorhanden ist. Wenn nicht wird diese Angelegt
|
||||
* @param $username
|
||||
* @param $berechtigung_kurbz
|
||||
* @param $art
|
||||
* @param $oe_kurzbz
|
||||
* @param $kostenstelle_id
|
||||
*/
|
||||
function addBerechtigung($username, $berechtigung_kurzbz, $art, $oe_kurzbz, $kostenstelle_id)
|
||||
{
|
||||
global $error_log, $anzahl_fehler, $anzahl_insert, $db;
|
||||
|
||||
$qry = "SELECT * FROM system.tbl_benutzerrolle
|
||||
WHERE
|
||||
uid='".addslashes($username)."'
|
||||
AND berechtigung_kurzbz='".addslashes($berechtigung_kurzbz)."'";
|
||||
if($oe_kurzbz!='')
|
||||
$qry.=" AND oe_kurzbz='".addslashes($oe_kurzbz)."'";
|
||||
if($kostenstelle_id!='')
|
||||
$qry.=" AND kostenstelle_id='".addslashes($kostenstelle_id)."'";
|
||||
if($art!='')
|
||||
$qry.=" AND art='".addslashes($art)."'";
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
if($db->db_num_rows($result)==0)
|
||||
{
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->uid = $username;
|
||||
$rechte->berechtigung_kurzbz = $berechtigung_kurzbz;
|
||||
$rechte->art = $art;
|
||||
$rechte->oe_kurzbz = $oe_kurzbz;
|
||||
$rechte->kostenstelle_id = $kostenstelle_id;
|
||||
$rechte->insertamum = date('Y-m-d H:i:s');
|
||||
$rechte->inservon = 'Syncro';
|
||||
$rechte->new = true;
|
||||
|
||||
if($rechte->save())
|
||||
{
|
||||
$anzahl_insert++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$anzahl_fehler++;
|
||||
$error_log.="\n".$rechte->errormsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob eine Berechtigung vorhanden ist und legt diese ggf an
|
||||
* @param $berechtigung_kurzbz
|
||||
* @param $beschreibung
|
||||
*/
|
||||
function checkBerechtigung($berechtigung_kurzbz, $beschreibung)
|
||||
{
|
||||
global $error_log, $anzahl_fehler;
|
||||
|
||||
$berechtigung = new berechtigung();
|
||||
|
||||
if(!$berechtigung->load($berechtigung_kurzbz))
|
||||
{
|
||||
$berechtigung->berechtigung_kurzbz=$berechtigung_kurzbz;
|
||||
$berechtigung->beschreibung=$beschreibung;
|
||||
$berechtigung->new = true;
|
||||
|
||||
if(!$berechtigung->save())
|
||||
{
|
||||
$error_log.="\nFehler beim Anlegen der Berechtigung wawi/bestellung";
|
||||
$anzahl_fehler++;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
+1
-1
@@ -356,7 +356,7 @@ elseif($aktion == 'new')
|
||||
|
||||
foreach($kostenstelle->result as $row)
|
||||
{
|
||||
echo '<option value="'.$row->kostenstelle_id.'">'.$row->bezeichnung.'</option>';
|
||||
echo '<option value="'.$row->kostenstelle_id.'">'.$row->bezeichnung.' ('.$row->kurzbz.') - '.mb_strtoupper($row->oe_kurzbz).'</option>';
|
||||
}
|
||||
echo '</SELECT>';
|
||||
echo '<input type="submit" name="submit" value="Weiter"/>';
|
||||
|
||||
Reference in New Issue
Block a user