Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2017-12-20 10:38:57 +01:00
73 changed files with 5327 additions and 630 deletions
+1
View File
@@ -19,6 +19,7 @@
- **[CORE]** Berechtigungsprüfung wurde angepasst damit deaktivierte Benutzer keine Berechtigungen mehr haben
- **[FAS]** Mitarbeiterexport exportiert jetzt nur noch die markierten Personen
- **[CORE]** Has many as possible javascripts and css present in the repository were removed. Their lack is overcome by the packages in the composer. In the meanwhile also the versions were updated
- **[CIS]** Die Fotoliste wird jetzt mit unoconv erstellt. Die bestehende Vorlage für den Dokumentenexport muss hier angepasst werden
### Updateinfo
- **[CORE]** Infoscreen wurde umbenannt (informationsbildschirm.php)
+2
View File
@@ -198,6 +198,7 @@ $config['fhc_acl'] = array
'system.tbl_appdaten' => 'system/appdaten',
'system.tbl_benutzerrolle' => 'basis/benutzerrolle',
'system.tbl_berechtigung' => 'basis/berechtigung',
'system.tbl_filters' => 'system/filters',
'system.tbl_cronjob' => 'basis/cronjob',
'system.tbl_phrase' => 'system/phrase',
'system.tbl_phrasentext' => 'system/phrase',
@@ -209,6 +210,7 @@ $config['fhc_acl'] = array
'system.tbl_webservicetyp' => 'basis/webservicetyp',
'system.tbl_udf' => 'system/udf',
'system.tbl_extensions' => 'system/extensions',
'system.tbl_log' => 'basis/log',
'testtool.tbl_ablauf' => 'basis/ablauf',
'testtool.tbl_antwort' => 'basis/antwort',
'testtool.tbl_frage' => 'basis/frage',
@@ -0,0 +1,39 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class InfoCenter extends VileSci_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('WidgetLib');
}
/**
*
*/
public function index()
{
$listFiltersSent = array(
'Sent 1' => 100,
'Sent 2' => 200,
'Sent 3' => 300
);
$listFiltersNotSent = array(
'Not Sent 1' => 400,
'Not Sent 2' => 500,
'Not Sent 3' => 600
);
$this->load->view(
'system/infocenter/infocenter.php',
array(
'listFiltersSent' => $listFiltersSent,
'listFiltersNotSent' => $listFiltersNotSent
)
);
}
}
@@ -0,0 +1,456 @@
<?php
if (! defined("BASEPATH")) exit("No direct script access allowed");
class InfocenterDetails extends VileSci_Controller
{
/**
* constructor
*/
public function __construct()
{
parent::__construct();
// Load models
$this->load->model('person/person_model', 'PersonModel');
$this->load->model('person/kontakt_model', 'KontaktModel');
$this->load->model('person/adresse_model', 'AdresseModel');
$this->load->model('person/notiz_model', 'NotizModel');
$this->load->model('person/notizzuordnung_model', 'NotizzuordnungModel');
$this->load->model('crm/prestudent_model', 'PrestudentModel');
$this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel');
$this->load->model('crm/akte_model', 'AkteModel');
$this->load->model('crm/statusgrund_model', 'StatusgrundModel');
$this->load->model('codex/nation_model', 'NationModel');
$this->load->model('codex/zgv_model', 'ZgvModel');
$this->load->model('codex/zgvmaster_model', 'ZgvmasterModel');
$this->load->model('organisation/studiengang_model', 'StudiengangModel');
$this->load->library('DmsLib');
$this->load->library('WidgetLib');
$this->load->library('PersonLogLib');
$this->load->helper('fhcauth');
$this->load->helper('url');
$this->app = 'aufnahme';
$this->uid = getAuthUID();
if(!$this->uid)
show_error('user authentification failed');
}
public function index()
{
//TODO error page
}
private function __loadPersonData($person_id)
{
$person = $this->PersonModel->load($person_id);
if ($person->error)
{
show_error($person->retval);
}
$staatsbuergerschaft = $this->NationModel->load($person->retval[0]->staatsbuergerschaft);
if ($staatsbuergerschaft->error)
{
show_error($staatsbuergerschaft->retval);
}
$geburtsnation = $this->NationModel->load($person->retval[0]->geburtsnation);
if ($geburtsnation->error)
{
show_error($geburtsnation->retval);
}
$this->KontaktModel->addDistinct();
$this->KontaktModel->addSelect('kontakttyp, kontakt');
$kontakte = $this->KontaktModel->loadWhere(array('person_id' => $person_id));
if ($kontakte->error)
{
show_error($kontakte->retval);
}
$adresse = $this->AdresseModel->loadWhere(array('person_id' => $person_id));
if ($adresse->error)
{
show_error($adresse->retval);
}
$dokumente = $this->AkteModel->loadWhere(array('person_id' => $person_id));
if ($dokumente->error)
{
show_error($dokumente->retval);
}
$logs = $this->personloglib->getLogs($person_id, $this->app);
foreach($logs as $log)
$log->logdata = json_decode($log->logdata);
$this->NotizzuordnungModel->addSelect('notiz_id');
$notizzuordnung = $this->NotizzuordnungModel->loadWhere(array('person_id' => $person_id));
if ($notizzuordnung->error)
{
show_error($notizzuordnung->retval);
}
$notizen = array();
foreach ($notizzuordnung->retval as $notiz_id)
{
$notiz = $this->NotizModel->load($notiz_id->notiz_id);
$notizen[] = $notiz->retval[0];
}
$data = array (
'person' => $person->retval[0],
'staatsbuergerschaft' => $staatsbuergerschaft->retval[0],
'geburtsnation' => $geburtsnation->retval[0],
'kontakte' => $kontakte->retval,
'adresse' => isset($adresse->retval[0]) ? $adresse->retval[0] : null,
'dokumente' => $dokumente->retval,
'logs' => $logs,
'notizen' => $notizen
);
return $data;
}
private function __loadPrestudentData($person_id)
{
$zgvpruefungen = [];
$prestudenten = $this->PrestudentModel->loadWhere(array('person_id' => $person_id));
if ($prestudenten->error)
{
show_error($prestudenten->retval);
}
foreach ($prestudenten->retval as $prestudent)
{
$zgvpruefung = new stdClass();
$zgvpruefung->prestudent_id = $prestudent->prestudent_id;
//Prestudentstatus
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent->prestudent_id);
if ($lastStatus->error)
{
show_error($lastStatus->retval);
}
$zgvpruefung->prestudentstatus = $lastStatus->retval[0];
// Studiengang
$this->StudiengangModel->addSelect('kurzbzlang, bezeichnung, typ');//TODO need bezeichnung?
$studiengang = $this->StudiengangModel->load($prestudent->studiengang_kz);
if ($studiengang->error)
{
show_error($studiengang->retval);
}
$zgvpruefung->studiengang = $studiengang->retval[0]->kurzbzlang;
$zgvpruefung->studiengangtyp = $studiengang->retval[0]->typ;
// Zgv
if (isset($prestudent->zgv_code))
{
$this->ZgvModel->addSelect('zgv_code, zgv_bez');
$zgv = $this->ZgvModel->load($prestudent->zgv_code);
if ($zgv->error)
{
show_error($zgv->retval);
}
$zgvpruefung->zgv_code = $zgv->retval[0]->zgv_code;
$zgvpruefung->zgv_bez = $zgv->retval[0]->zgv_bez;
}
else
{
$zgvpruefung->zgv_code = null;
$zgvpruefung->zgv_bez = null;
}
$zgvpruefung->zgvort = $prestudent->zgvort;
$zgvpruefung->zgvdatum = $prestudent->zgvdatum;
// Zgv Nation
if (isset($prestudent->zgvnation))
{
$this->NationModel->addSelect('nation_code, kurztext');
$zgvnation = $this->NationModel->load($prestudent->zgvnation);
if ($zgvnation->error)
{
show_error($zgvnation->retval);
}
$zgvpruefung->zgvnation_code = $zgvnation->retval[0]->nation_code;
$zgvpruefung->zgvnation_bez = $zgvnation->retval[0]->kurztext;
}
else
{
$zgvnation = null;
$zgvpruefung->zgvnation_code = null;
$zgvpruefung->zgvnation_bez = null;
}
// Zgv Master
if (isset($prestudent->zgvmas_code))
{
$this->ZgvmasterModel->addSelect('zgvmas_code, zgvmas_bez');
$zgvmas = $this->ZgvmasterModel->load($prestudent->zgvmas_code);
if ($zgvmas->error)
{
show_error($zgvmas->retval);
}
$zgvpruefung->zgvmas_code = $zgvmas->retval[0]->zgvmas_code;
$zgvpruefung->zgvmas_bez = $zgvmas->retval[0]->zgvmas_bez;
}
else
{
$zgvpruefung->zgvmas_code = null;
$zgvpruefung->zgvmas_bez = null;
}
$zgvpruefung->zgvmaort = $prestudent->zgvmaort;
$zgvpruefung->zgvmadatum = $prestudent->zgvmadatum;
// Zgv Master Nation
if (isset($prestudent->zgvmanation))
{
$this->NationModel->addSelect('nation_code, kurztext');
$zgvmanation = $this->NationModel->load($prestudent->zgvmanation);
if ($zgvmanation->error)
{
show_error($zgvmanation->retval);
}
$zgvpruefung->zgvmanation_code = $zgvmanation->retval[0]->nation_code;
$zgvpruefung->zgvmanation_bez = $zgvmanation->retval[0]->kurztext;
}
else
{
$zgvmanation = null;
$zgvpruefung->zgvmanation_code = null;
$zgvpruefung->zgvmanation_bez = null;
}
$zgvpruefungen[] = $zgvpruefung;
}
//TODO replace with widget
$statusgruende = $this->StatusgrundModel->load()->retval;
$data = array (
'zgvpruefungen' => $zgvpruefungen,
'statusgruende' => $statusgruende
);
return $data;
}
public function showDetails($person_id)
{
$persondata = $this->__loadPersonData($person_id);
$prestudentdata = $this->__loadPrestudentData($person_id);
$this->load->view('system/infocenter/infocenterDetails.php', array_merge($persondata, $prestudentdata));
}
public function saveFormalGeprueft()
{
$akte_id = $this->input->get('akte_id');
$formalgeprueft = $this->input->get('formal_geprueft');
$person_id = $this->input->get('person_id');
$akte = $this->AkteModel->load($akte_id);
if ($akte->error)
{
show_error($akte->retval);
}
$timestamp = (isset($formalgeprueft) && $formalgeprueft === 'true')? date('Y-m-d H:i:s') : null;
$this->AkteModel->update($akte_id, array('formal_geprueft_amum' => $timestamp));
//write person log
$this->personloglib->log($person_id, 'Action', array('name' => 'Dokument formal geprüft', 'message' => 'Dokument'.$akte->titel.' formal geprüft, gesetzt auf '.(is_null($timestamp) ? 'NULL' : $timestamp), 'success' => 'true'), $this->app, null, $this->uid);
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id);
}
public function saveZgvPruefung($prestudent_id)
{
// prestudentdata
$studiensemester = $this->input->post('studiensemester') === 'null' ? null : $this->input->post('studiensemester');
$ausbildungssemester = $this->input->post('ausbildungssemester');
// zgvdata
$zgv_code = $this->input->post('zgv') === 'null' ? null : $this->input->post('zgv');
$zgvort = $this->input->post('zgvort');
$zgvdatum = $this->input->post('zgvdatum');
$zgvdatum = empty($zgvdatum) ? null : date_format(date_create($zgvdatum), 'Y-m-d');
$zgvnation_code = $this->input->post('zgvnation') === 'null' ? null : $this->input->post('zgvnation');
//zgvmasterdata
$zgvmas_code = $this->input->post('zgvmas') === 'null' ? null : $this->input->post('zgvmas');
$zgvmaort = $this->input->post('zgvmaort');
$zgvmadatum = $this->input->post('zgvmadatum');
$zgvmadatum = empty($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
$zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
if ($lastStatus->error)
{
show_error($lastStatus->retval);
}
$result = $this->PrestudentstatusModel->update(array('prestudent_id' => $prestudent_id, 'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz, 'ausbildungssemester' => $lastStatus->retval[0]->ausbildungssemester), array('studiensemester_kurzbz' => $studiensemester, 'ausbildungssemester' => $ausbildungssemester));
if ($result->error)
{
show_error($result->retval);
}
$result = $this->PrestudentModel->update($prestudent_id, array('zgv_code' => $zgv_code, 'zgvort' => $zgvort, 'zgvdatum' => $zgvdatum, 'zgvnation' => $zgvnation_code,
'zgvmas_code' => $zgvmas_code, 'zgvmaort' => $zgvmaort, 'zgvmadatum' => $zgvmadatum, 'zgvmanation' => $zgvmanation_code));
if ($result->error)
{
show_error($result->retval);
}
$logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->personloglib->log($logdata['person_id'], 'Action', array('name' => 'Zgv gespeichert', 'message' => 'Zgv für Studiengang '.$logdata['studiengang_kurzbz'].' wurde gespeichert ', 'success' => 'true'), $this->app, null, $this->uid);
$this->__redirectToStart($prestudent_id);
}
public function saveAbsage($prestudent_id)
{
$statusgrund = $this->input->post('statusgrund');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
if ($lastStatus->error)
{
show_error($lastStatus->retval);
}
$result = $this->PrestudentstatusModel->insert(array('prestudent_id' => $prestudent_id, 'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz, 'ausbildungssemester' => $lastStatus->retval[0]->ausbildungssemester, 'datum' => date('Y-m-d'), 'orgform_kurzbz' => $lastStatus->retval[0]->orgform_kurzbz, 'studienplan_id' => $lastStatus->retval[0]->studienplan_id, 'status_kurzbz' => 'Abgewiesener', 'statusgrund_id' => $statusgrund, 'insertvon' => $this->uid, 'insertamum' => date('Y-m-d H:i:s')));
if ($result->error)
{
show_error($result->retval);
}
$logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent abgewiesen', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' abgewiesen', 'success' => 'true'), $this->app, null, $this->uid);
$this->__redirectToStart($prestudent_id);
}
public function saveFreigabe($prestudent_id)
{
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
if (count($lastStatus->retval) > 0)
{
$lastStatus = $lastStatus->retval[0];
$result = $this->PrestudentstatusModel->update(array('prestudent_id' => $prestudent_id, 'status_kurzbz' => $lastStatus->status_kurzbz, 'studiensemester_kurzbz' => $lastStatus->studiensemester_kurzbz, 'ausbildungssemester' => $lastStatus->ausbildungssemester),
array('bestaetigtvon' => $this->uid, 'bestaetigtam' => date('Y-m-d'), 'updatevon' => $this->uid, 'updateamum' => date('Y-m-d H:i:s')));
if ($result->error)
{
show_error($result->retval);
}
}
$logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent freigegeben', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' freigegeben', 'success' => 'true'), $this->app, null, $this->uid);
$this->__redirectToStart($prestudent_id);
}
public function saveNotiz($person_id)
{
$titel = $this->input->post('notiztitel');
$text = $this->input->post('notiz');
$erledigt = false;
$this->NotizModel->addNotizForPerson($person_id, $titel, $text, $erledigt, $this->uid);
$this->personloglib->log($person_id, 'Action', array('name' => 'Notiz hinzugefügt', 'message' => 'Notiz mit Titel '.$titel.' wurde hinzugefügt', 'success' => 'true'), $this->app, null, $this->uid);
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id);
}
public function outputAkteContent($akte_id)
{
$akte = $this->AkteModel->load($akte_id);
if ($akte->error)
{
show_error($akte->retval);
}
$aktecontent = $this->dmslib->getAkteContent($akte_id);
if($aktecontent->error)
{
show_error($aktecontent->retval);
}
header("Content-type: ".$akte->retval[0]->mimetype);
header('Content-Disposition: attachment; filename="'.$akte->retval[0]->titel.'"');
echo $aktecontent->retval;
}
private function __redirectToStart($prestudent_id)
{
$this->PrestudentModel->addSelect('person_id');
$person_id = $this->PrestudentModel->load($prestudent_id)->retval[0]->person_id;
redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id);
}
private function __getPersonAndStudiengangFromPrestudent($prestudent_id)
{
$this->PrestudentModel->addSelect('person_id, studiengang_kz');
$prestudent = $this->PrestudentModel->load($prestudent_id);
if ($prestudent->error)
{
show_error($prestudent->retval);
}
$person_id = $prestudent->retval[0]->person_id;
$this->StudiengangModel->addSelect('kurzbzlang');//TODO need bezeichnung?
$studiengang = $this->StudiengangModel->load($prestudent->retval[0]->studiengang_kz);
if ($studiengang->error)
{
show_error($studiengang->retval);
}
$studiengang_kurzbz = $studiengang->retval[0]->kurzbzlang;
return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz);
}
}
+55 -7
View File
@@ -23,6 +23,9 @@ class DB_Model extends FHC_Model
protected $hasSequence; // False if this table has a composite primary key that is not using a sequence
// True if this table has a primary key that uses a sequence
private $executedQueryMetaData;
private $executedQueryListFields;
/**
* Constructor
*/
@@ -670,6 +673,48 @@ class DB_Model extends FHC_Model
return $this->fieldExists(UDFLib::COLUMN_NAME);
}
/**
* Get the list of the fields after having executed a query
*/
public function getExecutedQueryListFields()
{
return $this->executedQueryListFields;
}
/**
* Get meda data info about the retrived fields after having executed a query
*/
public function getExecutedQueryMetaData()
{
return $this->executedQueryMetaData;
}
/**
* Like execQuery, but it allows only to perform queries to read data
*/
public function execReadOnlyQuery($query, $parametersArray = null)
{
$result = error('You are allowed to run only query for reading data'); //
$cleanedQuery = trim(preg_replace('/\t|\n|\r|;/', '', $query)); //
//
if (stripos($cleanedQuery, 'SELECT') == 0
&& (stripos($cleanedQuery, 'INSERT') > 0 || stripos($cleanedQuery, 'INSERT') == false)
&& (stripos($cleanedQuery, 'UPDATE') > 0 || stripos($cleanedQuery, 'UPDATE') == false)
&& (stripos($cleanedQuery, 'CREATE') > 0 || stripos($cleanedQuery, 'CREATE') == false)
&& (stripos($cleanedQuery, 'DELETE') > 0 || stripos($cleanedQuery, 'DELETE') == false)
&& (stripos($cleanedQuery, 'ALTER') > 0 || stripos($cleanedQuery, 'ALTER') == false)
&& (stripos($cleanedQuery, 'GRANT') > 0 || stripos($cleanedQuery, 'GRANT') == false)
&& (stripos($cleanedQuery, 'DROP') > 0 || stripos($cleanedQuery, 'DROP') == false))
{
$queryToExec = str_replace(';', '', $query); //
$result = $this->execQuery($queryToExec, $parametersArray);
}
return $result;
}
// ------------------------------------------------------------------------------------------
// Protected methods
@@ -809,20 +854,23 @@ class DB_Model extends FHC_Model
if (is_object($result))
{
$toBeConverterdArray = array(); // Fields to be converted
$metaDataArray = $result->field_data(); // Fields information
for ($i = 0; $i < count($metaDataArray); $i++) // Looking for booleans and arrays
$this->executedQueryMetaData = $result->field_data(); // Fields information
$this->executedQueryListFields = $result->list_fields(); // List of the retrived fields
for ($i = 0; $i < count($this->executedQueryMetaData); $i++) // Looking for booleans and arrays
{
// If array type, boolean type OR a UDF
if (strpos($metaDataArray[$i]->type, DB_Model::PGSQL_ARRAY_TYPE) !== false
|| $metaDataArray[$i]->type == DB_Model::PGSQL_BOOLEAN_TYPE
|| $this->udflib->isUDFColumn($metaDataArray[$i]->name, $metaDataArray[$i]->type))
if (strpos($this->executedQueryMetaData[$i]->type, DB_Model::PGSQL_ARRAY_TYPE) !== false
|| $this->executedQueryMetaData[$i]->type == DB_Model::PGSQL_BOOLEAN_TYPE
|| $this->udflib->isUDFColumn($this->executedQueryMetaData[$i]->name, $this->executedQueryMetaData[$i]->type))
{
// Name and type of the field to be converted
$toBeConverted = new stdClass();
// Set the type of the field to be converted
$toBeConverted->type = $metaDataArray[$i]->type;
$toBeConverted->type = $this->executedQueryMetaData[$i]->type;
// Set the name of the field to be converted
$toBeConverted->name = $metaDataArray[$i]->name;
$toBeConverted->name = $this->executedQueryMetaData[$i]->name;
// Add the field to be converted to $toBeConverterdArray
array_push($toBeConverterdArray, $toBeConverted);
}
+29 -28
View File
@@ -14,16 +14,17 @@ class CallerLib
const LIB_FILE_EXTENSION = '.php';
const LIBS_PATH = 'libraries';
const MODEL_PREFIX = '_model';
// Black list of resources that are no allowed to be used
private static $RESOURCES_BLACK_LIST = array(
'CallerLib', // disabled self loading
'LogLib', // hardly usefull and virtually dangerous
'MigrationLib', // virtually dangerous, DB manipulation
'FilesystemLib', // virtually dangerous, direct access to file system
'PermissionLib' // usefull?
'PermissionLib', // usefull?
'PersonLogLib'
);
/**
* Object initialization
*/
@@ -31,14 +32,14 @@ class CallerLib
{
// Gets CI instance
$this->ci =& get_instance();
// Loads helper message to manage returning messages
$this->ci->load->helper('Message');
// Loads permission library
$this->ci->load->library('PermissionLib');
}
/**
* Wrapper method for _call
*/
@@ -46,7 +47,7 @@ class CallerLib
{
return $this->_call($callParameters, $permissionType);
}
/**
* Wrapper method for _call
*/
@@ -54,7 +55,7 @@ class CallerLib
{
return $this->_call($callParameters, $permissionType);
}
/**
* Everything starts here...
*/
@@ -63,7 +64,7 @@ class CallerLib
$result = null;
$parameters = $this->_getParameters($callParameters);
$validation = $this->_validateCall($parameters);
// If the validation was passed
if (isSuccess($validation))
{
@@ -119,7 +120,7 @@ class CallerLib
{
$result = error('Neither a lib nor model: '.$parameters->resourcePath.$parameters->resourceName);
}
// If the resource was found and loaded
if (!is_null($loaded))
{
@@ -134,10 +135,10 @@ class CallerLib
{
$result = $validation;
}
return $result;
}
/**
* Gets the parameters from the http call
* Search for parameters <RESOURCE_PARAMETER> and <FUNCTION_PARAMETER>
@@ -181,7 +182,7 @@ class CallerLib
return $parameters;
}
/**
* Validate the given parameters
*/
@@ -224,7 +225,7 @@ class CallerLib
{
$loaded = null;
$result = null;
try
{
$loaded = $this->ci->load->model($resourcePath.$resourceName);
@@ -234,15 +235,15 @@ class CallerLib
// Errors while loading the model
$result = error('Errors while loading the model: '.$e->getMessage());
}
if (!is_null($loaded))
{
$result = success($loaded);
}
return $result;
}
/**
* Search for a valid permission for this library that should be present with this format:
* '<library path>.<library name>.<library method name>' => '<permission>'
@@ -251,14 +252,14 @@ class CallerLib
{
$result = null;
$permissionPath = '';
if ($resourcePath != '')
{
$permissionPath = $resourcePath;
}
$permissionPath .= $resourceName.'.'.$function;
if ($this->ci->permissionlib->isEntitled($permissionPath, $permissionType) === false)
{
$result = error(FHC_NORIGHT, FHC_NORIGHT);
@@ -267,10 +268,10 @@ class CallerLib
{
$result = success('Has permission');
}
return $result;
}
/**
* Loads a library using the given path and name
*
@@ -286,7 +287,7 @@ class CallerLib
private function _loadLibrary($resourcePath, $resourceName)
{
$loaded = null;
try
{
// Gets all the configured resources paths
@@ -328,15 +329,15 @@ class CallerLib
// Errors while loading the library
$result = error('Errors while loading the library: '.$e->getMessage());
}
if (!is_null($loaded))
{
$result = success($loaded);
}
return $result;
}
/**
* Calls a method of a class with the given parameters and returns its result
*
@@ -347,7 +348,7 @@ class CallerLib
private function _callThis($resourceName, $function, $parameters)
{
$result = null;
try
{
// Get informations about the function
@@ -402,7 +403,7 @@ class CallerLib
{
$result = error($e->getMessage());
}
return $result;
}
}
+83 -26
View File
@@ -12,18 +12,21 @@ class DmsLib
public function __construct()
{
$this->ci =& get_instance();
$this->ci->load->model('crm/Akte_model', 'AkteModel');
$this->ci->load->model('content/Dms_model', 'DmsModel');
$this->ci->load->model('content/DmsVersion_model', 'DmsVersionModel');
$this->ci->load->model('content/DmsFS_model', 'DmsFSModel');
// Loads helper message to manage returning messages
$this->ci->load->helper('message');
}
/**
* read
* Read a DMS Document from the Filesystem
* @param int $dms_id ID of the Document.
* @param int $version The version of the Document (latest if null).
* @return object success or error
*/
public function read($dms_id, $version = null)
{
@@ -44,7 +47,7 @@ class DmsLib
$result = $this->ci->DmsModel->loadWhere(array('dms_id' => $dms_id, 'version' => $version));
}
}
if (hasData($result))
{
$resultFS = $this->ci->DmsFSModel->read($result->retval[0]->filename);
@@ -57,20 +60,26 @@ class DmsLib
$result = $resultFS;
}
}
return $result;
}
/**
* getAktenAcceptedDms
* Get all accepted Documents of a Person
*
* @param int $person_id ID of the person.
* @param string $dokument_kurzbz Type of document.
* @param bool $no_file If null then loads also the content.
* @return object success or error
*/
public function getAktenAcceptedDms($person_id, $dokument_kurzbz = null, $no_file = null)
{
$result = $this->ci->AkteModel->getAktenAcceptedDms($person_id, $dokument_kurzbz);
if (hasData($result) && $no_file == null)
{
for ($i = 0; $i < count($result->retval); $i++)
$cnt = count($result->retval);
for ($i = 0; $i < $cnt; $i++)
{
$resultFS = $this->ci->DmsFSModel->read($result->retval[$i]->filename);
if (isSuccess($resultFS))
@@ -83,12 +92,14 @@ class DmsLib
}
}
}
return $result;
}
/**
* save
* Saves a Document
* @param object $dms DMS Object ot be saved.
* @return object
*/
public function save($dms)
{
@@ -142,30 +153,34 @@ class DmsLib
return $result;
}
/**
* delete
* Deletes a Akte of a Person
* @param int $person_id ID of the person.
* @param int $dms_id Id of the Document.
* @return object
*/
public function delete($person_id, $dms_id)
{
$result = null;
// If the parameters are valid
if (is_numeric($person_id) && is_numeric($dms_id))
{
// Start DB transaction
$this->ci->db->trans_start(false);
// Get akte_id from table tbl_akte
$result = $this->ci->AkteModel->loadWhere(array('person_id' => $person_id, 'dms_id' => $dms_id));
if (isSuccess($result))
{
// Delete all entries in tbl_akte
for ($i = 0; $i < count($result->retval); $i++)
$cnt = count($result->retval);
for ($i = 0; $i < $cnt; $i++)
{
$this->ci->AkteModel->delete($result->retval[$i]->akte_id);
}
// Get all filenames related to this dms
$resultFileNames = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $dms_id));
if (isSuccess($resultFileNames))
@@ -179,10 +194,10 @@ class DmsLib
}
}
}
// Transaction complete!
$this->ci->db->trans_complete();
// Check if everything went ok during the transaction
if ($this->ci->db->trans_status() === false || isError($result))
{
@@ -194,12 +209,13 @@ class DmsLib
$this->ci->db->trans_commit();
$result = success('Dms successfully removed from DB');
}
// If everything is ok
if (isSuccess($result))
{
$cnt = count($resultFileNames->retval);
// Remove all files related to this person and dms
for ($i = 0; $i < count($resultFileNames->retval); $i++)
for ($i = 0; $i < $cnt; $i++)
{
$this->ci->DmsFSModel->remove($resultFileNames->retval[$i]->filename);
}
@@ -209,17 +225,56 @@ class DmsLib
{
$result = error('Invalid parameters');
}
return $result;
}
/**
* _saveFileOnInsert
* Loads the Content of an akte
* @param int $akte_id Id of the akte.
* @return object with document content or error
*/
public function getAkteContent($akte_id)
{
$akte = $this->ci->AkteModel->load($akte_id);
if (hasData($akte))
{
if ($akte->retval[0]->inhalt != '')
{
return success(base64_decode($akte->retval[0]->inhalt));
}
elseif ($akte->retval[0]->dms_id != '')
{
$dmscontent = $this->read($akte->retval[0]->dms_id);
if (isSuccess($dmscontent))
{
return success(base64_decode($dmscontent->retval[0]->file_content));
}
else
{
return error($dmscontent->retval);
}
}
else
{
return error('No Content available');
}
}
else
{
return error($akte->retval);
}
}
/**
* Saves the Content of a DMS in the Filesystem
* @param object $dms DMS object to be saved.
* @return object
*/
private function _saveFileOnInsert($dms)
{
$filename = uniqid().'.'.pathinfo($dms['name'], PATHINFO_EXTENSION);
$result = $this->ci->DmsFSModel->write($filename, $dms['file_content']);
if (isSuccess($result))
{
@@ -230,7 +285,9 @@ class DmsLib
}
/**
* _saveFileOnUpdate
* Updates the File in the Filesystem
* @param object $dms DMS object to update.
* @return object
*/
private function _saveFileOnUpdate($dms)
{
+182
View File
@@ -0,0 +1,182 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
class DocumentLib
{
private $unoconv_version;
/**
* Constructor
*/
public function __construct()
{
// Gets CI instance
$this->ci =& get_instance();
exec('unoconv --version', $ret_arr);
if(isset($ret_arr[0]))
$this->unoconv_version = explode(' ', $ret_arr[0])[1];
else
show_error('Unoconv not found - Please install Unoconv');
}
/**
* Converts a File to PDF
* @param string $filename Full path to the file.
* @return success or error object
*/
public function convertToPDF($filename)
{
if (!file_exists($filename))
return error('Unable to Convert to PDF. File not found:'.$filename);
$mimetype = mime_content_type($filename);
$outFile = sys_get_temp_dir().'/FHC_'.uniqid().'.pdf';
switch ($mimetype)
{
case 'image/jpeg':
case 'image/jpg':
case 'image/pjpeg':
$this->_jpegtopdf($filename, $outFile);
return success($outFile);
case 'application/vnd.oasis.opendocument.spreadsheet':
case 'application/msword':
case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
case 'application/haansoftdocx':
case 'application/vnd.ms-word':
case 'application/vnd.oasis.opendocument.text':
case 'text/plain':
$this->convert($filename, $outFile, 'pdf');
return success($outFile);
case 'application/pdf':
return success($filename);
default:
return error('Unknown Mimetype:'.$mimetype);
}
}
/**
* Combines multiple single PDFs to one PDF
*
* @param array $files Array of Files to merge (full path to file).
* @param string $outFile Path to the Output File.
* @return success or error object
*/
public function mergePDF($files, $outFile)
{
$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outFile ";
$finfo = finfo_open(FILEINFO_MIME_TYPE);
// add all pdf files to the command
foreach ($files as $f)
{
$cmd .= $f." ";
if (!file_exists($f))
{
return error("File not found: '$f'");
}
if (finfo_file($finfo, $f) != "application/pdf")
{
return error("Wrong format(".finfo_file($finfo, $f)."): '$f'");
}
}
finfo_close($finfo);
exec($cmd, $out, $ret);
if ($ret != 0)
{
return error('PDF-zusammenfuegung ist derzeit nicht möglich. Bitte informieren Sie den Administrator');
}
return success(true);
}
/**
* Converts a Document to another format with unoconv
*
* @param string $inFile File that should be convertet.
* @param string $outFile Name of the Output File.
* @param string $format Outputformat (PDF, DOC, ...).
* @return success or error Object
*/
public function convert($inFile, $outFile, $format)
{
if ($this->unoconv_version == '0.6')
$command = 'unoconv -f %1$s %3$s > %2$s';
else
$command = 'unoconv -f %s --output %s %s 2>&1';
$command = sprintf($command, $format, $outFile, $inFile);
exec($command, $out, $ret);
if ($ret != 0)
{
return error('Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator');
}
return success(true);
}
/**
* Converts a JPG to PDF
*
* @param string $filename Path to JPG.
* @param string $outfile Path to Output (pdf) File.
* @return success or error object
*/
private function _jpegtopdf($filename, $outfile)
{
if (!file_exists($filename))
return error('File does not exists');
$size = getimagesize($filename);
$margin_left_right = 18;
$margin_bottom = 18;
/*
* längere Seite ermitteln
* Hochformat wenn die Seiten gleich lang sind oder das Bild schmäler ist als die Seitenbreite
*/
if ($size[0] > $size[1] && $size[0] > 595)
{
$page_height = 595;
$page_width = 842;
//Wenn Bild kleiner oder gleich Seitenbreite, dann margin erhoehen
if ($size[0] <= $page_width)
{
$margin_left_right = ($page_width - $size[0]) / 2;
$margin_bottom = ($page_height - $size[1]);
}
}
else
{
$page_height = 842;
$page_width = 595;
//Wenn Bild kleiner oder gleich Seitenbreite, dann margin erhoehen
if ($size[0] <= $page_width)
{
$margin_left_right = ($page_width - $size[0]) / 2;
$margin_bottom = ($page_height - $size[1]);
}
}
// -r300 = 300 ppi
$cmd = 'gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -r100 ';
$cmd .= '-o '.$outfile.' viewjpeg.ps -c "('.$filename.') ';
$cmd .= '<< /PageSize ['.$page_width.' '.$page_height.'] ';
$cmd .= '/.HWMargins ['.$margin_left_right.' '.$margin_bottom.' '.$margin_left_right.' 18] ';
$cmd .= '/countspaces { [ exch { dup 32 ne { pop } if } forall ] length } bind def >> ';
$cmd .= 'setpagedevice viewJPEG"';
exec($cmd, $out, $ret);
if ($ret != 0)
{
$this->errormsg = 'jpegToPdf ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
return false;
}
return true;
}
}
+1 -1
View File
@@ -313,7 +313,7 @@ class ExtensionsLib
if (isError($result))
{
$this->_errorOccurred = true;
$this->_printFailure('data base error');
$this->_printFailure('data base error: '.$result->retval);
}
else
{
+2 -2
View File
@@ -75,7 +75,7 @@ class PermissionLib
if (isset($this->acl[$sourceName]))
{
// Checks permission
$isEntitled = $this->_isBerechtigt($this->acl[$sourceName], $permissionType);
$isEntitled = $this->isBerechtigt($this->acl[$sourceName], $permissionType);
}
}
else
@@ -104,7 +104,7 @@ class PermissionLib
/**
* Checks user's (API caller) rights
*/
private function _isBerechtigt($berechtigung_kurzbz, $art = null, $oe_kurzbz = null, $kostenstelle_id = null)
public function isBerechtigt($berechtigung_kurzbz, $art = null, $oe_kurzbz = null, $kostenstelle_id = null)
{
$isBerechtigt = false;
+63
View File
@@ -0,0 +1,63 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Logging Actions of Persons
*/
class PersonLogLib
{
/**
* Constructor
*/
public function __construct()
{
$this->ci =& get_instance();
$this->ci->load->model('system/PersonLog_model', 'PersonLogModel');
}
/**
* Writes a Log for a Person
* @param int $person_id ID of the Person.
* @param string $logtype_kurzbz Type of Log.
* @param array $logdata Array of the JSON Data to save.
* @param string $app Application that log belongs to.
* @param string $oe_kurzbz Organisation Unit the Log belongs to.
* @param string $user User who created the log.
* @return boolean true if success
*/
public function log($person_id, $logtype_kurzbz, $logdata, $app = 'core', $oe_kurzbz = null, $user = null)
{
$data = array(
'person_id' => $person_id,
'zeitpunkt' => date('Y-m-d H:i:s'),
'app' => $app,
'oe_kurzbz' => $oe_kurzbz,
'logtype_kurzbz' => $logtype_kurzbz,
'logdata' => json_encode($logdata),
'insertvon' => $user
);
$result = $this->ci->PersonLogModel->insert($data);
if (isSuccess($result))
return true;
else
show_error($result->retval);
}
/**
* Gets Logs for a Person, filtered by Parameters
* @param int $person_id ID of the Person.
* @param string $app Name of the App.
* @param string $oe_kurzbz Organisations Unit.
* @return object $result
*/
public function getLogs($person_id, $app = null, $oe_kurzbz = null)
{
$result = $this->ci->PersonLogModel->filterLog($person_id, $app, $oe_kurzbz);
if (isSuccess($result))
return $result->retval;
else
show_error($result->retval);
}
}
+1 -1
View File
@@ -625,7 +625,7 @@ class UDFLib
elseif (isset($jsonSchema->{UDFLib::LIST_VALUES}->sql))
{
// UDFModel is loaded in method _loadUDF that is called before the current method
$queryResult = $this->_ci->UDFModel->execQuery($jsonSchema->{UDFLib::LIST_VALUES}->sql);
$queryResult = $this->_ci->UDFModel->execReadOnlyQuery($jsonSchema->{UDFLib::LIST_VALUES}->sql);
if (hasData($queryResult))
{
$parameters = $queryResult->retval;
+37
View File
@@ -94,5 +94,42 @@ class Notiz_model extends DB_Model
return $result;
}
/**
* Add a Notiz for a given person
*/
public function addNotizForPerson($person_id, $titel, $text, $erledigt, $verfasser_uid)
{
// Loads model Notizzuordnung_model
$this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel');
// Start DB transaction
$this->db->trans_start(false);
$result = $this->insert(array('titel' => $titel, 'text' => $text, 'erledigt' => $erledigt, 'verfasser_uid' => $verfasser_uid,
"insertvon" => $verfasser_uid));
$notiz_id = $result->retval;
if (isSuccess($result))
{
$result = $this->NotizzuordnungModel->insert(array('notiz_id' => $notiz_id, 'person_id' => $person_id));
}
// Transaction complete!
$this->db->trans_complete();
// Check if everything went ok during the transaction
if ($this->db->trans_status() === false || isError($result))
{
$this->db->trans_rollback();
$result = error($result->msg, EXIT_ERROR);
}
else
{
$this->db->trans_commit();
$result = success($notiz_id);
}
return $result;
}
// ------------------------------------------------------------------------------------------------------
}
@@ -0,0 +1,14 @@
<?php
class Filters_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'system.tbl_filters';
$this->pk = 'filter_id';
}
}
@@ -0,0 +1,87 @@
<?php
/**
* PersonLog Extends from CI_Model instead of DB_Model
* to be able to write Log without a loggedin User!
*/
class PersonLog_model extends CI_Model
{
private $dbTable;
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->load->database();
$this->dbTable = 'system.tbl_log';
}
/**
* Inserts a Log for a Person
* @param array $data Data of Log Entry to save.
* @return success object if true
*/
public function insert($data)
{
$result = $this->db->insert($this->dbTable, $data);
if ($result)
return success($this->db->insert_id());
else
return error();
}
/**
* Loads the last Log Entry of a Person
* @param int $person_id ID of the Person.
* @param string $app Name of the App.
* @param string $oe_kurzbz Organisations Unit.
* @return object $result
*/
public function getLastLog($person_id, $app = null, $oe_kurzbz = null)
{
// Check Permissions
$this->load->library('PermissionLib');
if(!$this->permissionlib->isEntitled('system.tbl_log',PermissionLib::SELECT_RIGHT))
show_error('Permission denied - You need Access to system.tbl_log');
$this->db->order_by('zeitpunkt', 'DESC');
$this->db->order_by('log_id', 'DESC');
$this->db->limit(1);
if (!is_null($app))
$this->db->where('app='.$this->db->escape($app));
if (!is_null($oe_kurzbz))
$this->db->where('oe_kurzbz='.$this->db->escape($oe_kurzbz));
$result = $this->db->get_where($this->dbTable, "person_id=".$this->db->escape($person_id));
return success($result->result());
}
/**
* Load logs for a person, filtered by parameters
* @param int $person_id ID of the Person.
* @param string $app Name of the App.
* @param string $oe_kurzbz Organisations Unit.
* @return object $result
*/
public function filterLog($person_id, $app = null, $oe_kurzbz = null)
{
// Check Permissions
$this->load->library('PermissionLib');
if(!$this->permissionlib->isEntitled('system.tbl_log',PermissionLib::SELECT_RIGHT))
show_error('Permission denied - You need Access to system.tbl_log');
$this->db->order_by('zeitpunkt', 'DESC');
$this->db->order_by('log_id', 'DESC');
if (!is_null($app))
$this->db->where('app='.$this->db->escape($app));
if (!is_null($oe_kurzbz))
$this->db->where('oe_kurzbz='.$this->db->escape($oe_kurzbz));
$result = $this->db->get_where($this->dbTable, "person_id=".$this->db->escape($person_id));
return success($result->result());
}
}
+34 -61
View File
@@ -6,10 +6,10 @@ class UDF_model extends DB_Model
const STRING_NULL = 'null';
const STRING_TRUE = 'true';
const STRING_FALSE = 'false';
const UDF_DROPDOWN_TYPE = 'dropdown';
const UDF_MULTIPLEDROPDOWN_TYPE = 'multipledropdown';
/**
* Constructor
*/
@@ -20,41 +20,14 @@ class UDF_model extends DB_Model
$this->pk = array('schema', 'table');
$this->hasSequence = false;
}
/**
* Override DB_Model method execQuery to allow only to perform queries to read data
*/
public function execQuery($query, $parametersArray = null)
{
//
if (
(
substr($query, 0, 6) == 'SELECT'
|| substr($query, 0, 4) == 'WITH'
)
&&
(
!stripos($query, 'INSERT')
&& !stripos($query, 'UPDATE')
&& !stripos($query, 'DELETE')
)
)
{
return parent::execQuery($query, $parametersArray);
}
else
{
return error('You are allowed to run only query for reading data');
}
}
/**
* Returns all the UDF for this table
*/
public function getUDFsDefinitions($schemaAndTable)
{
$st = $this->getSchemaAndTable($schemaAndTable);
$this->addSelect(UDFLib::COLUMN_JSON_DESCRIPTION);
$udfResults = $this->loadWhere(
array(
@@ -62,13 +35,13 @@ class UDF_model extends DB_Model
'table' => $st->table
)
);
return $udfResults;
}
// ------------------------------------------------------------------------------------
// These methods work only with the this version of FAS, not with the future versions
/**
* Methods to save data from FAS
*/
@@ -77,53 +50,53 @@ class UDF_model extends DB_Model
$result = error('No way man!');
$resultPerson = success('person');
$resultPrestudent = success('prestudent');
$person_id = $udfs['person_id'];
unset($udfs['person_id']);
$prestudent_id = $udfs['prestudent_id'];
unset($udfs['prestudent_id']);
$jsons = array();
//
//
if (isset($person_id))
{
// Load model Person_model
$this->load->model('person/Person_model', 'PersonModel');
$result = $this->load(array('public', 'tbl_person'));
if (isSuccess($result) && count($result->retval) == 1)
{
$jsons = json_decode($result->retval[0]->jsons);
}
$udfs = $this->_fillMissingTextUDF($udfs, $jsons);
$udfs = $this->_fillMissingChkboxUDF($udfs, $jsons);
$udfs = $this->_fillMissingDropdownUDF($udfs, $jsons);
$resultPerson = $this->PersonModel->update($person_id, $udfs);
}
//
//
if (isset($prestudent_id))
{
// Load model Prestudent_model
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$result = $this->load(array('public', 'tbl_prestudent'));
if (isSuccess($result) && count($result->retval) == 1)
{
$jsons = json_decode($result->retval[0]->jsons);
}
$udfs = $this->_fillMissingTextUDF($udfs, $jsons);
$udfs = $this->_fillMissingChkboxUDF($udfs, $jsons);
$udfs = $this->_fillMissingDropdownUDF($udfs, $jsons);
$resultPrestudent = $this->PrestudentModel->update($prestudent_id, $udfs);
}
if (isSuccess($resultPerson) && isSuccess($resultPrestudent))
{
$result = success(array($resultPerson->retval, $resultPrestudent->retval));
@@ -136,17 +109,17 @@ class UDF_model extends DB_Model
{
$result = $resultPrestudent;
}
return $result;
}
/**
*
*
*/
private function _fillMissingChkboxUDF($udfs, $jsons)
{
$_fillMissingChkboxUDF = $udfs;
foreach($jsons as $udfDescription)
{
if ($udfDescription->{UDFLib::TYPE} == UDFLib::CHKBOX_TYPE)
@@ -168,17 +141,17 @@ class UDF_model extends DB_Model
}
}
}
return $_fillMissingChkboxUDF;
}
/**
*
*
*/
private function _fillMissingDropdownUDF($udfs, $jsons)
{
$_fillMissingDropdownUDF = $udfs;
foreach($jsons as $udfDescription)
{
if ($udfDescription->{UDFLib::TYPE} == UDF_model::UDF_DROPDOWN_TYPE
@@ -194,17 +167,17 @@ class UDF_model extends DB_Model
}
}
}
return $_fillMissingDropdownUDF;
}
/**
*
*
*/
private function _fillMissingTextUDF($udfs, $jsons)
{
$_fillMissingTextUDF = $udfs;
foreach($jsons as $udfDescription)
{
if ($udfDescription->{UDFLib::TYPE} == 'textarea'
@@ -220,7 +193,7 @@ class UDF_model extends DB_Model
}
}
}
return $_fillMissingTextUDF;
}
}
}
@@ -0,0 +1,27 @@
<?php
$this->load->view('templates/FHC-Header', array('title' => 'Info Center', 'jquery3' => true, 'tablesorter' => true));
?>
<body>
<span>
<?php
$this->load->view(
'system/infocenter/infocenterFilters.php',
array(
'listFiltersSent' => $listFiltersSent,
'listFiltersNotSent' => $listFiltersNotSent
)
);
?>
</span>
<span>
<?php
$this->load->view('system/infocenter/infocenterData.php');
?>
</span>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -0,0 +1,50 @@
<?php
$filterWidgetArray = array(
'query' => '
SELECT p.person_id AS "PersonId",
p.nachname AS "Nachname",
p.vorname AS "Vorname",
k.kontakt AS "Email",
p.aktiv AS "Aktiv",
k.updateamum AS "UpdateDate"
FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id)
WHERE p.aktiv = TRUE
AND p.person_id = k.person_id
AND k.kontakttyp = \'email\'
AND p.person_id < 1000
',
'hideHeader' => true,
'hideSave' => true,
'additionalColumns' => array('Details'),
'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) {
$link = '<a href="%s%s" target="_blank">Details</a>';
if ($fieldName == 'Details')
{
$datasetRaw->{$fieldName} = sprintf(
$link,
base_url('index.ci.php/system/infocenter/infocenterDetails/showDetails/'),
$datasetRaw->PersonId
);
}
return $datasetRaw;
}
);
$filterId = isset($_GET['filterId']) ? $_GET['filterId'] : null;
if (isset($filterId) && is_numeric($filterId))
{
$filterWidgetArray['filterId'] = $filterId;
}
else
{
$filterWidgetArray['app'] = 'core';
$filterWidgetArray['datasetName'] = 'kontakts';
$filterWidgetArray['filterKurzbz'] = 'This filter filters';
}
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
?>
@@ -0,0 +1,269 @@
<?php
$this->load->view('templates/header', array('title' => 'InfocenterDetails', 'datepicker' => true, 'datepickerclass' => 'dateinput'/*, 'tablesort' => true, 'tableid' => 't1'*/));
?>
<body>
<h2>Infocenter - Person Details</h2>
<fieldset>
<legend>Stammdaten</legend>
<table>
<tr>
<td>Vorname: <?php echo $person->vorname ?></td>
</tr>
<tr>
<td>Nachname: <?php echo $person->nachname ?></td>
</tr>
<tr>
<td>Geburtsdatum: <?php echo date_format(date_create($person->gebdatum), 'd.m.Y') ?></td>
</tr>
<tr>
<td>Sozialversicherungsnr: <?php echo $person->svnr ?></td>
</tr>
<tr>
<td>Staatsb&uuml;rgerschaft: <?php echo $staatsbuergerschaft->kurztext ?></td>
</tr>
<tr>
<td>Geschlecht: <?php echo $person->geschlecht ?></td>
</tr>
<tr>
<td>Geburtsnation: <?php echo $geburtsnation->kurztext ?></td>
</tr>
<tr>
<td>Geburtsort: <?php echo $person->gebort ?></td>
</tr>
<tr>
<td align="center">Kontaktdaten</td>
</tr>
<?php
foreach ($kontakte as $kontakt):
?>
<tr>
<td><?php
echo ucfirst($kontakt->kontakttyp).': ';
if ($kontakt->kontakttyp == 'email'):
?>
<a href="mailto:<?php echo $kontakt->kontakt; ?>" target="_top">
<?php
endif;
echo $kontakt->kontakt;
if ($kontakt->kontakttyp == 'email'):
?>
</a>
<?php endif; ?>
</td>
</tr>
<?php
endforeach
?>
<tr>
<td>
Adresse: <?php echo isset($adresse) ? $adresse->strasse.", ".$adresse->plz." ".$adresse->ort : "" ?>
</td>
</tr>
</table>
</fieldset>
<fieldset>
<legend>Dokumentenprüfung</legend>
<table border="1"><!-- id="t1" class = "tablesorter"-->
<thead>
<th>Name</th>
<th>Typ</th>
<th>Uploaddatum</th>
<th>formal geprüft</th>
</thead>
<tbody>
<?php
foreach ($dokumente as $dokument):
$geprueft = (isset($dokument->formal_geprueft_amum)) ? "checked" : "";
?>
<tr>
<td><a href="../outputAkteContent/<?php echo $dokument->akte_id ?>"><?php echo $dokument->titel ?></a>
</td>
<td><?php echo $dokument->dokument_kurzbz ?></td>
<td><?php echo date_format(date_create($dokument->erstelltam), 'd.m.Y') ?></td>
<td>
<input type="checkbox" <?php echo $geprueft ?>
onclick="onFormalGeprueftChange(this.checked, <?php echo $dokument->akte_id ?>, <?php echo $person->person_id ?>)"/>
<?php
echo $dokument->formal_geprueft_amum;
?>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</fieldset>
<?php foreach ($zgvpruefungen as $zgvpruefung): ?>
<form method="post" action="../saveZgvPruefung/<?php echo $zgvpruefung->prestudent_id ?>">
<fieldset>
<legend>ZGV Prüfung - Studiengang <?php echo $zgvpruefung->studiengang ?></legend>
<table>
<tr>
<td>
<label>Letzter Status: </label>
<?php echo $zgvpruefung->prestudentstatus->status_kurzbz?>
</td>
<td>
<label>Freigegeben an Studiengang: </label>
<?php echo isset($zgvpruefung->prestudentstatus->bestaetigtam) ? "ja" : "nein" ?>
</td>
<td>
<label>Studiensemester: </label>
<?php echo $this->widgetlib->widget(
'Studiensemester_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->prestudentstatus->studiensemester_kurzbz),
array('name' => 'studiensemester', 'id' => 'studiensemester')
); ?>
</td>
<td>
<label>Ausbildungssemester: </label>
<input type="text" name="ausbildungssemester" value="<?php echo $zgvpruefung->prestudentstatus->ausbildungssemester ?>"
<?php echo $zgvpruefung->prestudentstatus->ausbildungssemester ?>
</td>
</tr>
<tr>
<td>
<label>ZGV: </label>
<?php echo $this->widgetlib->widget(
'Zgv_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code),
array('name' => 'zgv', 'id' => 'zgv')
); ?>
</td>
<td>
<label>ZGV Ort: </label>
<input type="text" value="<?php echo $zgvpruefung->zgvort ?>" name="zgvort">
</td>
<td>
<label>ZGV Datum: </label>
<input type="text" class="dateinput"
value="<?php echo empty($zgvpruefung->zgvdatum) ? "" : date_format(date_create($zgvpruefung->zgvdatum), 'd.m.Y') ?>"
name="zgvdatum">
</td>
<td>
<label>ZGV Nation: </label>
<?php echo $this->widgetlib->widget(
'Nation_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code),
array('name' => 'zgvnation', 'id' => 'zgvnation')
); ?>
</td>
</tr>
<?php if($zgvpruefung->studiengangtyp === 'm') :?>
<tr>
<td>
<label>ZGV Master: </label>
<?php echo $this->widgetlib->widget(
'Zgvmaster_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code),
array('name' => 'zgvmas', 'id' => 'zgvmas')
); ?>
</td>
<td>
<label>ZGV Master Ort: </label>
<input type="text" value="<?php echo $zgvpruefung->zgvmaort ?>" name="zgvmaort">
</td>
<td>
<label>ZGV Master Datum: </label>
<input type="text" class="dateinput"
value="<?php echo empty($zgvpruefung->zgvmadatum) ? "" : date_format(date_create($zgvpruefung->zgvmadatum), 'd.m.Y') ?>"
name="zgvmadatum">
</td>
<td>
<label>ZGV Master Nation: </label>
<?php echo $this->widgetlib->widget(
'Nation_widget',
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code),
array('name' => 'zgvmanation', 'id' => 'zgvmanation')
); ?>
</td>
</tr>
<?php endif; ?>
<tr>
<td>
<input type="submit" value="Speichern"/>
</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</fieldset>
</form>
<?php /*echo $this->widgetlib->widget(
'Statusgrund_widget',
array(),
array('name' => 'absage', 'id' => 'absage')
); */
//Prestudenten cannot be abgewiesen or freigegeben if already done
if(!isset($zgvpruefung->prestudentstatus->bestaetigtam) && $zgvpruefung->prestudentstatus->status_kurzbz != 'Abgewiesener') :
?>
<form method="post" action="../saveAbsage/<?php echo $zgvpruefung->prestudent_id ?>">
<label>Absagegrund:</label>
<select name="statusgrund">
<?php foreach ($statusgruende as $statusgrund): ?>
<option value="<?php echo $statusgrund->statusgrund_id ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
<?php endforeach ?>
</select>
<button type="submit">Absage</button>
</form>
<a href="../saveFreigabe/<?php echo $zgvpruefung->prestudent_id ?>">
<button>Freigabe an Studiengang</button>
</a>
<?php endif; ?>
<?php endforeach ?>
<table border="1">
<thead>
<th>Datum</th>
<th>Aktivität</th>
<th>User</th>
</thead>
<tbody>
<?php foreach ($logs as $log): ?>
<tr>
<td><?php echo date_format(date_create($log->zeitpunkt), 'd.m.Y H:i:s') ?></td>
<td><?php echo $log->logdata->name ?></td>
<td><?php echo $log->insertvon ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
<table border="1">
<thead>
<th>Datum</th>
<th>Notiz</th>
<th>User</th>
</thead>
<tbody>
<?php foreach ($notizen as $notiz): ?>
<tr>
<td><?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?></td>
<td><?php echo $notiz->titel ?></td>
<td><?php echo $notiz->verfasser_uid ?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
<form method="post" action="../saveNotiz/<?php echo $person->person_id ?>">
<label>Notiz:</label>
<br />
Titel: <input type="text" name="notiztitel" />
<br />
Text: <textarea name="notiz" rows="10" cols="32"></textarea>
<button type="submit">Speichern</button>
</form>
</body>
<script>
function onFormalGeprueftChange(formal_geprueft, akte_id, person_id)
{
window.location = "../saveFormalGeprueft?akte_id=" + akte_id + "&formal_geprueft=" + formal_geprueft + "&person_id=" + person_id;
}
</script>
@@ -0,0 +1,30 @@
<?php
function _printLists($listFilters)
{
foreach ($listFilters as $name => $filterId)
{
$toPrint = '<div><a href="%s=%s">%s</a></div>';
echo sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filterId'), $filterId, $name).PHP_EOL;
}
}
// HTML
// body
// span
?>
<div>
<div>
Abgeschickt:
</div>
<?php _printLists($listFiltersSent); ?>
<div>
Nicht abgeschickt:
</div>
<?php _printLists($listFiltersNotSent); ?>
</div>
@@ -0,0 +1,3 @@
<!-- Footer start -->
</html>
<!-- Footer end -->
+109
View File
@@ -0,0 +1,109 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
// By default set the parameters to null
$title = isset($title) ? $title : null;
$customCSSs = isset($customCSSs) ? $customCSSs : null;
$customJSs = isset($customJSs) ? $customJSs : null;
// By default set the parameters to false
$jquery3 = isset($jquery3) ? $jquery3 : false;
$tablesorter = isset($tablesorter) ? $tablesorter : false;
/**
* Print the given title of the page
* NOTE: this is a required field, must be specified otherwise an error is shown
*/
function _printTitle($title)
{
if ($title != null)
{
echo $title;
}
else
{
show_error('The title for this page is not set');
}
}
/**
* Generates tags for the style sheets you want to include, the parameter could by a string or an array of strings
*/
function _generateCSSsInclude($CSSs)
{
$cssLink = '<link rel="stylesheet" type="text/css" href="%s" />';
if (isset($CSSs))
{
$tmpCSSs = is_array($CSSs) ? $CSSs : array($CSSs);
for ($tmpCSSsCounter = 0; $tmpCSSsCounter < count($tmpCSSs); $tmpCSSsCounter++)
{
$toPrint = sprintf($cssLink, base_url($tmpCSSs[$tmpCSSsCounter])).PHP_EOL;
if ($tmpCSSsCounter > 0) $toPrint = "\t\t".$toPrint;
echo $toPrint;
}
}
}
/**
* Generates tags for the javascripts you want to include, the parameter could by a string or an array of strings
*/
function _generateJSsInclude($JSs)
{
$jsInclude = '<script type="text/javascript" src="%s"></script>';
if (isset($JSs))
{
$tmpJSs = is_array($JSs) ? $JSs : array($JSs);
for ($tmpJSsCounter = 0; $tmpJSsCounter < count($tmpJSs); $tmpJSsCounter++)
{
$toPrint = sprintf($jsInclude, base_url($tmpJSs[$tmpJSsCounter])).PHP_EOL;
if ($tmpJSsCounter > 0) $toPrint = "\t\t".$toPrint;
echo $toPrint;
}
}
}
?>
<!-- Header start -->
<!DOCTYPE HTML>
<html>
<head>
<title><?php _printTitle($title); ?></title>
<meta charset="UTF-8">
<link rel="shortcut icon" type="image/x-icon" href="<?php echo base_url('skin/images/Vilesci.ico'); ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url('skin/vilesci.css'); ?>" />
<?php
// --------------------------------------------------------------------------------------------------------
// CSS
// Eventually required CSS
_generateCSSsInclude($customCSSs); // Eventually required CSS
// Table sorter CSS
if ($tablesorter === true) _generateCSSsInclude('skin/tablesort.css');
// --------------------------------------------------------------------------------------------------------
// Javascripts
// JQuery V3
if ($jquery3 === true) _generateJSsInclude('vendor/components/jquery/jquery.min.js');
// Table sorter JS
if ($tablesorter === true) _generateJSsInclude('vendor/christianbach/tablesorter/jquery.tablesorter.min.js');
// Eventually required JS
_generateJSsInclude($customJSs);
?>
</head>
<!-- Header end -->
+11 -5
View File
@@ -69,12 +69,17 @@ if($jqueryV1 && $jqueryCurrent)
<script language="Javascript" type="text/javascript">
$(document).ready(function()
{
$("#<?php echo $tableid; ?>").tablesorter(
// Checks if the table contains data (rows)
if ($('#<?php echo $tableid; ?>').find('tbody:empty').length == 0
&& $('#<?php echo $tableid; ?>').find('tr:empty').length == 0)
{
sortList: [[<?php echo $sortList; ?>]],
widgets: ["<?php echo $widgets; ?>"],
headers: {<?php echo $headers; ?>}
});
$("#<?php echo $tableid; ?>").tablesorter(
{
sortList: [[<?php echo $sortList; ?>]],
widgets: ["<?php echo $widgets; ?>"],
headers: {<?php echo $headers; ?>}
});
}
});
</script>
<?php endif ?>
@@ -108,4 +113,5 @@ if($jqueryV1 && $jqueryCurrent)
<?php if($widgetsCSS) : ?>
<link rel="stylesheet" type="text/css" href="<?php echo base_url('skin/widgets.css'); ?>" />
<?php endif ?>
</head>
@@ -0,0 +1,78 @@
<script language="Javascript" type="text/javascript">
$(document).ready(function() {
// Checks if the table contains data (rows)
if ($('#tableDataset').find('tbody:empty').length == 0
&& $('#tableDataset').find('tr:empty').length == 0)
{
$("#tableDataset").tablesorter(
{
widgets: ["zebra"]
});
}
$("#addField").change(function() {
$("#filterForm").submit();
});
$(".remove-field").each(function() {
$(this).click(function() {
$("#rmField").val($(this).attr('fieldToRemove'));
$("#filterForm").submit();
});
});
$("#addFilter").change(function() {
$("#filterForm").submit();
});
$(".remove-filter").each(function() {
$(this).click(function() {
$("#rmFilter").val($(this).attr('filterToRemove'));
$("#filterForm").submit();
});
});
$(".select-filter-operation").change(function() {
$("#filterForm").submit();
});
$(".select-filter-operation-value").keydown(function(event) {
if (event.which == 13)
{
$("#filterForm").submit();
}
});
$("#saveCustomFilterButton").click(function() {
$("#saveCustomFilter").val(true);
$("#filterForm").submit();
});
});
</script>
<div>
<form id="filterForm" method="POST" action="<?php echo current_url(); ?>">
<div>
<?php FilterWidget::loadViewSelectFields($listFields); ?>
</div>
<br>
<div>
<?php FilterWidget::loadViewSelectFilters($metaData); ?>
</div>
<br>
<div>
<?php FilterWidget::loadViewSaveFilter(); ?>
</div>
<br>
<div>
<?php FilterWidget::loadViewTableDataset($dataset); ?>
</div>
</form>
</div>
@@ -0,0 +1,7 @@
<div>
Filter short description: <input type="text" id="customFilterKurzbz" name="customFilterKurzbz" value="">
</div>
<div>
<input type="button" id="saveCustomFilterButton" value="Save filter">
<input type="hidden" id="saveCustomFilter" name="saveCustomFilter" value="false">
</div>
@@ -0,0 +1,33 @@
<div>
<?php
$selectedFields = FilterWidget::getSelectedFields();
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
{
$selectedField = $selectedFields[$selectedFieldsCounter];
?>
<input type="button" value="<?php echo $selectedField; ?> X" class="remove-field" fieldToRemove="<?php echo $selectedField; ?>">
<?php
}
?>
<input type="hidden" id="<?php echo FilterWidget::CMD_REMOVE_FIELD; ?>" name="<?php echo FilterWidget::CMD_REMOVE_FIELD; ?>" value="">
</div>
<div>
<span>
Add field:
</span>
<span>
<select id="<?php echo FilterWidget::CMD_ADD_FIELD; ?>" name="<?php echo FilterWidget::CMD_ADD_FIELD; ?>">
<option value="">Select a field to add..</option>
<?php
for ($listFieldsCounter = 0; $listFieldsCounter < count($listFields); $listFieldsCounter++)
{
$listField = $listFields[$listFieldsCounter];
?>
<option value="<?php echo $listField; ?>"><?php echo $listField; ?></option>
<?php
}
?>
</select>
</span>
</div>
@@ -0,0 +1,47 @@
<div>
<?php
$selectedFilters = FilterWidget::getSelectedFilters();
for ($filtersCounter = 0; $filtersCounter < count($selectedFilters); $filtersCounter++)
{
$selectedFilter = $selectedFilters[$filtersCounter];
$md = FilterWidget::getFilterMetaData($selectedFilter, $metaData);
?>
<div>
<span>
<?php echo $md->name; ?>
</span>
<?php echo FilterWidget::renderFilterType($md); ?>
<span>
<input type="button" value="X" class="remove-filter" filterToRemove="<?php echo $md->name; ?>">
</span>
</div>
<?php
}
?>
<input type="hidden" id="<?php echo FilterWidget::CMD_REMOVE_FILTER; ?>" name="<?php echo FilterWidget::CMD_REMOVE_FILTER; ?>" value="">
</div>
<div>
<span>
Add filter:
</span>
<span>
<select id="<?php echo FilterWidget::CMD_ADD_FILTER; ?>" name="<?php echo FilterWidget::CMD_ADD_FILTER; ?>">
<option value="">Select a filter to add...</option>
<?php
for ($listFieldsCounter = 0; $listFieldsCounter < count($listFields); $listFieldsCounter++)
{
$field = $listFields[$listFieldsCounter];
?>
<option value="<?php echo $field; ?>"><?php echo $field; ?></option>
<?php
}
?>
</select>
</span>
</div>
@@ -0,0 +1,92 @@
<?php
$results = $dataset->retval;
$selectedFields = FilterWidget::getSelectedFields();
$additionalColumns = FilterWidget::getAdditionalColumns();
$checkboxes = FilterWidget::getCheckboxes();
?>
<div>
<table class="tablesorter" id="tableDataset">
<thead>
<tr>
<?php
if ($checkboxes != null)
{
?>
<th title="Select">Select</th>
<?php
}
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
{
$selectedField = $selectedFields[$selectedFieldsCounter];
?>
<th title="<?php echo $selectedField; ?>"><?php echo $selectedField; ?></th>
<?php
}
?>
<?php
for ($additionalColumnsCounter = 0; $additionalColumnsCounter < count($additionalColumns); $additionalColumnsCounter++)
{
$additionalColumn = $additionalColumns[$additionalColumnsCounter];
?>
<th title="<?php echo $additionalColumn; ?>"><?php echo $additionalColumn; ?></th>
<?php
}
?>
</tr>
</thead>
<tbody>
<?php
for ($resultsCounter = 0; $resultsCounter < count($results); $resultsCounter++)
{
$result = $results[$resultsCounter];
?>
<tr>
<?php
if ($checkboxes != null)
{
?>
<td>
<input type="checkbox" name="<?php echo $checkboxes[0]; ?>[]" value="<?php echo $result->{$checkboxes[0]}; ?>">
</td>
<?php
}
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
{
$selectedField = $selectedFields[$selectedFieldsCounter];
if (array_key_exists($selectedField, $result))
{
$formattedResult = FilterWidget::formatRaw($selectedField, $result->{$selectedField}, $result);
?>
<td>
<?php
echo $formattedResult->{$selectedField};
?>
</td>
<?php
}
}
for ($additionalColumnsCounter = 0; $additionalColumnsCounter < count($additionalColumns); $additionalColumnsCounter++)
{
$additionalColumn = $additionalColumns[$additionalColumnsCounter];
$formattedResult = FilterWidget::formatRaw($additionalColumn, null, $result);
?>
<td>
<?php
echo $formattedResult->{$additionalColumn};
?>
</td>
<?php
}
?>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
File diff suppressed because it is too large Load Diff
+22
View File
@@ -0,0 +1,22 @@
<?php
class Nation_widget extends DropdownWidget
{
public function display($widgetData)
{
// Nation
$this->load->model('codex/nation_model', 'NationModel');
$this->NationModel->addOrder('nation_code');
$this->addSelectToModel($this->NationModel, 'nation_code', 'kurztext');
$this->setElementsArray(
$this->NationModel->load(),
true,
'Select a nation...',
'No nation found'
);
$this->loadDropDownView($widgetData);
}
}
@@ -0,0 +1,22 @@
<?php
class Statusgrund_widget extends DropdownWidget
{
public function display($widgetData)
{
// Zgv
$this->load->model('crm/statusgrund_model', 'StatusgrundModel');
$this->StatusgrundModel->addOrder('statusgrund_id');
$this->addSelectToModel($this->StatusgrundModel, 'statusgrund_id', 'bezeichnung_mehrsprachig[1]');
$this->setElementsArray(
$this->StatusgrundModel->load(),
true,
'Select a Statusgrund...',
'No Statusgrund found'
);
$this->loadDropDownView($widgetData);
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
class Zgv_widget extends DropdownWidget
{
public function display($widgetData)
{
// Zgv
$this->load->model('codex/zgv_model', 'ZgvModel');
$this->ZgvModel->addOrder('zgv_bez');
$this->addSelectToModel($this->ZgvModel, 'zgv_code', 'zgv_bez');
$this->setElementsArray(
$this->ZgvModel->load(),
true,
'Select a zgv...',
'No zgv found'
);
$this->loadDropDownView($widgetData);
}
}
+22
View File
@@ -0,0 +1,22 @@
<?php
class Zgvmaster_widget extends DropdownWidget
{
public function display($widgetData)
{
// Zgv master
$this->load->model('codex/zgvmaster_model', 'ZgvmasterModel');
$this->ZgvmasterModel->addOrder('zgvmas_bez');
$this->addSelectToModel($this->ZgvmasterModel, 'zgvmas_code', 'zgvmas_bez');
$this->setElementsArray(
$this->ZgvmasterModel->load(),
true,
'Select a zgv...',
'No zgv found'
);
$this->loadDropDownView($widgetData);
}
}
+11
View File
@@ -0,0 +1,11 @@
<?php
/**
* This Script is for Loading the Codeigniter Context in Non-Codeigniter Scripts
* Usage:
* $ci = require_once(ci_loader.php');
* $ci->load->library('xxx');
*/
ob_start();
require_once('index.ci.php');
ob_get_clean();
return $CI;
+46 -28
View File
@@ -26,12 +26,12 @@ require_once('../../../include/phrasen.class.php');
require_once('../../../include/person.class.php');
$user = get_uid();
$sprache = getSprache();
$sprache = getSprache();
$p=new phrasen($sprache);
//$rechte = new benutzerberechtigung();
//$rechte->getBerechtigungen($user);
//if(!$rechte->isBerechtigt('basis/service'))
// die('Sie haben keine Berechtigung fuer diese Seite');
@@ -42,7 +42,7 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
<title>'.$p->t("services/service").'</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
@@ -50,20 +50,36 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>';
// Load Addons to get Moodle_Path
$addon_obj = new addon();
if ($addon_obj->loadAddons())
{
if (count($addon_obj->result) > 0)
{
foreach ($addon_obj->result as $row)
{
if (file_exists('../../../addons/'.$row->kurzbz.'/config.inc.php'))
include_once('../../../addons/'.$row->kurzbz.'/config.inc.php');
}
}
}
echo '
<script type="text/javascript">
$(document).ready(function()
{
$(document).ready(function()
{
$("#myTable").tablesorter(
{
sortList: [[0,0],[1,0]],
widgets: [\'zebra\']
});
}
});
}
);
function ContentPopUp (Adresse)
function ContentPopUp (Adresse)
{
Content = window.open(Adresse, "Content", "width=800,height=500,scrollbars=yes");
Content.focus();
@@ -82,28 +98,29 @@ echo '<SELECT name="oe_kurzbz">
<OPTION value="">-- '.$p->t("global/alle").' --</OPTION>';
$oe = new organisationseinheit();
//$oe->getAll();
$oe->loadArray($oe->getChilds('Infrastruktur'),'bezeichnung');
$oe->getAll();
//$oe->loadArray($oe->getChilds('Infrastruktur'),'bezeichnung');
foreach($oe->result as $row)
{
if($row->oe_kurzbz==$oe_kurzbz)
$selected='selected';
else
$selected='';
echo '<OPTION value="'.$row->oe_kurzbz.'" '.$selected.'>'.$row->organisationseinheittyp_kurzbz.' '.$row->bezeichnung.'</OPTION>';
$serv_tmp = new service();
if($serv_tmp->getServicesOrganisationseinheit($row->oe_kurzbz, true))
{
if (! empty($serv_tmp->result))
echo '<OPTION value="'.$row->oe_kurzbz.'" '.$selected.'>'.$row->organisationseinheittyp_kurzbz.' '.$row->bezeichnung.'</OPTION>';
}
}
echo '</SELECT>
<input type="submit" value="'.$p->t("services/filtern").'" />
</form>';
if($oe_kurzbz!='')
{
// Wenn der OE keine Services zugeteilt sind, dann die Services der untergeordneten OE laden
if($service->getServicesOrganisationseinheit($oe_kurzbz, true))
if (empty($service->result))
if(!$service->getSubServicesOrganisationseinheit($oe_kurzbz,'oe_kurzbz,bezeichnung',true))
die($service->errormsg);
$service->getServicesOrganisationseinheit($oe_kurzbz);
}
else
{
@@ -117,8 +134,6 @@ echo '<table class="tablesorter" id="myTable">
<th>'.$p->t("global/bezeichnung").'</th>
<th>'.$p->t("services/leistung").'</th>
<th>'.$p->t("services/design").'</th>
<th>'.$p->t("services/betrieb").'</th>
<th>'.$p->t("services/operativ").'</th>
<th>'.$p->t("services/details").'</th>
</tr>
</thead>
@@ -126,7 +141,7 @@ echo '<table class="tablesorter" id="myTable">
foreach($service->result as $row)
{
if ($row->content_id!='')
if ($row->content_id != '' || $row->ext_id != '')
{
$person = new person();
$person->getPersonFromBenutzer($row->design_uid);
@@ -139,12 +154,15 @@ foreach($service->result as $row)
$operativ = $person->nachname.' '.$person->vorname;
echo '<tr>';
echo '<td>',$row->oe_kurzbz,'</td>';
echo '<td>'.($row->content_id!=''?'<a href="../../../cms/content.php?content_id='.$row->content_id.'">'.$row->bezeichnung.'</a>':$row->bezeichnung).'</td>';
echo '<td><b>'.$row->bezeichnung.'</b></td>';
echo '<td>',$row->beschreibung,'</td>';
echo '<td><nobr><a href="../profile/index.php?uid='.$row->design_uid.'">',$design,'</a></nobr></td>';
echo '<td><nobr><a href="../profile/index.php?uid='.$row->betrieb_uid.'">',$betrieb,'</a></nobr></td>';
echo '<td><nobr><a href="../profile/index.php?uid='.$row->operativ_uid.'">',$operativ,'</a></nobr></td>';
echo '<td>'.($row->content_id!=''?'<a href="../../../cms/content.php?content_id='.$row->content_id.'">Details</a>':'').'</td>';
//echo '<td><nobr><a href="../profile/index.php?uid='.$row->betrieb_uid.'">',$betrieb,'</a></nobr></td>';
//echo '<td><nobr><a href="../profile/index.php?uid='.$row->operativ_uid.'">',$operativ,'</a></nobr></td>';
echo '<td>'.($row->content_id!=''?'<a href="../../../cms/content.php?content_id='.$row->content_id.'">Details</a>':'');
if (defined("ADDON_MOODLE_PATH"))
echo ' '.($row->ext_id!=''?'<a href="'.ADDON_MOODLE_PATH.'course/view.php?id='.$row->ext_id.'" target="_blank">Beschreibung</a>':'');
echo '</td>';
echo '</tr>';
}
}
@@ -152,4 +170,4 @@ echo '</tbody>
</table>
</body>
</html>';
?>
?>
@@ -305,9 +305,9 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
// Kalenderanzeige Erzeugen
$showHTML='';
$showHTML.='<table class="tabcontent">';
for ($iTmpMonat=$iTmpMinMonate;$iTmpMonat<=$iTmpMaxMonate;$iTmpMonat++)
{
// Je Monat begin der Woche und Ende KW ermitteln
@@ -374,17 +374,17 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
$iTmpMinKW=(isset($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][0])?$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][0]:1);
$iTmpMaxKW=(isset($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat])?$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][count($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat])-1]:1);
for ($iTmpWochenIndex=0;$iTmpWochenIndex<count($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat]);$iTmpWochenIndex++)
{
if (!isset($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][$iTmpWochenIndex]))
{
echo "<br>".$p->t('eventkalender/wochenindexWurdeNichtGefunden',array($iTmpWochenIndex))."<br>";
break;
break;
}
$iTmpWoche=$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][$iTmpWochenIndex];
$nowWeek=(int)date("W", mktime(0,0,0,date("m"),date("d"),date("y")));
// Fuer alle WochenTage das Script Anzeige,Verstecken erzeugen
@@ -401,7 +401,7 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
// Wochenzeile Start
$showHTML.='<tr>';
// Die KW hat keine Daten - Initialisieren mit Array
if (!isset($veranstaltung_kalender[$Jahr][$iTmpMonat]['Woche'][$iTmpMonat][$iTmpWoche]))
{
@@ -437,7 +437,7 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
{
if (!isset($veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestamp'][$iTmpWoche][$iTmpTag]))
continue;
$iTmpTimeStamp=$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestamp'][$iTmpWoche][$iTmpTag];
if (isset($veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTag'][$iTmpWoche][$iTmpTag]))
@@ -577,7 +577,7 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
$showHTML.='</div>';
$showHTML.='</td>';
$showHTML.='</tr></table></td>';
} // 7 Tage Container Ende
$showHTML.='</tr>';
}
@@ -643,7 +643,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
$iTmpInitDay=mktime(0, 0, 0, $iTmpMonat ,(1 - ($iTmpTagNr==0?7:$iTmpTagNr)) + 1, $Jahr);
if (empty($iTmpInitDay))
die("<p>Fehler bei Monat $iTmpZwMonat ,Tag (1 - ($iTmpTagNr==0?7:$iTmpTagNr) )+1, Jahr $Jahr </p>");
}
// KalenderInit
@@ -659,7 +659,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
$iTmpZwWochentag=(int)date('w',$iTmpInitDay);
$iTmpZwWochentagname=date('D',$iTmpInitDay);
$iTmpZw_jjjjmmtt=date('Ymd',$iTmpInitDay);
$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestamp'][$iTmpWoche][$iTmpTag]=$iTmpInitDay;
$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestampDatum'][$iTmpWoche][$iTmpTag]=$iTmpZw_jjjjmmtt;
$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTag'][$iTmpWoche][$iTmpZwWochentag]=array();
@@ -668,7 +668,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
$iTmpMinKW=1;
}
for ($iTmpWoche=$iTmpMinKW;$iTmpWoche<=$iTmpMaxKW;$iTmpWoche++)
{
$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][]=$iTmpWoche;
@@ -689,8 +689,8 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
}
}
$veranstaltung_next=$veranstaltung_tabelle;
if (count($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat])<4)
{
die('Es wurden keine Wochen gefunden? '.__FILE__.' Parameter Line: '.__LINE__);
@@ -698,18 +698,18 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
for ($iTmpWochenIndex=0;$iTmpWochenIndex<count($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat]);$iTmpWochenIndex++)
{
if (!isset($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][$iTmpWochenIndex]))
{
echo "<br>".$p->t('eventkalender/wochenindexWurdeNichtGefunden',array($iTmpWochenIndex))."<br>";
break;
break;
}
$iTmpWoche=$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][$iTmpWochenIndex];
// Keine weitere Vearbeitungen mehr noetig
if (!is_array($veranstaltung_next) || count($veranstaltung_next)<1)
continue;
for ($iTmpTag=0;$iTmpTag<7;$iTmpTag++)
{
$iTmpInitDay=$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestamp'][$iTmpWoche][$iTmpTag];
@@ -727,7 +727,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
// es werden nur mehr die Tage die noch nicht verarbeitet sind im next gemerkt
$veranstaltung=$veranstaltung_next;
$veranstaltung_next=array();
reset($veranstaltung);
for ($iTmpVeranstaltung=0;$iTmpVeranstaltung<count($veranstaltung);$iTmpVeranstaltung++)
{
@@ -751,7 +751,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
} // Ende For Woche
}
}
return $veranstaltung_kalender;
}
@@ -900,7 +900,7 @@ global $p;
// Erzeugen PopUp URL fuer Entfernen
// Url
$cTmpScriptWartung=' onclick="if (!confirm(\' '.$p->t('eventkalender/wollenSieWirklichIdXYloeschen',array($veranstaltung_tabelle[$iTmpZehler]->veranstaltung_id)).' ?\')) {return false;} ; callWindows(\'jahresplan_veranstaltung.php?work=del&amp;veranstaltung_id='.$veranstaltung_tabelle[$iTmpZehler]->veranstaltung_id.'\',\'Veranstaltung_Loeschen\');" ';
// Loeschen Icon und Text
$showHTML.='<td id="jh_va_delrow'.$iTmpZehler.'" '.$cTmpScriptWartung.'>
<img title="ID '.$veranstaltung_tabelle[$iTmpZehler]->veranstaltung_id.' '.$p->t("global/entfernen").' '.$veranstaltung_tabelle[$iTmpZehler]->titel.'" height="14px" src="../../../skin/images/date_delete.png" alt="entfernen Veranstaltung" border="0">
@@ -1097,4 +1097,34 @@ function jahresplan_date_to_timestamp($string="")
}
return $cTmpWert;
}
?>
function printlinks($text)
{
// Volle Links
$pattern = '~[a-z]+://\S+~';
if($num_found = preg_match_all($pattern, $text, $out))
{
foreach($out[0] as $link)
{
echo '<a href="'.$link.'" target="_blank">'.$link.'</a><br>';
}
}
if(defined('JAHRESPLAN_TICKET_LINK'))
{
// TicketsIds mit #1234
$pattern = '~\#[0-9]+~';
if($num_found = preg_match_all($pattern, $text, $out))
{
foreach($out[0] as $ticketnr)
{
$id = mb_substr($ticketnr,1);
$link = JAHRESPLAN_TICKET_LINK.$id;
echo '<a href="'.$link.'" target="_blank">'.$link.'</a><br>';
}
}
}
}
?>
@@ -20,60 +20,60 @@
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
#-------------------------------------------------------------------------------------------
/*
#-------------------------------------------------------------------------------------------
/*
* Veranstaltungsdaten - Pflege
*
* Aktionen: Anzeige, Anlage, Aenderung und Loeschen
* Ansicht : Voll oder Popup (window.opener)
* Ansicht : Voll oder Popup (window.opener)
*
* Zusatz : Reservierungsinformationen
* koennen im Veranstaltungszeitraum dazu gefuegt werden
*
* Zusatz : Reservierungsinformationen
* koennen im Veranstaltungszeitraum dazu gefuegt werden
*
*
*/
// ---------------- CIS Include Dateien einbinden
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
// ---------------- Datenbank-Verbindung
// ---------------- Datenbank-Verbindung
include_once('../../../include/person.class.php');
include_once('../../../include/benutzer.class.php');
include_once('../../../include/benutzerberechtigung.class.php');
// ---------------- Jahresplan Classe und Allg.Funktionen
// ---------------- Jahresplan Classe und Allg.Funktionen
include_once('../../../include/jahresplan.class.php');
include_once('jahresplan_funktionen.inc.php');
if (!$is_wartungsberechtigt)
die($p->t("global/keineBerechtigungFuerDieseSeite")).('<a href="javascript:history.back()">'.$p->t("global/zurueck").'</a>');
// ------------------------------------------------------------------------------------------
// Init
// ------------------------------------------------------------------------------------------
$error='';
$error='';
// ------------------------------------------------------------------------------------------
// Request Parameter
// Request Parameter
// ------------------------------------------------------------------------------------------
// Parameter Veranstaltungskategorie
$veranstaltungskategorie_kurzbz=trim((isset($_REQUEST['veranstaltungskategorie_kurzbz']) ? $_REQUEST['veranstaltungskategorie_kurzbz']:''));
// Parameter Veranstaltung
$veranstaltung_id=trim((isset($_REQUEST['veranstaltung_id']) ? $_REQUEST['veranstaltung_id']:''));
$work=trim((isset($_REQUEST['work']) ? $_REQUEST['work']:''));
// ------------------------------------------------------------------------------------------
// Datenlesen fuer Anzeige
// a) verarbeiten wenn Request Parameter 'work' - save(update) oder del
// b) alle Veranstaltung lesen
if (!empty($work))
{
$Jahresplan->InitVeranstaltung();
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
$Jahresplan->show_only_public_kategorie=($is_mitarbeiter?false:true);
$Jahresplan->freigabe=($is_wartungsberechtigt?false:true);
if ($work=='save')
@@ -113,18 +113,18 @@
if (window.opener && !window.opener.closed) {
if (confirm("Soll die Hauptseite neu aufgebaut werden?")) {
window.opener.location.reload();
}
}
}
-->
</script>
';
}
}
if ($work=='del')
{
if(!$veranstaltung=$Jahresplan->deleteVeranstaltung($veranstaltung_id))
{
{
$error=$p->t("global/fehlerBeimLoeschenDesEintrags").$Jahresplan->errormsg;
}
else
@@ -137,34 +137,34 @@
if (window.opener && !window.opener.closed) {
if (confirm("'.$p->t("eventkalender/sollDieHauptseiteNeuAufgebautWerden").'?")) {
window.opener.location.reload();
}
}
this.close();
}
-->
</script>
';
</script>
';
}
}
}
// ------------------------------------------------------------------------------------------
// Kategorie - Daten lesen fuer Kategorieselect
// Kategorie - Daten lesen fuer Kategorieselect
// Veranstaltungskategorien ohne Selektionsbedingung
// ------------------------------------------------------------------------------------------
$Jahresplan->InitVeranstaltungskategorie();
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
$Jahresplan->show_only_public_kategorie=($is_mitarbeiter?false:true);
if (!$veranstaltungskategorie=$Jahresplan->loadVeranstaltungskategorie())
die($Jahresplan->errormsg);
// ------------------------------------------------------------------------------------------
// Daten lesen fuer Anzeige der
// Veranstaltungen mit Selektionsbedingung
// ------------------------------------------------------------------------------------------
if (!empty($veranstaltung_id))
{
$Jahresplan->InitVeranstaltung();
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
$Jahresplan->InitVeranstaltung();
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
$Jahresplan->show_only_public_kategorie=($is_mitarbeiter?false:true);
$Jahresplan->freigabe=($is_wartungsberechtigt?false:true);
@@ -175,7 +175,7 @@
if ($veranstaltungen=$Jahresplan->loadVeranstaltung())
{
$veranstaltungen=jahresplan_funk_veranstaltung_extend($veranstaltungen);
while (list($key, $value) = each($veranstaltungen))
while (list($key, $value) = each($veranstaltungen))
{
$veranstaltung[$key]=$value;
}
@@ -187,16 +187,16 @@
die($Jahresplan->errormsg);
}
// Plausib
if (!is_array($veranstaltung) || count($veranstaltung)<1 || !isset($veranstaltung["veranstaltung_id"]))
if (!is_array($veranstaltung) || count($veranstaltung)<1 || !isset($veranstaltung["veranstaltung_id"]))
{
$work='new';
}
}
}
else // Reload ohne Datenverarbeitung , die Aufrufparameter in die Datentabelle uebertragen fuer Value der Inputfelder
{
$veranstaltung=$_REQUEST;
}
?>
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
@@ -208,11 +208,11 @@
</script>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
<!--
form {display:inline;}
label {text-align:right;}
iframe {display:inline;width: 100%;border:0px;}
.cursor_hand {cursor:pointer;vertical-align: top;white-space : nowrap;}
.ausblenden {display:none;}
.footer_zeile {color: silver;}
@@ -220,153 +220,153 @@
</style>
<script language="JavaScript1.2" type="text/javascript">
<!--
function PruefeDatum(Datum,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge, tageMonat;
Laenge=Datum.length;
var datum_int = new Date();
function PruefeDatum(Datum,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge, tageMonat;
Laenge=Datum.length;
var datum_int = new Date();
if (!parseInt(Startjahr) || Startjahr<1000)
{
{
Startjahr = datum_int.getFullYear();
Startjahr = Startjahr - 1;
}
Startjahr = Startjahr - 1;
}
if (!parseInt(Endjahr) || Endjahr<1000)
{
Endjahr = datum_int.getFullYear();
Endjahr = Endjahr +1;
}
if (Laenge==10 && Datum.substring(2,3)=="." && Datum.substring(5,6)==".")
{
Tag=parseInt(Datum.substring(0,2),10);
Monat=parseInt(Datum.substring(3,5),10);
Jahr=parseInt(Datum.substring(6,10),10);
}
else
{
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>!");
return false;
}
if (Monat==4 || Monat==6 || Monat==9 || Monat==11)
{
tageMonat=30;
}
else if (Monat==1 || Monat==3 || Monat==5 || Monat==7 || Monat==8
|| Monat==10 || Monat==12)
{
tageMonat=31;
}
else if(Monat==2 && Jahr%4==0 && Jahr%100!=0 || Jahr%400==0)
{
tageMonat=29;
}
else if(Monat==2 && Jahr%4!=0 || Jahr%100==0 && Jahr%400!=0)
{
tageMonat=28;
}
if (Tag>=1 && Tag<=tageMonat && Monat>=1 && Monat<=12 && Jahr>=Startjahr && Jahr<=Endjahr)
{
return true;
}
else
{
if (Laenge==10 && Datum.substring(2,3)=="." && Datum.substring(5,6)==".")
{
Tag=parseInt(Datum.substring(0,2),10);
Monat=parseInt(Datum.substring(3,5),10);
Jahr=parseInt(Datum.substring(6,10),10);
}
else
{
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>!");
return false;
}
if (Monat==4 || Monat==6 || Monat==9 || Monat==11)
{
tageMonat=30;
}
else if (Monat==1 || Monat==3 || Monat==5 || Monat==7 || Monat==8
|| Monat==10 || Monat==12)
{
tageMonat=31;
}
else if(Monat==2 && Jahr%4==0 && Jahr%100!=0 || Jahr%400==0)
{
tageMonat=29;
}
else if(Monat==2 && Jahr%4!=0 || Jahr%100==0 && Jahr%400!=0)
{
tageMonat=28;
}
if (Tag>=1 && Tag<=tageMonat && Monat>=1 && Monat<=12 && Jahr>=Startjahr && Jahr<=Endjahr)
{
return true;
}
else
{
if (Tag<1 || Tag>tageMonat)
//alert("Kein gueltiges Datum - Tag ("+ Tag +" >1 und <"+ tageMonat+" ) Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
//alert("Kein gueltiges Datum - Tag ("+ Tag +" >1 und <"+ tageMonat+" ) Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
else if (Monat<1 || Monat>12)
//alert("Kein gueltiges Datum - Monat ("+ Monat +"> 1 und <12 ) Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
else if (Jahr<Startjahr || Jahr>Endjahr )
//alert("Kein gueltiges Datum - Jahr ("+ Jahr +"> "+Startjahr+" und <"+Endjahr+" ) Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
else
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
else
//alert("Kein gueltiges Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
return false;
}
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
return false;
}
}
function TimestampDatumZeit(Datum,Zeit,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge,Stunde,Minute;
Laenge=Zeit.length;
var datum = new Date();
var Endjahr = datum.getYear();
function TimestampDatumZeit(Datum,Zeit,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge,Stunde,Minute;
Laenge=Zeit.length;
var datum = new Date();
var Endjahr = datum.getYear();
Endjahr = Endjahr +10;
var Startjahr = datum.getYear();
Startjahr = Startjahr - 10;
Startjahr = Startjahr - 10;
if (!PruefeDatum(Datum,Startjahr,Endjahr))
return false;
Tag=parseInt(Datum.substring(0,2),10);
Monat=parseInt(Datum.substring(3,5),10);
Jahr=parseInt(Datum.substring(6,10),10);
if (Laenge==5 && Zeit.substring(2,3)==":")
{
Stunde=parseInt(Zeit.substring(0,2),10);
Minute=parseInt(Zeit.substring(3,5),10);
}
else if (Laenge==4 && Zeit.substring(1,2)==":")
{
Stunde=parseInt(Zeit.substring(0,1),10);
Minute=parseInt(Zeit.substring(2,4),10);
}
else
{
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>!");
return false;
Tag=parseInt(Datum.substring(0,2),10);
Monat=parseInt(Datum.substring(3,5),10);
Jahr=parseInt(Datum.substring(6,10),10);
if (Laenge==5 && Zeit.substring(2,3)==":")
{
Stunde=parseInt(Zeit.substring(0,2),10);
Minute=parseInt(Zeit.substring(3,5),10);
}
else if (Laenge==4 && Zeit.substring(1,2)==":")
{
Stunde=parseInt(Zeit.substring(0,1),10);
Minute=parseInt(Zeit.substring(2,4),10);
}
else
{
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>!");
return false;
}
Monat=Monat-1;
//if (Monat<1) Monat=1;
var timestamp = (new Date(Jahr,Monat,Tag,Stunde,Minute).getTime()/1000);
var timestamp = (new Date(Jahr,Monat,Tag,Stunde,Minute).getTime()/1000);
return timestamp;
}
var InfoWin;
var InfoWin;
function callWindows(url,nameID)
{
// width=(Pixel) - erzwungene Fensterbreite
// height=(Pixel) - erzwungene Fensterh&ouml;he
// resizable=yes/no - Gr&ouml;&szlig;e fest oder ver&auml;nderbar
// scrollbars=yes/no - fenstereigene Scrollbalken
// toolbar=yes/no - fenstereigene Buttonleiste
// status=yes/no - fenstereigene Statuszeile
// directories=yes/no - fenstereigene Directory-Buttons (Netscape)
// menubar=yes/no - fenstereigene Men&uuml;leiste
// location=yes/no - fenstereigenes Eingabe-/Auswahlfeld f&uuml;r URLs
// width=(Pixel) - erzwungene Fensterbreite
// height=(Pixel) - erzwungene Fensterh&ouml;he
// resizable=yes/no - Gr&ouml;&szlig;e fest oder ver&auml;nderbar
// scrollbars=yes/no - fenstereigene Scrollbalken
// toolbar=yes/no - fenstereigene Buttonleiste
// status=yes/no - fenstereigene Statuszeile
// directories=yes/no - fenstereigene Directory-Buttons (Netscape)
// menubar=yes/no - fenstereigene Men&uuml;leiste
// location=yes/no - fenstereigenes Eingabe-/Auswahlfeld f&uuml;r URLs
if (InfoWin) {
InfoWin.close();
}
InfoWin=window.open(url,nameID,"copyhistory=no,directories=no,location=no,dependent=no,toolbar=yes,menubar=no,status=no,resizable=yes,scrollbars=yes, width=800,height=800,left=60, top=15");
InfoWin=window.open(url,nameID,"copyhistory=no,directories=no,location=no,dependent=no,toolbar=yes,menubar=no,status=no,resizable=yes,scrollbars=yes, width=800,height=800,left=60, top=15");
InfoWin.focus();
InfoWin.setTimeout("window.close()",800000);
}
if (!window.opener || window.opener.closed) {
document.write('<h1>&nbsp;<?php echo $p->t("eventkalender/veranstaltungBearbeiten");?>&nbsp;</h1> [&nbsp;<a href="index.php"><?php echo $p->t("eventkalender/veranstaltungen");?></a>&nbsp;|&nbsp;<a href="jahresplan_veranstaltung.php"><?php echo $p->t("eventkalender/veranstaltungBearbeiten");?></a>&nbsp;|&nbsp;<a href="jahresplan_kategorie.php"><?php echo $p->t("eventkalender/kategorie");?></a>&nbsp;]&nbsp;<?php echo $userNAME; ?><br/><br/>');
} else {
window.resizeTo(800,800);
}
-->
</script>
</script>
</head>
<body>
<?php
<?php
// Defaultwerte
$cTmpCheckHeute = date("d.m.Y", mktime(0,0,0,date("m"),date("d"),date("y")));
@@ -387,7 +387,7 @@
{
$veranstaltung['ende_timestamp']=$cTmpTimestampEnde;
}
// Wartungsmenue URL
$cTmpScriptWartungVeranstaltung='javascript:callWindows("jahresplan_veranstaltung.php?work=show&amp;veranstaltung_id=","Veranstaltung_Aenderung");';
$cTmpScriptWartungKategorie='javascript:callWindows("jahresplan_kategorie.php?work=show&amp;veranstaltungskategorie_kurzbz=","Kategorie_Aenderung");';
@@ -399,7 +399,7 @@
<form accept-charset="UTF-8" name="selVeranstaltung" target="_self" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<table cellpadding="10" cellspacing="0">
<tr>
<td><label for="veranstaltung_id">ID</label></td>
<td>
@@ -408,9 +408,9 @@
</td>
<td title="<?php echo $p->t("eventkalender/neuanlage")?> <?php echo date("d.m.Y",$veranstaltung['start_timestamp']);?>" class="cursor_hand" onclick="self.location.href='<?php echo $_SERVER['PHP_SELF'].'?start_timestamp='.(isset($veranstaltung['start_timestamp'])?$veranstaltung['start_timestamp']:$cTmpTimestampStart).'&amp;ende_timestamp='.(isset($veranstaltung['ende_timestamp'])?$veranstaltung['ende_timestamp']:$cTmpTimestampEnde) ;?>';" ><?php echo $p->t("eventkalender/neuanlage")?>&nbsp;<img border="0" alt="Neuanlage" src="../../../skin/images/date_add.png" ></td>
</tr>
<tr>
<td><label for="veranstaltung_id"><?php echo $p->t("eventkalender/kategorie")?></label></td>
<td><select name="veranstaltungskategorie_kurzbz">
@@ -424,12 +424,12 @@
// Check Space
$veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz=trim($veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz);
$veranstaltungskategorie[$iTmpZehler]->bezeichnung=trim($veranstaltungskategorie[$iTmpZehler]->bezeichnung);
$cURL='jahresplan_bilder.php?time='.time().'&'.(strlen($veranstaltungskategorie[$iTmpZehler]->bild)<800?'heximg='.$veranstaltungskategorie[$iTmpZehler]->bild:'veranstaltungskategorie_kurzbz='.$veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz);
$veranstaltungskategorie[$iTmpZehler]->bild_image='<img height="20" border="0" alt="Kategoriebild" titel="'.$veranstaltungskategorie[$iTmpZehler]->bezeichnung.'" src="'.$cURL.'">';
echo '<option '.(!empty($veranstaltungskategorie[$iTmpZehler]->farbe)?' style="background-color:#'.$veranstaltungskategorie[$iTmpZehler]->farbe.'" ':'').' '.(isset($veranstaltung['veranstaltungskategorie_kurzbz']) && $veranstaltung['veranstaltungskategorie_kurzbz']==$veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz?' selected="selected" ':'').' value="'.$veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz.'">'.$veranstaltungskategorie[$iTmpZehler]->bezeichnung.'</option>';
}
}
}
?>
</select></td>
@@ -482,18 +482,30 @@
</select>
&nbsp;<?php echo $p->t("eventkalender/ganztaegigeVeranstaltung")?>
&nbsp;<input <?php echo ( ($veranstaltung['start_zeit']=='00:00' && $veranstaltung['ende_zeit']=='23:45')?' checked="checked" ':'' ); ?> type="checkbox" value="1" onclick="if (this.checked!=false) {window.document.selVeranstaltung.Zeit1.options.selectedIndex=0;window.document.selVeranstaltung.Zeit2.options.selectedIndex=(window.document.selVeranstaltung.Zeit2.options.length - 1); }; var time_stamp=TimestampDatumZeit(window.document.selVeranstaltung.Datum1.value,window.document.selVeranstaltung.Zeit1.value); if (time_stamp) {window.document.selVeranstaltung.start.value=time_stamp; }; time_stamp=TimestampDatumZeit(window.document.selVeranstaltung.Datum2.value,window.document.selVeranstaltung.Zeit2.value); if (time_stamp) {window.document.selVeranstaltung.ende.value=time_stamp; };" name="tmpGanztag" >
</td>
</tr>
</td>
</tr>
<tr>
<td><label for="beschreibung"><?php echo $p->t("global/titel")?></label></td>
<td><textarea rows="3" cols="80" id="beschreibung" name="beschreibung" onblur="if (this.value=='') {this.value=this.defaultValue;}" onfocus="if (this.value=='<?php echo constEingabeFehlt; ?>') { this.value='';}"><?php echo (isset($veranstaltung['beschreibung'])?$veranstaltung['beschreibung']:constEingabeFehlt);?></textarea></td>
</tr>
<td>
<textarea rows="3" cols="80" id="beschreibung" name="beschreibung" onblur="if (this.value=='') {this.value=this.defaultValue;}" onfocus="if (this.value=='<?php echo constEingabeFehlt; ?>') { this.value='';}"><?php echo (isset($veranstaltung['beschreibung'])?$veranstaltung['beschreibung']:constEingabeFehlt);?></textarea>
<?php
if(isset($veranstaltung['beschreibung']))
echo printlinks($veranstaltung['beschreibung']);
?>
</td>
</tr>
<tr>
<td><label for="inhalt"><?php echo $p->t("global/beschreibung")?></label></td>
<td><textarea rows="3" cols="80" id="inhalt" name="inhalt"><?php echo (isset($veranstaltung['inhalt'])?$veranstaltung['inhalt']:'');?></textarea></td>
</tr>
<td>
<textarea rows="3" cols="80" id="inhalt" name="inhalt"><?php echo (isset($veranstaltung['inhalt'])?$veranstaltung['inhalt']:'');?></textarea>
<?php
if(isset($veranstaltung['inhalt']))
echo printlinks($veranstaltung['inhalt']);
?>
</td>
</tr>
<tr>
<td>
<table>
@@ -521,7 +533,7 @@
</tr>
</table>
</td>
</tr>
</tr>
<tr class="ausblenden">
<td colspan="2">
<input type="Text" value="<?php echo (!isset($veranstaltung['insertvon']) || empty($veranstaltung['insertvon'])?$user:$veranstaltung['insertvon'] ); ?>" name="insertvon" >
@@ -548,12 +560,12 @@
<?php
echo '<p class="error">'.$error.'</p>';
$veranstaltung_id=(isset($veranstaltung['veranstaltung_id'])?$veranstaltung['veranstaltung_id']:$veranstaltung_id);
if (!empty($veranstaltung_id))
{
echo '<hr>'.jahresplan_veranstaltung_detail_user($veranstaltung,$is_wartungsberechtigt);
echo '<a href="javascript:callWindows(\'jahresplan_reservierung.php?veranstaltung_id='.$veranstaltung_id.'&amp;openfirst=1&amp;startDatum='.(isset($veranstaltung['start_timestamp'])?$veranstaltung['start_timestamp']:mktime(12,0,0,date("m"),date("d"),date("y"))).'&amp;endeDatum='.(isset($veranstaltung['ende_timestamp'])?$veranstaltung['ende_timestamp']:mktime(13,0,0,date("m"),date("d"),date("y"))).'\',\'Reservierung\');">'.$p->t("eventkalender/reservierungenInEinemNeuenFensterAnzeigen").'.</a>';
echo '<a href="javascript:callWindows(\'jahresplan_reservierung.php?veranstaltung_id='.$veranstaltung_id.'&amp;openfirst=1&amp;startDatum='.(isset($veranstaltung['start_timestamp'])?$veranstaltung['start_timestamp']:mktime(12,0,0,date("m"),date("d"),date("y"))).'&amp;endeDatum='.(isset($veranstaltung['ende_timestamp'])?$veranstaltung['ende_timestamp']:mktime(13,0,0,date("m"),date("d"),date("y"))).'\',\'Reservierung\');">'.$p->t("eventkalender/reservierungenInEinemNeuenFensterAnzeigen").'.</a>';
echo '<iframe id="reservierung" src="jahresplan_reservierung.php?veranstaltung_id='.$veranstaltung_id.'&amp;startDatum='.(isset($veranstaltung['start_timestamp'])?$veranstaltung['start_timestamp']:mktime(12,0,0,date("m"),date("d"),date("y"))).'&amp;endeDatum='.(isset($veranstaltung['ende_timestamp'])?$veranstaltung['ende_timestamp']:mktime(13,0,0,date("m"),date("d"),date("y"))).'"></iframe>';
}
else
@@ -562,4 +574,4 @@
}
?>
</body>
</html>
</html>
+51 -47
View File
@@ -17,12 +17,12 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Cristina Hainberger <hainberg@technikum-wien.at>
*
*
* Description: This file creates a studentlist with students' profile fotos
* by a given studiengangs- and lehrveranstaltungs ID (and eventually a given lehreinheit ID).
* If fotos are locked by student, a dummy picture is inserted instead of the students foto.
* EXCEPTION: if user has admins or assitents rights, ALL students' fotos are iserted (even locked ones)
*
*
*/
require_once('../../../config/cis.config.inc.php');
@@ -60,7 +60,7 @@ $lv->load($lvid);
$berechtigung = new benutzerberechtigung();
$berechtigung->getBerechtigungen($user);
if (!$berechtigung->isBerechtigt('admin') && !$berechtigung->isBerechtigt('assistenz') && !$berechtigung->isBerechtigt('lehre', $lv->oe_kurzbz, 's') && !check_lektor_lehrveranstaltung($user, $lvid, $studiensemester))
die('Sie muessen LektorIn der LV sein oder das Recht "ADMIN", "ASSISTENZ" oder "LEHRE" haben, um diese Seite aufrufen zu koennen');
@@ -85,11 +85,11 @@ $qry = "SELECT DISTINCT ON
gruppe,
gruppe_kurzbz,
stg_typ
FROM
FROM
campus.vw_lehreinheit
WHERE
WHERE
lehrveranstaltung_id=" . $db->db_add_param($lvid, FHC_INTEGER) . "
AND
AND
studiensemester_kurzbz=" . $db->db_add_param($studiensemester);
if ($lehreinheit != '')
$qry .= " AND lehreinheit_id=" . $db->db_add_param($lehreinheit, FHC_INTEGER);
@@ -111,8 +111,8 @@ if ($result = $db->db_query($qry)) {
if ($row->gruppe_kurzbz == '')
$gruppen_string = trim($row->kuerzel . '-' . $row->semester);
else
$gruppen_string = $row->gruppe_kurzbz;
$gruppen_string = $row->gruppe_kurzbz;
$gruppen_string_arr[] = $gruppen_string;
}
}
@@ -122,10 +122,10 @@ $studiengruppe = implode(", ", array_unique($gruppen_string_arr));
//get studiengangstyp-bezeichnung
$qry = "SELECT
bezeichnung
FROM
public.tbl_studiengangstyp
WHERE
bezeichnung
FROM
public.tbl_studiengangstyp
WHERE
typ =" . $db->db_add_param($stg_typ);
if ($result = $db->db_query($qry)) {
@@ -148,43 +148,43 @@ $data = array(
//**************************** students data *******************************
//load students-data
$qry = 'SELECT DISTINCT ON
(nachname, vorname, person_id)
vorname,
nachname,
(nachname, vorname, person_id)
vorname,
nachname,
matrikelnr,
tbl_studentlehrverband.semester,
tbl_studentlehrverband.verband,
tbl_studentlehrverband.semester,
tbl_studentlehrverband.verband,
tbl_studentlehrverband.gruppe,
(SELECT
status_kurzbz
FROM
public.tbl_prestudentstatus
WHERE
prestudent_id=tbl_student.prestudent_id
ORDER BY
(SELECT
status_kurzbz
FROM
public.tbl_prestudentstatus
WHERE
prestudent_id=tbl_student.prestudent_id
ORDER BY
datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_studiengang.kurzbz,
tbl_studiengang.typ,
tbl_bisio.bisio_id,
tbl_bisio.von,
tbl_bisio.bis,
tbl_bisio.bisio_id,
tbl_bisio.von,
tbl_bisio.bis,
tbl_student.studiengang_kz AS stg_kz_student,
tbl_zeugnisnote.note,
tbl_mitarbeiter.mitarbeiter_uid,
tbl_person.matr_nr,
tbl_person.geschlecht,
tbl_person.foto,
tbl_zeugnisnote.note,
tbl_mitarbeiter.mitarbeiter_uid,
tbl_person.matr_nr,
tbl_person.geschlecht,
tbl_person.foto,
tbl_person.foto_sperre
FROM
campus.vw_student_lehrveranstaltung
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id)
JOIN public.tbl_person USING(person_id)
LEFT JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz)
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
LEFT JOIN lehre.tbl_zeugnisnote ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
WHERE
@@ -214,7 +214,7 @@ if ($result = $db->db_query($qry)) {
while ($row = $db->db_fetch_object($result)) {
if ($row->status != 'Abbrecher' && $row->status != 'Unterbrecher') {
$anzahl_studierende++;
if ($row->status == 'Incoming') //Incoming
$zusatz = '(i)';
else
@@ -231,9 +231,9 @@ if ($result = $db->db_query($qry)) {
if ($row->stg_kz_student == $a_o_kz) //Außerordentliche Studierende
$zusatz .= '(a.o.)';
//allow admin and assistenz to see ALL fotos (even if locked by user)
if ($show_all_fotos)
if ($show_all_fotos)
$row->foto_sperre = 'f';
//create foto (if not locked by student OR if fotolist is created by admin or assistenz)
@@ -241,7 +241,7 @@ if ($result = $db->db_query($qry)) {
$foto_src = $row->foto;
$foto_url = sys_get_temp_dir() . '/foto' . trim($row->matrikelnr) . '.jpg';
$foto_url_arr[] = $foto_url;
//create writeable file
if (!$foto = fopen($foto_url, 'w'))
die("Das Bild konnte nicht erstellt werden");
@@ -250,15 +250,19 @@ if ($result = $db->db_query($qry)) {
{
die("Das Bild konnte nicht erstellt werden");
}
//add foto to document
$doc->addImage($foto_url, trim($row->matrikelnr) . '.jpg', 'image/jpg');
}
elseif ($row->foto == '')
{
{
$foto_url = '';
}
}
else
{
$foto_url = '';
}
//create studiengruppe
$student_studiengruppe = strtoupper($row->typ.$row->kurzbz.'-'.$row->semester);
@@ -268,7 +272,7 @@ if ($result = $db->db_query($qry)) {
'nachname' => mb_strtoupper($row->nachname, 'UTF-8'),
'personenkennzeichen' => trim($row->matrikelnr),
'geschlecht' => $row->geschlecht,
'foto_gesperrt' => $row->foto_sperre, // f/t
'foto_gesperrt' => $row->foto_sperre, // f/t
'foto_url' => $foto_url,
'studiengruppe' => $student_studiengruppe,
'verband' => trim($row->verband),
@@ -289,7 +293,7 @@ $doc->addDataArray($data, 'fotoliste');
//set doc name
$doc->setFilename('Fotoliste_'.$stg_bezeichnung.'_'.$studiensemester.'_'.$lv_bezeichnung);
//create doc in format required
//create doc in format required
if (!$doc->create($output))
die($doc->errormsg);
@@ -301,4 +305,4 @@ $doc->close();
//unlink fotos from tmp-folder
foreach ($foto_url_arr as $foto_url)
unlink($foto_url);
unlink($foto_url);
+75 -65
View File
@@ -16,8 +16,8 @@
* 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>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Karl Burkhart <karl.burkhart@technikum-wien.at>.
*/
require_once('../../config/cis.config.inc.php');
require_once('../../include/functions.inc.php');
@@ -29,20 +29,20 @@ $sprache = getSprache();
$p = new phrasen($sprache);
$uid = get_uid();
$db = new basis_db();
if(!isset($_REQUEST['grp']))
if (!isset($_REQUEST['grp']))
die('Falsche Parameter');
if(mb_strlen($_REQUEST['grp'])>32)
if (mb_strlen($_REQUEST['grp'])>32)
die('Grp ungueltig');
//Pruefen ob es eine gueltige Gruppe ist
$gruppe = new gruppe();
if(!$gruppe->exists($_REQUEST['grp']))
if (!$gruppe->exists($_REQUEST['grp']))
{
//Wenn es keine Gruppe in der DB ist, kann es
//noch ein Studierendenverteiler sein
//bif_std
if(!preg_match('/^\D\D\D_std$/', $_REQUEST['grp']))
if (!preg_match('/^\D\D\D_std$/', $_REQUEST['grp']))
{
die('Ungueltige Gruppe');
}
@@ -52,38 +52,35 @@ function mail_id_generator()
mt_srand((double)microtime()*1000000);
/* Laenge des Passwortes dem Zufall ueberlassen */
$length = 6; //mt_rand(6, 6);
$length = 6;
$fix_similar = '';
$valid_charset = "";
/* Stelle ein Charset zusammen */
if (!$valid_charset)
{
// deactivated, regarding an case sensitive issue
//$valid_charset .= 'ABCDEFGHIJKLMNOPQRSTUVXYZ';
$valid_charset .= 'abcdefghijklmnopqrstuvxyz';
$valid_charset .= '0123456789';
//$valid_charset .= '!@_-';
}
$charset_length = mb_strlen($valid_charset);
if ($charset_length == 0) return false;
/* Initialisieren - Auswahl von chars bis definierte Anzahl erreicht */
$mail_id = "";
while(strlen($mail_id) < $length)
{
/* Waehle einen zufaelligen char aus */
$char = $valid_charset[mt_rand(0, ($charset_length-1))];
/* Abgleich von gleich aussehenden chars */
if (($fix_similar && !strpos('O01lI5S', $char)) || !$fix_similar) $mail_id .= $char;
/* Stelle ein Charset zusammen */
if (!$valid_charset)
{
$valid_charset .= 'abcdefghijklmnopqrstuvxyz';
$valid_charset .= '0123456789';
}
return $mail_id;
$charset_length = mb_strlen($valid_charset);
if ($charset_length == 0) return false;
/* Initialisieren - Auswahl von chars bis definierte Anzahl erreicht */
$mail_id = '';
while (strlen($mail_id) < $length)
{
/* Waehle einen zufaelligen char aus */
$char = $valid_charset[mt_rand(0, ($charset_length-1))];
/* Abgleich von gleich aussehenden chars */
if (($fix_similar && !strpos('O01lI5S', $char)) || !$fix_similar) $mail_id .= $char;
}
return $mail_id;
}
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
echo '<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
@@ -92,48 +89,61 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www
</head>
<body>';
if(isset($_REQUEST['token']) && isset($_REQUEST['grp']))
if (isset($_REQUEST['token']) && isset($_REQUEST['grp']))
{
echo '
<table class="tabcontent">
<tr>
<td class="ContentHeader"><font class="ContentHeader">'.$p->t('mailverteiler/mailverteiler').'</font></td>
<td class="ContentHeader"><font class="ContentHeader">'.$p->t('mailverteiler/status').'</font></td>
</tr>';
<tr>
<td class="ContentHeader"><font class="ContentHeader">'.$p->t('mailverteiler/mailverteiler').'</font></td>
<td class="ContentHeader"><font class="ContentHeader">'.$p->t('mailverteiler/status').'</font></td>
</tr>';
/* Generate an random String */
$mail_id=mail_id_generator();
$mail_id = mail_id_generator();
/* call the shellpart at polyxena */
$command = "ssh -p 22022 root@polyxena sudo /root/bin/mlistin.sh " . $_REQUEST['grp'] . " " . $mail_id . " 2>&1";
exec($command);
/* Command to unlock Mailgroup */
$command = "ssh -i /etc/apache2/id_mail_provisioning mailadmins@bifrost2 ".$_REQUEST['grp'] . " " . $mail_id;
/* ffe, 20051020 - do a little logging */
$message= date("F j G:i:s") . " mailgroup: [" . $_REQUEST['grp'] . "] (using " . $mail_id . ") requested by [" . $uid . "]\n";
$output = array();
exec($command, $output, $retval);
$filet = fopen(LOG_PATH.'.htmlistopen.log', "a");
fwrite($filet, $message, mb_strlen($message));
fclose($filet);
if ($retval === 0)
{
// Add Log Message
$message= date("F j G:i:s") . " mailgroup: [" . $_REQUEST['grp'] . "] (using " . $mail_id . ") requested by [" . $uid . "]\n";
// for the users
echo "
<tr>
<td><a href='mailto:".$_REQUEST['grp'].$mail_id."@".DOMAIN."'>".$db->convert_html_chars($_REQUEST['desc'])."</a></td>
<td>".$p->t('mailverteiler/geoeffnet')." (Code: ".$mail_id.")</td>
</tr>
<tr>
<td colspan='2'>
<p>".$p->t('mailverteiler/klickenZumSchicken')."</p>
$filet = fopen(LOG_PATH.'.htmlistopen.log', "a");
fwrite($filet, $message, mb_strlen($message));
fclose($filet);
<p>".$p->t('mailverteiler/infoBenutzung',array($_REQUEST['grp'].$mail_id."@".DOMAIN))."</p>
</td>
</tr>
</table>
";
echo "
<tr>
<td><a href='mailto:".$_REQUEST['grp'].$mail_id."@".DOMAIN."'>".$db->convert_html_chars($_REQUEST['desc'])."</a></td>
<td>".$p->t('mailverteiler/geoeffnet')." (Code: ".$mail_id.")</td>
</tr>
<tr>
<td colspan='2'>
<p>".$p->t('mailverteiler/klickenZumSchicken')."</p>
<p>".$p->t('mailverteiler/infoBenutzung',array($_REQUEST['grp'].$mail_id."@".DOMAIN))."</p>
</td>
</tr>
";
}
else
{
echo '
<tr>
<td colspan="2">
'.$p->t('mailverteiler/oeffnenFehlgeschlagen').'
</td>
</tr>';
}
echo '</table>';
}
else
{
if($_REQUEST['grp']=="")
if ($_REQUEST['grp'] == '')
{
exit();
}
@@ -142,7 +152,7 @@ else
echo $p->t('mailverteiler/bestaetigeOeffnen',array($_REQUEST['grp']))." : <a href=\"".$_SERVER['SCRIPT_NAME']."?grp=".$_REQUEST['grp']."&desc=".$db->convert_html_chars($_REQUEST['desc'])."&token=1\">".$p->t('mailverteiler/bestaetige')."</a>";
}
}
echo '</body>
</html>';
?>
+66 -32
View File
@@ -19,8 +19,9 @@
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>
* Karl Burkhart <burkhart@technikum-wien.at>
* Manfred Kindl <kindlm@technikum.wien.at>.
* Manfred Kindl <kindlm@technikum.wien.at>
* Gerald Raab <raab@technikum-wien.at>
* Alexei Karpenko <karpenko@technikum-wien.at>
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
@@ -648,7 +649,6 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
$service_id = '';
$kunde_uid = '';
}
}
}
@@ -719,13 +719,15 @@ if($projekt->getProjekteMitarbeiter($user, true))
$anzprojekte = count($projekt->result);
echo "<table width='100%'>
<tr>
<td>
<a href='".$_SERVER['PHP_SELF']."' style='font-size: larger;'>".$p->t("zeitaufzeichnung/neu")."</a>
&nbsp;
<a href='".$_SERVER['PHP_SELF']."?csvimport=1' style='font-size: larger;'>CSV Import</a>&nbsp;
<td>
<a href='".$_SERVER['PHP_SELF']."' style='font-size: larger;'>".$p->t("zeitaufzeichnung/neu")."</a><a style='font-size: larger; text-decoration: none; cursor: default'> | </a>
<a href='".$_SERVER['PHP_SELF']."?csvimport=1' style='font-size: larger;'>CSV Import</a><a style='font-size: larger; text-decoration: none; cursor: default'> | </a>
<a href='".$_SERVER['PHP_SELF']."?csvexport=1' style='font-size: larger;'>CSV Export</a>
</td>
<a href='".$_SERVER['PHP_SELF']."?csvexport=1' style='font-size: larger;'>CSV Export</a>";
if($anzprojekte > 0)
echo "<a style='font-size: larger; text-decoration: none; cursor: default'> | </a><a href='".$_SERVER['PHP_SELF']."?projektexport=1' style='font-size: larger;'>Projektexport</a>";
echo "</td>
<td class='menubox' height='10px'>";
if ($p->t("dms_link/handbuchZeitaufzeichnung")!='')
{
@@ -739,14 +741,68 @@ if($projekt->getProjekteMitarbeiter($user, true))
echo "</td>
</tr>
</table>";
echo '<table>
<tr>
<td rowspan="2">';
echo '<table>';
if (isset($_GET['projektexport']))
{
$projektexpurl = dirname($_SERVER["PHP_SELF"]) .'/zeitaufzeichnung_projektliste.php';
$aktjahr = intval(date("Y"));
$aktmonat = intval(date("m")) - 1;
$jahreanz = 3;
echo '<form action="'.$projektexpurl.'" method="GET">';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>Projektexport</td>';
echo '<td align="center">Monat: <select id="projexpmonat" name="projexpmonat">';
for($i=1;$i<13;$i++)
{
$selected = ($i == $aktmonat)?'selected = "selected"':'';
echo '<option value="'.$i.'" '.$selected.'>'.$monatsname[1][$i - 1].'</option>';
}
echo '</select></td>';
echo '<td align="center">Jahr: <select id="projexpjahr" name="projexpjahr">';
for(;$jahreanz>0;$jahreanz--)
{
echo '<option value="'.$aktjahr.'">'.$aktjahr.'</option>';
$aktjahr--;
}
echo '</select></td>';
echo '<td align="right"><input type="submit" value="Export" name="projexport"></td></tr>';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '</form>';
}
//Formular
echo '<br><form action="'.$_SERVER['PHP_SELF'].'?zeitaufzeichnung_id='.$zeitaufzeichnung_id.'" method="POST" onsubmit="return checkdatum()" enctype="multipart/form-data">';
echo '<table>
/* echo '<table>
<tr>
<td rowspan="2">';
echo '<table>';
echo '<table>';*/
if (isset($_GET['csvimport']))
{
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>CSV-Import</td><td colspan="2"><input type="file" name="csv" value="" /></td><td align="right"><input type="submit" value="Import" name="import"></td></tr>';
echo '<tr><td></td><td colspan="3">Informationen zum Format der CSV-Datei s. Leitfaden Arbeitszeitaufzeichnung</td></tr>';
echo '<tr><td colspan="4"><hr></td></tr>';
}
else
echo '<input type="file" name="csv" value="" style="display:none">';
if (isset($_GET['csvexport']))
{
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST" onsubmit="return checkdatumCSVExp(\'exp_von_datum\', \'exp_bis_datum\')">';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>CSV-Export</td>';
echo '<td>Startdatum: <input class="datepicker_datum" id="exp_von_datum" name="exp_von_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('first day of previous month')).'" /></td>';
echo '<td align="right">Enddatum: <input class="datepicker_datum" id="exp_bis_datum" name="exp_bis_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('last day of previous month')).'" /></td>';
echo '<td align="right"><input type="submit" value="Export" name="export"></td></tr>';
echo '<tr><td></td><td colspan="3"></td></tr>';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '</form>';
}
//Projekte werden nicht angezeigt wenn es keine gibt
if($anzprojekte > 0)
{
@@ -948,14 +1004,6 @@ if($projekt->getProjekteMitarbeiter($user, true))
echo '<input type="submit" value="'.$p->t("global/aendern").'" name="edit">&nbsp;&nbsp;';
echo '<input type="submit" value="'.$p->t("zeitaufzeichnung/alsNeuenEintragSpeichern").'" name="save"></td></tr>';
}
if (isset($_GET['csvimport']))
{
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>CSV-Import</td><td colspan="2"><input type="file" name="csv" value="" /></td><td align="right"><input type="submit" value="Import" name="import"></td></tr>';
echo '<tr><td></td><td colspan="3">Informationen zum Format der CSV-Datei s. Leitfaden Arbeitszeitaufzeichnung</td></tr>';
}
else
echo '<input type="file" name="csv" value="" style="display:none">';
echo '</table>';
echo '</td><td valign="top"><span id="zeitsaldo"></span><br><br><div id="monatsliste"></span></td></tr>';
@@ -998,20 +1046,6 @@ if($projekt->getProjekteMitarbeiter($user, true))
echo '</td></tr>';
echo '</table>';
echo '</form>';
if (isset($_GET['csvexport']))
{
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST" onsubmit="return checkdatumCSVExp(\'exp_von_datum\', \'exp_bis_datum\')">';
echo '<table>';
echo '<tr><td colspan="5"><hr></td></tr>';
echo '<tr><td width = "18%">CSV-Export</td>';
echo '<td>Startdatum: <input class="datepicker_datum" id="exp_von_datum" name="exp_von_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('first day of previous month')).'" /></td>';
echo '<td width = "8%">&nbsp;</td>';
echo '<td>Enddatum: <input class="datepicker_datum" id="exp_bis_datum" name="exp_bis_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('last day of previous month')).'" /></td>';
echo '<td align="right" width="23%"><input type="submit" value="Export" name="export"></td></tr>';
echo '<tr><td></td><td colspan="3"></td></tr>';
echo '</table>';
echo '</form>';
}
echo '<hr>';
echo '<h3>'.($alle===true?$p->t('zeitaufzeichnung/alleEintraege'):$p->t('zeitaufzeichnung/xTageAnsicht', array($angezeigte_tage))).'</h3>';
if ($alle===true)
@@ -0,0 +1,544 @@
<?php
/* Copyright (C) 2017 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: Alexei Karpenko <karpenko@technikum-wien.at>
*/
/**
* Creates a project list from the zeitaufzeichnung for a given user, month and year
* Shows total worktime (IST-Arbeitszeit without breaks or externe Lehre) for each workday
* together with sums of worktime and work package descriptions for each project.
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/globals.inc.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/Excel/excel.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/mitarbeiter.class.php');
require_once('../../../include/zeitaufzeichnung.class.php');
require_once('../../../include/projekt.class.php');
if (!isset($_GET['projexpmonat']))
die("Parameter monat fehlt");
if (!isset($_GET['projexpjahr']))
die("Parameter jahr fehlt");
$uid = get_uid();
$benutzer = new benutzer();
if (!$benutzer->load($uid))
die($p->t("zeitaufzeichnung/benutzerWurdeNichtGefunden", array($uid)));
$month = $_GET['projexpmonat'];
$year = $_GET['projexpjahr'];
$monthtext = $monatsname[1][$month - 1];
$username = $benutzer->vorname." ".$benutzer->nachname;
$mitarbeiter = new mitarbeiter();
$mitarbeiter->load($uid);
$persnr = $mitarbeiter->personalnummer;
$daysinmonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$date = new datum();
$ztauf = new zeitaufzeichnung();
$ztauf->getListeUserFromTo($uid, $year.'-'.$month.'-01', $year.'-'.$month.'-'.$daysinmonth);
//objects for one projectline of list (corresponds to one day)
$projectlines = [];
$dayStart = $dayEnd = '';
$projectnames = $tosubtract = $allpauseranges = [];
$toignore = ['Pause', 'LehreExtern'];
$ztaufdata = $ztauf->result;
$monthsums = [0 => 0.00];
//sprt list by startdate ascending (if not already done in zeitaufzeichnung class)
usort($ztaufdata, function ($ztaufa, $ztaufb)
{
$date = new datum();
return $date->mktime_fromtimestamp($ztaufa->start) - $date->mktime_fromtimestamp($ztaufb->start);
}
);
//fill projectlines with data
for ($i = 0; $i < sizeof($ztaufdata); $i++)
{
$ztaufrow = $ztaufdata[$i];
$day = intval($date->formatDatum($ztaufrow->ende, 'd'));
//first entry for a day
$isFirstEntry = !isset($projectlines[$day]);
//last entry for a day (next entry is different day)
$isLastEntry = !array_key_exists($i + 1, $ztaufdata) || intval($date->formatDatum($ztaufdata[$i + 1]->ende, 'd')) != $day;
if (in_array($ztaufrow->aktivitaet_kurzbz, $toignore))
{
$subtraction = new stdClass();
$subtraction->start = $ztaufrow->start;
$subtraction->ende = $ztaufrow->ende;
$subtraction->diff = $date->convertTimeStringToHours($ztaufrow->diff);
$subtraction->typ = $ztaufrow->aktivitaet_kurzbz;
$tosubtract[] = $subtraction;
//save all pause ranges
if($ztaufrow->aktivitaet_kurzbz == $toignore[0])
{
$prevpause = null;
if(sizeof($allpauseranges)>0)
{
$prevpause = $allpauseranges[sizeof($allpauseranges) - 1];
}
//first pause or no overlap to previous pause - add pauserange
if( is_null($prevpause ) || $prevpause->ende <= $ztaufrow->start )
{
$pauserange = new stdClass();
$pauserange->start = $ztaufrow->start;
$pauserange->ende = $ztaufrow->ende;
$allpauseranges[] = $pauserange;
}
//pause overlap - change pause ende
elseif($prevpause->ende > $ztaufrow->start )
{
$allpauseranges[sizeof($allpauseranges) - 1]->ende = $ztaufrow->ende;
}
}
}
if (($dayStart == '' || $date->mktime_fromtimestamp($date->formatDatum($dayStart, $format = 'Y-m-d H:i:s')) > $date->mktime_fromtimestamp($date->formatDatum($ztaufrow->start, $format = 'Y-m-d H:i:s'))) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
$dayStart = $ztaufrow->start;
if (($dayEnd == '' || $date->mktime_fromtimestamp($date->formatDatum($dayEnd, $format = 'Y-m-d H:i:s')) < $date->mktime_fromtimestamp($date->formatDatum($ztaufrow->ende, $format = 'Y-m-d H:i:s'))) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
$dayEnd = $ztaufrow->ende;
if ($isFirstEntry)
{
$projectlines[$day] = new stdClass();
$projectlines[$day]->arbeitszeit = '';
$projectlines[$day]->projekte = [];
}
if (isset($ztaufrow->projekt_kurzbz))
{
//Project already in projectline - add to worktime and description
if (array_key_exists($ztaufrow->projekt_kurzbz, $projectlines[$day]->projekte))
{
$laststart =& $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->laststart;
$lastende =& $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->lastende;
$toadd = 0.00;
//case 1: there is no overlap, just add project time difference
if ($date->mktime_fromtimestamp($ztaufrow->start) > $date->mktime_fromtimestamp($lastende))
{
$toadd = $date->convertTimeStringToHours($ztaufrow->diff);
$laststart = $ztaufrow->start;
$lastende = $ztaufrow->ende;
$newprojecttime = new stdClass();
$newprojecttime->start = $ztaufrow->start;
$newprojecttime->ende = $ztaufrow->ende;
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->alleZeiten[] = $newprojecttime;
}
//case 2: overlap - add only part of the time
elseif ($date->mktime_fromtimestamp($ztaufrow->start) < $date->mktime_fromtimestamp($lastende) && $date->mktime_fromtimestamp($ztaufrow->ende) > $date->mktime_fromtimestamp($lastende))
{
$toadd = ($date->mktime_fromtimestamp($ztaufrow->ende) - $date->mktime_fromtimestamp($lastende)) / 3600;
$lastende = $ztaufrow->ende;
$alleZeiten =& $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->alleZeiten;
$index = count($alleZeiten);
$alleZeiten[$index-1]->ende = $ztaufrow->ende;
}
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->stunden += $toadd;
//concatenate descriptions "working packages" for each project
if (!empty($ztaufrow->beschreibung))
{
$packagecounter = ++$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->arbeitspakete;
if ($packagecounter == 1)
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->beschreibung = $ztaufrow->beschreibung;
else
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->beschreibung .= " | ".str_replace(array("\r\n", "\r", "\n"), " ", $ztaufrow->beschreibung);
}
}
else
{
//add new project to projectline
$newproject = new stdClass();
$newproject->laststart = $ztaufrow->start;
$newproject->lastende = $ztaufrow->ende;
$newprojecttime = new stdClass();
$newprojecttime->start = $ztaufrow->start;
$newprojecttime->ende = $ztaufrow->ende;
$newproject->alleZeiten = [];
$newproject->alleZeiten[] = $newprojecttime;
$newproject->stunden = $date->convertTimeStringToHours($ztaufrow->diff);
$newproject->arbeitspakete = 0;//counter for tracking number of descriptions (work packages)
$newproject->beschreibung = '';
if (!empty($ztaufrow->beschreibung))
{
$newproject->beschreibung = str_replace(array("\r\n", "\r", "\n"), " ", $ztaufrow->beschreibung);
$newproject->arbeitspakete++;
}
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz] = $newproject;
//add new project to array with unique project names
if (!in_array($ztaufrow->projekt_kurzbz, $projectnames))
$projectnames[] = $ztaufrow->projekt_kurzbz;
}
}
if ($isLastEntry)
{
$worktime_unix = $date->mktime_fromtimestamp($date->formatDatum($dayEnd, $format = 'Y-m-d H:i:s')) - $date->mktime_fromtimestamp($date->formatDatum($dayStart, $format = 'Y-m-d H:i:s'));
$worktimehours = $worktime_unix / 3600;
$projectlines[$day]->arbeitszeit = $worktimehours;
$pauseSubtracted = 0.00;
$lehreExternExists = false;
//subtract Pauses and LehreExtern
foreach ($tosubtract as $subtraction)
{
if ($subtraction->typ == $toignore[0])
{
$projectlines[$day]->arbeitszeit -= $subtraction->diff;
$pauseSubtracted += $subtraction->diff;
}
elseif ($subtraction->typ == $toignore[1] && $subtraction->start >= $dayStart && $subtraction->ende <= $dayEnd)
{
$projectlines[$day]->arbeitszeit -= $subtraction->diff;
$lehreExternExists = true;
}
}
//subtract pauses from Project worktimes
foreach($allpauseranges as $pauserange)
{
foreach($projectlines[$day]->projekte as $name => $project)
{
foreach($projectlines[$day]->projekte[$name]->alleZeiten as $zeit)
{
if($pauserange->start >= $zeit->start && $pauserange->ende <= $zeit->ende)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($pauserange->ende) - $date->mktime_fromtimestamp($pauserange->start)) / 3600;
break;
}
elseif($pauserange->start < $zeit->ende && $pauserange->start > $zeit->start)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($zeit->ende) - $date->mktime_fromtimestamp($pauserange->start)) / 3600;
//break;
}
elseif($pauserange->ende > $zeit->start && $pauserange->ende< $zeit->ende)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($pauserange->ende) - $date->mktime_fromtimestamp($zeit->start)) / 3600;
//break;
}
}
}
}
//worktime with no break greater 6 -> compulsory break of half an hour
if ($pauseSubtracted < 0.5 && !$lehreExternExists)
{
if ($projectlines[$day]->arbeitszeit >= 6.5)
$projectlines[$day]->arbeitszeit -= 0.5;
//ensure that no worktime gets smaller than 6 hours because of compulsory break
elseif ($projectlines[$day]->arbeitszeit > 6)
$projectlines[$day]->arbeitszeit -= $projectlines[$day]->arbeitszeit - 6;
}
$projectlines[$day]->arbeitszeit = floor($projectlines[$day]->arbeitszeit * 100) / 100;
foreach($projectlines[$day]->projekte as $name => $project)
{
$projecthours =& $projectlines[$day]->projekte[$name]->stunden;
$projecthours = floor($projecthours * 100) / 100;
if (array_key_exists($name, $monthsums))
$monthsums[$name] += $projecthours;
else
$monthsums[$name] = $projecthours;
}
$dayStart = $dayEnd = '';
$tosubtract = $allpauseranges = [];
$monthsums[0] += $projectlines[$day]->arbeitszeit;
}
}
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
$workbook->setVersion(8);
// sending HTTP headers
$workbook->send("Projektliste_".$month."_".$year.".xls");
// Creating a worksheet
$worksheet =& $workbook->addWorksheet("Projektliste");
$worksheet->setInputEncoding('utf-8');
// Define formats
$format_heading_left =& $workbook->addFormat();
$format_heading_left->setBold();
$format_heading_left->setAlign('center');
$format_heading_left->setAlign('vcenter');
$format_heading_left->setBottom(2);
$format_heading_left->setLeft(2);
$format_heading_left->setTop(2);
$format_heading_right =& $workbook->addFormat();
$format_heading_right->setBold();
$format_heading_right->setAlign('right');
$format_heading_right->setRight(2);
$format_heading_right->setTop(2);
$format_heading_right_bottomline =& $workbook->addFormat();
$format_heading_right_bottomline->setAlign('right');
$format_heading_right_bottomline->setRight(2);
$format_heading_right_bottomline->setBottom(2);
$format_bold_centered_toprightline =& $workbook->addFormat();
$format_bold_centered_toprightline->setBorder(1);
$format_bold_centered_toprightline->setBold();
$format_bold_centered_toprightline->setAlign('center');
$format_bold_centered_toprightline->setVAlign('vcenter');
$format_bold_centered_toprightline->setTop(2);
$format_bold_centered_toprightline->setRight(2);
$format_bold_centered_bottomline =& $workbook->addFormat();
$format_bold_centered_bottomline->setBorder(1);
$format_bold_centered_bottomline->setBold();
$format_bold_centered_bottomline->setAlign('center');
$format_bold_centered_bottomline->setVAlign('vcenter');
$format_bold_centered_bottomline->setBottom(2);
$format_bold_centered_bottomrightline =& $workbook->addFormat();
$format_bold_centered_bottomrightline->setBorder(1);
$format_bold_centered_bottomrightline->setBold();
$format_bold_centered_bottomrightline->setAlign('center');
$format_bold_centered_bottomrightline->setVAlign('vcenter');
$format_bold_centered_bottomrightline->setBottom(2);
$format_bold_centered_bottomrightline->setRight(2);
$format_bold_centered_alllines =& $workbook->addFormat();
$format_bold_centered_alllines->setBorder(2);
$format_bold_centered_alllines->setBold();
$format_bold_centered_alllines->setAlign('center');
$format_bold_centered_alllines->setVAlign('vcenter');
$format_cell_rightline =& $workbook->addFormat();
$format_cell_rightline->setBorder(1);
$format_cell_rightline->setVAlign('vcenter');
$format_cell_rightline->setRight(2);
$format_cell_centered =& $workbook->addFormat();
$format_cell_centered->setBorder(1);
$format_cell_centered->setAlign('center');
$format_cell_centered->setVAlign('vcenter');
$format_cell_centered_leftline =& $workbook->addFormat();
$format_cell_centered_leftline->setBorder(1);
$format_cell_centered_leftline->setAlign('center');
$format_cell_centered_leftline->setVAlign('vcenter');
$format_cell_centered_leftline->setLeft(2);
$format_cell_centered_rightline =& $workbook->addFormat();
$format_cell_centered_rightline->setBorder(1);
$format_cell_centered_rightline->setAlign('center');
$format_cell_centered_rightline->setVAlign('vcenter');
$format_cell_centered_rightline->setRight(2);
$format_cell_centered_topbottomleftline =& $workbook->addFormat();
$format_cell_centered_topbottomleftline->setBorder(1);
$format_cell_centered_topbottomleftline->setAlign('center');
$format_cell_centered_topbottomleftline->setVAlign('vcenter');
$format_cell_centered_topbottomleftline->setLeft(2);
$format_cell_centered_topbottomleftline->setBottom(2);
$format_cell_centered_topbottomleftline->setTop(2);
$format_cell_centered_topbottomrightline =& $workbook->addFormat();
$format_cell_centered_topbottomrightline->setBorder(1);
$format_cell_centered_topbottomrightline->setAlign('center');
$format_cell_centered_topbottomrightline->setVAlign('vcenter');
$format_cell_centered_topbottomrightline->setRight(2);
$format_cell_centered_topbottomrightline->setBottom(2);
$format_cell_centered_topbottomrightline->setTop(2);
$format_cell_centered_alllines =& $workbook->addFormat();
$format_cell_centered_alllines->setBorder(2);
$format_cell_centered_alllines->setAlign('center');
$format_cell_centered_alllines->setVAlign('vcenter');
//define column widths
$nrProjects = sizeof($projectnames);
$daywidth = 4;
$totalworktimewidth = 10;
$worktimewidth = 8;
$worksheet->setColumn(0, 1, $daywidth);
$worksheet->setColumn(2, 2, $totalworktimewidth);
//calculate max width for project descriptions
$maxwidthprojects = $totalworktimewidth * (12 - $nrProjects);
$projectcolumnwidths = array_fill_keys($projectnames, $worktimewidth);
//set project column width depending on project description widths
foreach ($projectlines as $line)
{
foreach ($line->projekte as $key => $project)
{
if ($projectcolumnwidths[$key] < strlen($project->beschreibung))
$projectcolumnwidths[$key] = strlen($project->beschreibung);
}
}
//distribute width remainder evenly among projects
if ($nrProjects != 0)
$remwidth = ($maxwidthprojects - array_sum($projectcolumnwidths)) / $nrProjects;
foreach ($projectcolumnwidths as $projectname => $width)
$projectcolumnwidths[$projectname] += $remwidth;
//calculating spaces for centering global header texts
$numberspaces = ($maxwidthprojects - 10 - strlen($username));
$spacesstringFirst = "";
while ($numberspaces > 0)
{
$spacesstringFirst .= " ";
$numberspaces--;
}
$numberspaces = ($maxwidthprojects - 14 - strlen($persnr));
$spacesstringSecond = "";
while ($numberspaces > 0)
{
$spacesstringSecond .= " ";
$numberspaces--;
}
$spalte = $zeile = 0;
//write global header
$lastspalte = ($nrProjects > 0) ? 2 + sizeof($projectnames) * 2 : 14;
$worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 2);
$worksheet->write($zeile, $spalte, $monthtext." ".$year, $format_heading_left);
$worksheet->write($zeile + 1, $spalte, "", $format_heading_left);
$worksheet->setMerge($zeile, $spalte + 3, $zeile, $lastspalte);
$worksheet->setMerge($zeile + 1, $spalte + 3, $zeile + 1, $lastspalte);
$worksheet->write($zeile, $spalte + 3, "Projektliste gedruckt am:".$spacesstringFirst.$username, $format_heading_right);
$worksheet->write($zeile, $lastspalte, '', $format_heading_right);
$worksheet->write($zeile + 1, $spalte + 3, date('d.m.Y H:i').$spacesstringSecond.'Personal-Nr.:'.$persnr, $format_heading_right_bottomline);
$worksheet->write($zeile + 1, $lastspalte, '', $format_heading_right_bottomline);
$zeile += 3;
//general options
$worksheet->setLandscape();
$worksheet->hideGridlines();
$worksheet->hideScreenGridlines();
//write table header
$worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 1);
$worksheet->write($zeile, $spalte, "Tag", $format_bold_centered_alllines);
$worksheet->write($zeile + 1, $spalte++, "", $format_bold_centered_alllines);
$worksheet->setMerge($zeile, ++$spalte, $zeile + 1, $spalte);
$worksheet->write($zeile, $spalte, "Arbeitszeit", $format_bold_centered_alllines);
$worksheet->write($zeile + 1, $spalte, "", $format_bold_centered_alllines);
$spalte++;
foreach ($projectnames as $project)
{
$worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1);
$worksheet->write($zeile, $spalte, $project, $format_bold_centered_toprightline);
$worksheet->write($zeile, $spalte + 1, "", $format_bold_centered_toprightline);
$worksheet->write($zeile + 1, $spalte, "Stunden", $format_bold_centered_bottomline);
$worksheet->write($zeile + 1, $spalte + 1, "Tätigkeit", $format_bold_centered_bottomrightline);
$spalte += 2;
}
$zeile += 2;
//write table body
for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++)
{
//write day and weekday
$spalte = 0;
$monthstr = ($month < 10) ? '0'.$month : $month;
$daystr = ($daysnmbr < 10) ? '0'.$daysnmbr : $daysnmbr;
$datestring = $year.'-'.$monthstr.'-'.$daystr;
$weekday = substr($tagbez[1][$date->formatDatum($datestring, 'N')], 0, 2);
$worksheet->write($zeile, $spalte++, $weekday, $format_cell_centered_leftline);
$worksheet->write($zeile, $spalte++, $daysnmbr, $format_cell_centered_rightline);
if (array_key_exists($daysnmbr, $projectlines))
{
//write worktime
$worksheet->write($zeile, $spalte++, number_format($projectlines[$daysnmbr]->arbeitszeit, 2, ",", "."), $format_cell_centered_rightline);
$spaltetemp = $spalte;
//write projects
foreach ($projectnames as $project)
{
if (array_key_exists($project, $projectlines[$daysnmbr]->projekte))
{
$worksheet->setColumn($spalte, $spalte, $worktimewidth);
$worksheet->write($zeile, $spalte++, number_format($projectlines[$daysnmbr]->projekte[$project]->stunden, 2, ",", "."), $format_cell_centered_leftline);
$worksheet->setColumn($spalte, $spalte, $projectcolumnwidths[$project]);
$worksheet->write($zeile, $spalte++, $projectlines[$daysnmbr]->projekte[$project]->beschreibung, $format_cell_rightline);
}
else
{
$worksheet->write($zeile, $spalte++, '', $format_cell_centered_leftline);
$worksheet->write($zeile, $spalte++, '', $format_cell_rightline);
}
}
}
else
{
//write empty cells
$worksheet->write($zeile, $spalte, '0,00', $format_cell_centered_rightline);
$toskip = sizeof($projectnames) * 2;
for ($i = 0; $i <= $toskip; $i++)
{
if ($i % 2 == 0)
$worksheet->write($zeile, $spalte++, '', $format_cell_centered_rightline);
else
$worksheet->write($zeile, $spalte++, '', $format_cell_centered);
}
}
$zeile++;
}
if ($nrProjects < 1)
//no projects - merge all cells and write notice
{
$worksheet->setMerge(3, 3, 4 + $daysinmonth, $lastspalte);
$worksheet->write(3, 3, "keine Projekte vorhanden", $format_bold_centered_alllines);
$worksheet->write(3, $lastspalte, "", $format_bold_centered_alllines);
}
//write monthly sums
$spalte = 0;
$worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1);
$worksheet->write($zeile, $spalte, 'Summe:', $format_bold_centered_alllines);
$spalte += 2;
$worksheet->write($zeile, $spalte++, number_format($monthsums[0], 2, ",", "."), $format_cell_centered_alllines);
foreach ($projectnames as $project)
{
$worksheet->write($zeile, $spalte++, number_format($monthsums[$project], 2, ",", "."), $format_cell_centered_topbottomleftline);
$worksheet->write($zeile, $spalte++, "", $format_cell_centered_topbottomrightline);
}
$worksheet->fitToPages(1, 1);
$workbook->close();
+3
View File
@@ -232,4 +232,7 @@ define('CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN', serialize(array("Studiengebuehr")))
//Gibt an bei welcher Länge die LV-Bezeichnungen im Menü abgeschnitten werden. Default: 21
define('CIS_LVMENUE_CUTLENGTH', 21);
// Gibt an, auf welche Seite TicketIds ala #1234 im Jahresplan verlinkt werden zB zur Verlinkung in Bugtracker
define('JAHRESPLAN_TICKET_LINK','https://bug.technikum-wien.at/otrs/index.pl?Action=AgentTicketZoom;TicketID=');
?>
+7
View File
@@ -109,6 +109,7 @@ foreach($addon_obj->result as $addon)
<command id="menu-statistic-fehlendedokumente:command" oncommand="StatistikPrintFehlendeDokumente();"/>
<command id="menu-statistic-notenspiegel:command" oncommand="StatistikPrintNotenspiegel('html');"/>
<command id="menu-statistic-notenspiegel-excel:command" oncommand="StatistikPrintNotenspiegel('xls');"/>
<command id="menu-statistic-notenspiegel-excel-erweitert:command" oncommand="StatistikPrintNotenspiegelErweitert('xls');"/>
<command id="menu-statistic-substatistik-studentenprosemester-excel:command" oncommand="StatistikPrintStudentenProSemester('xls');"/>
<command id="menu-statistic-substatistik-studentenprosemester-html:command" oncommand="StatistikPrintStudentenProSemester('');"/>
<command id="menu-statistic-substatistik-alvsstatistik-excel:command" oncommand="StatistikPrintALVSStatistik('xls');"/>
@@ -357,6 +358,12 @@ foreach($addon_obj->result as $addon)
label = "&menu-statistic-notenspiegel-excel.label;"
command = "menu-statistic-notenspiegel-excel:command"
accesskey = "&menu-statistic-notenspiegel-excel.accesskey;"/>
<menuitem
id = "menu-statistic-notenspiegel-excel-erweitert"
key = "menu-statistic-notenspiegel-excel-erweitert:key"
label = "&menu-statistic-notenspiegel-excel-erweitert.label;"
command = "menu-statistic-notenspiegel-excel-erweitert:command"
accesskey = "&menu-statistic-notenspiegel-excel-erweitert.accesskey;"/>
<menuitem
id = "menu-statistic-notenspiegel"
key = "menu-statistic-notenspiegel:key"
+26
View File
@@ -1051,6 +1051,32 @@ function StatistikPrintNotenspiegel(typ)
window.open('<?php echo APP_ROOT ?>content/statistik/notenspiegel.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&typ='+typ+'&orgform='+orgform,'Notenspiegel');
}
// ****
// * Liefert eine HTML Liste mit Uebersicht ueber die eingetragenen Noten
// * Studiengang und optional Semester muss gewaehlt sein.
// ****
function StatistikPrintNotenspiegelErweitert(typ)
{
tree = document.getElementById('tree-verband');
if(tree.currentIndex==-1)
{
alert('Bitte zuerst einen Studiengang auswaehlen');
return;
}
//Studiengang und Semester holen
var col;
col = tree.columns ? tree.columns["stg_kz"] : "stg_kz";
var studiengang_kz=tree.view.getCellText(tree.currentIndex,col);
col = tree.columns ? tree.columns["sem"] : "sem";
var semester=tree.view.getCellText(tree.currentIndex,col);
col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform";
var orgform=tree.view.getCellText(tree.currentIndex,col);
window.open('<?php echo APP_ROOT ?>content/statistik/notenspiegel_erweitert.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&typ='+typ+'&orgform='+orgform,'Notenspiegel');
}
// ****
// * Liefert eine statistik ueber die Anzahl der Interessenten/Bewerber Studenten
// ****
@@ -0,0 +1,661 @@
<?php
/* Copyright (C) 2007 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>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Alexei Karpenko <karpenko@technikum-wien.at>
*/
/**
* Erstellt einen Notenspiegel
*
* Parameter: studiengang_kz ... Studiengang der angezeigt werden soll
* semester ... Semester das angezeigt werden soll
* orgform ... Filter für Organisationsform (VZ | BB | FST | etc)
* typ ... Output format (xls | html)
*
* Listet alle Noten der Studierenden des Studiengangs/Semester im eingestellten Studiensemester
* und berechnet den Notendurchschnitt und gewichteten Notendurchschnitt.
*
* Gewichteter Notendurchschnitt = (Note der LV) * (ECTS der LV) / (Summe aller ECTS)
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/student.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/note.class.php');
require_once('../../include/lehrveranstaltung.class.php');
require_once('../../include/pruefungstermin.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/Excel/excel.php');
$db = new basis_db();
$user = get_uid();
loadVariables($user);
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if (!isset($_GET['studiengang_kz']))
die('Falsche Parameteruebergabe');
else
$studiengang_kz = $_GET['studiengang_kz'];
if (!$rechte->isBerechtigt('student/noten', $studiengang_kz, 's'))
die('Sie haben keine Berechtigung fuer diese Seite');
$semester = isset($_GET['semester']) ? $_GET['semester'] : '';
$typ = isset($_GET['typ']) ? $_GET['typ'] : '';
if ($semester == '')
die('Bitte ein Semester auswaehlen');
$orgform = isset($_GET['orgform']) ? $_GET['orgform'] : '';
$stg = new studiengang();
$stg_arr = array();
$stg->getAll(false);
foreach ($stg->result as $studiengang)
$stg_arr[$studiengang->studiengang_kz] = $studiengang->kuerzel;
$stg = new studiengang();
$stg->load($studiengang_kz);
$student = new student();
$result_student = $student->getStudents($studiengang_kz, $semester, null, null, null, $semester_aktuell);
$uids = '';
foreach ($result_student as $row)
{
if ($uids != '')
$uids .= ',';
$uids .= $db->db_add_param($row->uid);
}
if ($uids == '')
die('Es befinden sich keine Studierende in diesem Semester');
$qry = "SELECT
lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects
FROM
lehre.tbl_lehrveranstaltung
WHERE
lehrveranstaltung_id IN
(
SELECT
distinct lehrveranstaltung_id
FROM
campus.vw_student_lehrveranstaltung, public.tbl_studentlehrverband
WHERE
tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
tbl_studentlehrverband.semester=".$db->db_add_param($semester, FHC_INTEGER)." AND
vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
uid=student_uid AND
vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz
)
AND studiengang_kz<>0
UNION
SELECT
lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects
FROM
lehre.tbl_lehrveranstaltung JOIN lehre.tbl_zeugnisnote USING(lehrveranstaltung_id)
WHERE
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND
tbl_zeugnisnote.student_uid in($uids) AND
tbl_zeugnisnote.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
ORDER BY bezeichnung";
if (!$result_lva = $db->db_query($qry))
die('Fehler beim Ermitteln der Lehrveranstaltungen');
$noten = new note();
$noten->getActive();
$noten_arr = $noten_bezeichnungen = $noten_farben = $noten_positiv = array();
$pruefungstermin = new pruefungstermin();
$termine = $pruefungstermin->getAllPruefungstypen(false, true);
$terminbez = 'Termin';
$kommPruef = 'kommPruef';
$zusKommPruef = 'zusKommPruef';
//null Werte und undefiniert rausfiltern
$termine = array_filter($termine, function ($termin)
{
return !(is_null($termin->beschreibung) || $termin->pruefungstyp_kurzbz == 'undefiniert');
});
$termineWithSort = array_filter($termine, function ($termin)
{
return is_numeric($termin->sort);
});
$nulltermine = array_filter($termine, function ($termin)
{
return is_null($termin->sort);
});
//keine Werte in sort Spalte - es wird versucht, Reihenfolge aufgrund Strings zu bestimmen
//zuerst Termine 1 - n, dann kommissionelle und zusätzliche kommissionelle
$max = 0;
foreach ($nulltermine as $termin)
{
if (preg_match('/^'.$terminbez.'\d+$/', $termin->pruefungstyp_kurzbz))
{
if (preg_match_all('/\d+/', $termin->pruefungstyp_kurzbz, $numbers))
{
$number = intval(end($numbers[0]));
$termin->sort = $number;
if ($number > $max)
$max = $number;
}
}
}
foreach ($nulltermine as $termin)
{
if ($termin->pruefungstyp_kurzbz == $kommPruef || $termin->pruefungstyp_kurzbz == $zusKommPruef)
{
$termin->sort = ++$max;
}
}
usort($nulltermine, function ($termina, $terminb)
{
return is_null($termina->sort) ? 1 : (is_null($terminb->sort) ? -1 : $termina->sort - $terminb->sort);
});
$termine = array_merge($termineWithSort, $nulltermine);
//Farben für Prüfungsantritte (1. Termin, 2., kommissionelle...)
$colors = array('ffff00', 'fa9200', 'ff1500', '9400D3', '0000FF', '800000', '305041', '00fff2', '00ff2b');
$colorsForPositiv = array('ffffff', 'ffdfb3', 'ffb9b3', 'ddb3ff', '7366ff', 'ff9494', '80b39b', 'b3fffb', 'b3ffbf');
$counter = 0;
foreach ($termine as $termin)
{
$terminkurzbz = $termin->pruefungstyp_kurzbz;
$pruefungsart_farben[$terminkurzbz] = $colors[$counter];
$pruefungsart_farben[$terminkurzbz.'Pos'] = $colorsForPositiv[$counter];
$counter++;
}
foreach ($noten->result as $row)
{
$noten_arr[$row->note] = $row->anmerkung;
$noten_wert[$row->note] = $row->notenwert;
$noten_bezeichnungen[$row->note] = $row->bezeichnung;
$noten_farben[$row->note] = $row->farbe;
$noten_positiv[$row->note] = $row->positiv;
}
if ($typ == 'xls')
{
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
$workbook->setVersion(8);
// sending HTTP headers
$workbook->send("Notenliste_".$semester_aktuell."_".$stg->kuerzel.($semester != '' ? '_'.$semester : '').".xls");
// Creating a worksheet
$worksheet =& $workbook->addWorksheet("Notenliste");
$worksheet->setInputEncoding('utf-8');
//Formate Definieren
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
$format_bold->setBorder(1);
$format_bold_wrap =& $workbook->addFormat();
$format_bold_wrap->setBold();
$format_bold_wrap->setBorder(1);
$format_bold_wrap->setTextWrap();
$format_rotate =& $workbook->addFormat();
$format_rotate->setTextRotation(270);
$format_rotate->setAlign('center');
$format_rotate->setBorder(1);
$format_bold_center =& $workbook->addFormat();
$format_bold_center->setBold();
$format_bold_center->setAlign('center');
$format_bold_center->setBorder(1);
$format_bold_noborder =& $workbook->addFormat();
$format_bold_noborder->setBold();
$format_number =& $workbook->addFormat();
$format_number->setNumFormat('0.00');
$format_number->setBorder(1);
//Farben ueberschreiben
foreach ($noten_farben as $note => $farbe)
{
if ($farbe != '')
{
$workbook->setCustomColor(
$note + 10,
hexdec(substr($farbe, 0, 2)),
hexdec(substr($farbe, 2, 2)),
hexdec(substr($farbe, 4, 2))
);
}
else
{
$workbook->setCustomColor($note + 10, 255, 255, 255);
}
$format_colored[$note] =& $workbook->addFormat();
$format_colored[$note]->setFgColor($note + 10);
$format_colored[$note]->setBorder(1);
$format_colored[$note]->setAlign('center');
}
$counter = 1;
foreach ($pruefungsart_farben as $art => $farbe)
{
//eigene Farben für Indizes 40 + definieren
$colornumber = 40 + $counter;
$workbook->setCustomColor(
$colornumber,
hexdec(substr($farbe, 0, 2)),
hexdec(substr($farbe, 2, 2)),
hexdec(substr($farbe, 4, 2))
);
$format_colored[$art] =& $workbook->addFormat();
$format_colored[$art]->setFgColor($colornumber);
$format_colored[$art]->setBorder(1);
$format_colored[$art]->setAlign('center');
$counter++;
}
//30 = Grau = Nicht teilgenommen
$workbook->setCustomColor(30, 90, 90, 90);
$format_colored_nichtzugeteilt =& $workbook->addFormat();
$format_colored_nichtzugeteilt->setFgColor(30);
$format_colored_nichtzugeteilt->setBorder(1);
$format_colored_nichtzugeteilt->setAlign('center');
$format_colored_nichteingetragen =& $workbook->addFormat();
$format_colored_nichteingetragen->setFgColor(19);
$format_colored_nichteingetragen->setBorder(1);
$format_colored_nichteingetragen->setAlign('center');
$spalte = 0;
$zeile = 1;
$worksheet->write($zeile, $spalte, 'Nachname', $format_bold);
$maxlength[$spalte] = 10;
$worksheet->write($zeile, ++$spalte, 'Vorname', $format_bold);
$maxlength[$spalte] = 10;
$worksheet->write($zeile, ++$spalte, 'Personenkennzeichen', $format_bold);
$maxlength[$spalte] = 32;
$maxheaderheight = 20;
while ($row_lva = $db->db_fetch_object($result_lva))
{
$value = $stg_arr[$row_lva->studiengang_kz].$row_lva->semester.' '.$row_lva->bezeichnung.' ('.$row_lva->ects.' ECTS)';
$worksheet->write($zeile, ++$spalte, $value, $format_rotate);
$maxlength[$spalte] = 3;
if (mb_strlen($value) > $maxheaderheight)
$maxheaderheight = mb_strlen($value);
}
$anzahl_lvspalten = $spalte - 2;
$worksheet->write($zeile, ++$spalte, 'Notendurchschnitt', $format_bold);
$maxlength[$spalte] = 15;
$worksheet->write($zeile, ++$spalte, "Gewichteter\nNotendurchschnitt", $format_bold_wrap);
$maxlength[$spalte] = 15;
$anzahl_lv = array();
$summe_lv = array();
$summegewichtet = 0;
$anzahlgewichtet = 0;
foreach ($result_student as $row_student)
{
if ($orgform != '')
{
//Wenn der Student nicht die passende orgform hat (VZ,BB,FST, etc)
//dann nicht anzeigen
$prestudent = new prestudent();
$prestudent->getLastStatus($row_student->prestudent_id);
if ($prestudent->orgform_kurzbz != $orgform)
continue;
}
$zeile++;
$spalte = 0;
$worksheet->write($zeile, $spalte, $row_student->nachname, $format_bold);
if ($maxlength[$spalte] < strlen($row_student->nachname))
$maxlength[$spalte] = strlen($row_student->nachname);
$worksheet->write($zeile, ++$spalte, $row_student->vorname, $format_bold);
if ($maxlength[$spalte] < strlen($row_student->vorname))
$maxlength[$spalte] = strlen($row_student->vorname);
$worksheet->write($zeile, ++$spalte, $row_student->matrikelnr, $format_bold);
//Alle Zeugnisnoten des Studierenden holen
$noten = array();
$qry = "SELECT * FROM lehre.tbl_zeugnisnote WHERE student_uid=".$db->db_add_param($row_student->uid)." AND studiensemester_kurzbz=".$db->db_add_param($semester_aktuell);
if ($result = $db->db_query($qry))
while ($row = $db->db_fetch_object($result))
$noten[$row->lehrveranstaltung_id] = $row->note;
//Zu jeder Lehrveranstaltungsnote Prüfungstyp (Anzahl der Antritte) holen
$pruefungstypen = array();
$qry = "SELECT tbl_lehrveranstaltung.lehrveranstaltung_id, pruefungstyp_kurzbz, sort, datum
FROM
lehre.tbl_pruefung
JOIN
lehre.tbl_lehreinheit using(lehreinheit_id)
JOIN
lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
WHERE
student_uid=".$db->db_add_param($row_student->uid)." AND studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)."
ORDER BY lehrveranstaltung_id, sort, datum";
if ($result = $db->db_query($qry))
{
while ($row = $db->db_fetch_object($result))
{
$pruefungstypen[$row->lehrveranstaltung_id] = $row->pruefungstyp_kurzbz;
}
}
//Alle LVs holen zu denen der Studierende zugeteilt ist
$zugeteilte_lvs = array();
$qry = "SELECT distinct lehrveranstaltung_id
FROM
campus.vw_student_lehrveranstaltung
WHERE
uid=".$db->db_add_param($row_student->uid)." AND
studiensemester_kurzbz=".$db->db_add_param($semester_aktuell);
if ($result = $db->db_query($qry))
while ($row = $db->db_fetch_object($result))
$zugeteilte_lvs[] = $row->lehrveranstaltung_id;
$anzahl = 0;
$summe = 0;
$rowcount = 0;
$summeects = 0;
$gewichtetenote = 0;
while ($rowcount < $db->db_num_rows($result_lva))
{
$row_lva = $db->db_fetch_object($result_lva, $rowcount);
$rowcount++;
//wenn es eine Note gibt
if (isset($noten[$row_lva->lehrveranstaltung_id]))
{
$note = $noten[$row_lva->lehrveranstaltung_id];
$format = 0;
//wenn für die LV der Studierende eine Nachprüfung hat (z.B. 2 Termin, kommissionelle...)
if (isset($pruefungstypen[$row_lva->lehrveranstaltung_id]))
{
$pruefungstyp = $pruefungstypen[$row_lva->lehrveranstaltung_id];
if (isset($format_colored[$pruefungstyp]))
{
//wenn es eine Farbe für die Art der Nachprüfung gibt, diese verwenden (positiv oder negativ)
$format = ($noten_positiv[$note]) ? $format_colored[$pruefungstyp."Pos"] : $format_colored[$pruefungstyp];
}
}
//keine Nachprüfung aber negativ - 1. Antritt Farbe wenn es eine Notenanmerkung gibt
elseif (!$noten_positiv[$note] && $noten_arr[$note] != '' && isset($noten_arr[$note]))
{
reset($pruefungsart_farben);
$format = $format_colored[key($pruefungsart_farben)];
}
elseif (isset($format_colored[$note]))
$format = $format_colored[$note];
$worksheet->write($zeile, ++$spalte, $noten_arr[$note], $format);
if ($noten_wert[$noten[$row_lva->lehrveranstaltung_id]] != '')
{
if (!isset($summe_lv[$row_lva->lehrveranstaltung_id]))
{
$summe_lv[$row_lva->lehrveranstaltung_id] = 0;
$anzahl_lv[$row_lva->lehrveranstaltung_id] = 0;
}
$summe_lv[$row_lva->lehrveranstaltung_id] += $noten_wert[$noten[$row_lva->lehrveranstaltung_id]];
$anzahl_lv[$row_lva->lehrveranstaltung_id]++;
$summe += $noten_wert[$noten[$row_lva->lehrveranstaltung_id]];
if (is_numeric($row_lva->ects))
{
$gewichtetenote += $noten_wert[$noten[$row_lva->lehrveranstaltung_id]] * $row_lva->ects;
$summeects += $row_lva->ects;
}
$anzahl++;
}
}
else
{
//Keine Note fuer diese LV vorhanden
if (in_array($row_lva->lehrveranstaltung_id, $zugeteilte_lvs))
{
$worksheet->write($zeile, ++$spalte, '', $format_colored_nichteingetragen);
}
else
{
$worksheet->write($zeile, ++$spalte, '', $format_colored_nichtzugeteilt);
}
}
}
if ($anzahl != 0)
$schnitt = $summe / $anzahl;
else
$schnitt = 0;
if ($summeects != 0)
$gewichtetenote /= $summeects;
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number);
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $gewichtetenote), $format_number);
if ($gewichtetenote != 0)
{
$summegewichtet += $gewichtetenote;
$anzahlgewichtet++;
}
}
$zeile++;
$spalte = 2;
$worksheet->write($zeile, $spalte, 'Notendurchschnitt', $format_bold);
$summe_schnitt = 0;
$anzahl_schnitt = 0;
$rowcount = 0;
while ($rowcount < $db->db_num_rows($result_lva))
{
$row_lva = $db->db_fetch_object($result_lva, $rowcount);
$rowcount++;
if (isset($summe_lv[$row_lva->lehrveranstaltung_id]))
{
if ($anzahl_lv[$row_lva->lehrveranstaltung_id] != 0)
$schnitt = $summe_lv[$row_lva->lehrveranstaltung_id] / $anzahl_lv[$row_lva->lehrveranstaltung_id];
else
$schnitt = 0;
}
else
$schnitt = 0;
if ($schnitt != 0)
{
$summe_schnitt += $schnitt;
$anzahl_schnitt++;
}
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number);
}
if ($anzahl_schnitt != 0)
$schnitt = $summe_schnitt / $anzahl_schnitt;
else
$schnitt = 0;
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number);
if ($anzahlgewichtet != 0)
$summegewichtet = $summegewichtet / $anzahlgewichtet;
$worksheet->write($zeile, ++$spalte, sprintf("%.2f", $summegewichtet), $format_number);
$zeile += 5;
$legendzeile = $zeile;
$startcolumn = 2;
//Farblegende
$bezeichnungen = array();
foreach ($termine as $termin)
$bezeichnungen[$termin->pruefungstyp_kurzbz] = $termin->beschreibung;
$totalmergefarb = 4;
$worksheet->write($legendzeile, $startcolumn, "Farblegende Prüfungsantritte", $format_bold_center);
$worksheet->setMerge($legendzeile, $startcolumn, $legendzeile, $startcolumn + $totalmergefarb);
//In manchen Excelversionen wird border nicht dargestellt -> alle verbundenen zellen nachformatieren
for($i = 1; $i <= $totalmergefarb; $i++)
$worksheet->write($legendzeile, $startcolumn + $i, "", $format_bold_center);
$legendzeile++;
$worksheet->write($legendzeile, $startcolumn, "Termin", $format_bold_center);
$worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 2);
$worksheet->write($legendzeile, $startcolumn + 1, "positiv", $format_bold_center);
$worksheet->write($legendzeile, $startcolumn + 2, "", $format_bold_center);
$worksheet->setMerge($legendzeile, $startcolumn + 3, $legendzeile, $startcolumn + 4);
$worksheet->write($legendzeile, $startcolumn + 3, "negativ", $format_bold_center);
$worksheet->write($legendzeile, $startcolumn + 4, "", $format_bold_center);
$legendzeile++;
foreach ($bezeichnungen as $name => $bezeichnung)
{
if (strstr($bezeichnung, PHP_EOL))
$worksheet->setRow($legendzeile, 25);
$worksheet->write($legendzeile, $startcolumn, $bezeichnung, $format_bold);
$worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 2);
$worksheet->write($legendzeile, $startcolumn + 1, "", $format_colored[$name.'Pos']);
$worksheet->write($legendzeile, $startcolumn + 2, "", $format_colored[$name.'Pos']);
$worksheet->setMerge($legendzeile, $startcolumn + 3, $legendzeile, $startcolumn + 4);
$worksheet->write($legendzeile, $startcolumn + 3, "", $format_colored[$name]);
$worksheet->write($legendzeile, $startcolumn + 4, "", $format_colored[$name]);
$legendzeile++;
}
$worksheet->write($legendzeile, $startcolumn, "nicht eingetragen", $format_bold);
$worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 4);
for($i = 1; $i <= $totalmergefarb; $i++)
$worksheet->write($legendzeile, $startcolumn + $i, "", $format_colored_nichteingetragen);
$legendzeile++;
$worksheet->write($legendzeile, $startcolumn, "nicht zugeteilt", $format_bold);
$worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 4);
for($i = 1; $i <= $totalmergefarb; $i++)
$worksheet->write($legendzeile, $startcolumn + $i, "", $format_colored_nichtzugeteilt);
$startcolumn = $currentcolumn = 9;
//Notenlegende
//optimale Länge in kleinsten Einheiten - Notenspalten
$optimalLengthBeschr = 6;
$groesse = $toMerge = 0;
$beschrColumnMerges = array(0, 0);
$index = 0;
foreach ($beschrColumnMerges as $toMerge)
{
$groesse = 0;
while ($groesse < $optimalLengthBeschr)
{
if ($currentcolumn < 3 + $anzahl_lvspalten)
{
$groesse++;
}
elseif ($currentcolumn < 3 + $anzahl_lvspalten + 2)
{
$groesse += 4;
}
else
{
$groesse += 2;
}
$currentcolumn++;
$beschrColumnMerges[$index]++;
}
$currentcolumn++;
$index++;
}
// all merges for 4 columns of Notenlegende
$allmerges = array($beschrColumnMerges[0], 1, $beschrColumnMerges[1], 1);
$headingmerge = array_sum($allmerges) - 1;
$positivmerge = $allmerges[0] + $allmerges[1] - 1;
$negativmerge = $allmerges[1] + $allmerges[2] - 1;
$worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $headingmerge);
$worksheet->write($zeile, $startcolumn, "Notenlegende", $format_bold_center);
for($i = 1; $i < $headingmerge; $i++)
$worksheet->write($zeile, $startcolumn + $i, "", $format_bold_center);
$worksheet->write($zeile++, $startcolumn + $headingmerge, "", $format_bold_center);
$worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $positivmerge);
$worksheet->write($zeile, $startcolumn, "positiv", $format_bold_center);
for($i = 1; $i <= $positivmerge; $i++)
$worksheet->write($zeile, $startcolumn + $i, "", $format_bold_center);
$worksheet->setMerge($zeile, $startcolumn + $positivmerge + 1, $zeile, $startcolumn + $headingmerge);
$worksheet->write($zeile, $startcolumn + $positivmerge + 1, "negativ", $format_bold_center);
for($i = 1; $i <= $negativmerge; $i++)
$worksheet->write($zeile, $startcolumn + $positivmerge + $i + 1, "", $format_bold_center);
$worksheet->write($zeile++, $startcolumn + $headingmerge, "", $format_bold_center);
$tempzeile = $zeile;
foreach ($noten_arr as $note => $anmerkung)
{
if (is_null($noten_bezeichnungen[$note]) || $noten_bezeichnungen[$note] == "" || is_null($anmerkung) || $anmerkung == "")
continue;
if ($noten_positiv[$note])
{
$worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $positivmerge - 1);
$worksheet->write($zeile, $startcolumn, $noten_bezeichnungen[$note], $format_bold);
for($i = 1; $i <= $positivmerge; $i++)
$worksheet->write($zeile, $startcolumn + $i, "", $format_bold_center);
$worksheet->write($zeile++, $startcolumn + $positivmerge, $anmerkung, $format_bold_center);
}
else
{
$worksheet->setMerge($tempzeile, $startcolumn + $positivmerge + 1, $tempzeile, $startcolumn + $headingmerge - 1);
$worksheet->write($tempzeile, $startcolumn + $positivmerge + 1, $noten_bezeichnungen[$note], $format_bold);
for($i = 1; $i <= $negativmerge; $i++)
$worksheet->write($tempzeile, $startcolumn + $positivmerge + $i + 1, "", $format_bold_center);
$worksheet->write($tempzeile++, $startcolumn + $headingmerge, $anmerkung, $format_bold_center);
}
}
//Die Breite der Spalten setzen
foreach ($maxlength as $i => $breite)
$worksheet->setColumn($i, $i, $breite + 2);
$worksheet->write(0, 0, $semester_aktuell." ".$stg->kuerzel.($semester != '' ? ' '.$semester.'. Semester' : '').' Stand: '.date('d.m.Y'), $format_bold_center);
//Zellen der 1. Zeile verbinden
$worksheet->setMerge(0, 0, 0, $spalte);
//Alle verbundenen Zellen formatieren - in best. Excelversionen border sonst falsch
for($i = 1; $i <= $spalte; $i++)
$worksheet->write(0, $i, "", $format_bold_center);
//Hoehe der 2. Zeile anpassen damit die LVs alle sichtbar sind
$worksheet->setRow(1, $maxheaderheight * 5);
//Ausdruck auf 1 Seite anpassen
$worksheet->fitToPages(1, 1);
$workbook->close();
}
+5
View File
@@ -364,6 +364,11 @@ class cronjob extends basis_db
public function execute()
{
$return = true;
if($this->running)
{
$this->errormsg = 'Job kann nicht ausgefuehrt werden, da er bereits laeuft';
return false;
}
if($this->standalone && $this->isJobRunning())
{
$this->errormsg = 'Job kann nicht ausgefuehrt werden, da noch ein anderer Job laeuft';
+21 -6
View File
@@ -240,26 +240,31 @@ class datum
/**
* Subtrahiert 2 Zeiten ($zeit1-$zeit2) Stunde:Minute
* Es liefert keine Uhrzeit zurueck sondern Stunden und Minuten
* zB 12:10 + 23:15 = 35:25
* zB 23:15 - 12:10 = 11:05
*
* @param $zeit1
* @param $zeit2
* @return subtraktion der beiden zeiten im Format Stunden:Minuten
* @return subtraktion der beiden zeiten im Format Stunden:Minuten, null wenn zeit 1 kleiner als zeit2 ist
*/
public function subZeit($zeit1, $zeit2)
{
list($h1, $m1) = explode(':', $zeit1);
list($h2, $m2) = explode(':', $zeit2);
if($h1<$h2)
return null;
else if($h1 == $h2 && $m1<$m2)
return null;
$m1 -=$m2;
//echo $h1.','.$m1.','.$h2.','.$m2;
if($m1>=60)
if($m1<0)
{
$uebertrag = (int)($m1/60);
$h1+= $uebertrag;
$m1 = $m1 + 60;
$h1 = (int)$h1-1;
}
$m1=$m1%60;
$h1+=-$h2;
$h1-=$h2;
if($m1<10)
$m1='0'.$m1;
if($h1<10)
@@ -381,5 +386,15 @@ class datum
return false;
}
/**
* konvertiert Zeit in format stunden:minuten in Stunden als Dezimalahl
* @param $timestring in Form stunden:minuten
* @return int Stundenzahl als Dezimalzahl
*/
public function convertTimeStringToHours($timestring)
{
return intval(substr($timestring, 0, 2)) + intval(substr($timestring, 3, 2)) / 60;
}
}
?>
+2 -2
View File
@@ -670,7 +670,7 @@ class dokument extends basis_db
$bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig');
$dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig');
$beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig');
$qry = "SELECT distinct on (dokument_kurzbz) dokument_kurzbz, bezeichnung, pflicht, nachreichbar, ausstellungsdetails,
$qry = "SELECT distinct on (dokument_kurzbz) dokument_kurzbz, bezeichnung, pflicht, nachreichbar, ausstellungsdetails,
$bezeichnung_mehrsprachig, $dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig
FROM public.tbl_dokumentstudiengang
JOIN public.tbl_prestudent using (studiengang_kz)
@@ -722,7 +722,7 @@ class dokument extends basis_db
$dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig');
$beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig');
$qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz, ausstellungsdetails,
$qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz, ausstellungsdetails,
$dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig
FROM public.tbl_dokumentstudiengang
JOIN public.tbl_dokument using (dokument_kurzbz)
+11 -1
View File
@@ -48,7 +48,13 @@ class dokument_export
exec('unoconv --version',$ret_arr);
if(isset($ret_arr[0]))
$this->unoconv_version = explode(' ',$ret_arr[0])[1];
{
$hlp = explode(' ',$ret_arr[0]);
if(isset($hlp[1]))
$this->unoconv_version = $hlp[1];
else
die('Could not get Unoconv Version');
}
else
die('Unoconv not found');
@@ -411,7 +417,11 @@ class dokument_export
}
}
else
{
// Remove UTF8 Control Characters (breaking XML)
$value = preg_replace('/[\x00-\x1F\x7F]/u', '', $value);
$_xml_data->addChild("$key",htmlspecialchars("$value"));
}
}
return $_xml_data->asXML();
}
+11 -2
View File
@@ -320,7 +320,10 @@ function loadVariables($user)
if (!isset($emailadressentrennzeichen))
{
global $emailadressentrennzeichen;
$emailadressentrennzeichen=',';
if(defined('DEFAULT_EMAILADRESSENTRENNZEICHEN'))
$emailadressentrennzeichen = DEFAULT_EMAILADRESSENTRENNZEICHEN;
else
$emailadressentrennzeichen=',';
}
if(!isset($alle_unr_mitladen))
@@ -1066,7 +1069,7 @@ function cutString($string, $limit, $placeholderSign = '', $keepFilextension = f
{
return '<span class="error">$placeholderSign must not be shorter than $limit</span>';
}
if(strlen($string) > ($limit - $offset))
{
return substr($string, 0, ($limit - $offset)).$placeholderSign.$extension;
@@ -1076,4 +1079,10 @@ function cutString($string, $limit, $placeholderSign = '', $keepFilextension = f
return $string;
}
}
function PersonLog($ci, $person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz = null, $user=null)
{
$ci->load->library('PersonLogLib');
$ci->personloglib->log($person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz, $user);
}
?>
+69 -22
View File
@@ -36,9 +36,9 @@ class note extends basis_db
public $bezeichnung; // varchar(32)
public $anmerkung; // varchar(256)
public $farbe; // varchar(6)
public $positiv=true; // boolean
public $notenwert; // boolean
public $aktiv; // boolean
public $positiv=true; // boolean
public $notenwert; // boolean
public $aktiv; // boolean
public $lehre; // boolean
/**
@@ -75,10 +75,10 @@ class note extends basis_db
$this->note = $row->note;
$this->bezeichnung = $row->bezeichnung;
$this->anmerkung = $row->anmerkung;
$this->farbe = $row->farbe;
$this->farbe = $row->farbe;
$this->notenwert = $row->notenwert;
$this->positiv = $this->db_parse_bool($row->positiv);
$this->lehre = $this->db_parse_bool($row->lehre);
$this->positiv = $this->db_parse_bool($row->positiv);
$this->lehre = $this->db_parse_bool($row->lehre);
$this->aktiv = $this->db_parse_bool($row->aktiv);
return true;
}
@@ -130,10 +130,10 @@ class note extends basis_db
$this->db_add_param($this->note).', '.
$this->db_add_param($this->bezeichnung).', '.
$this->db_add_param($this->anmerkung).', '.
$this->db_add_param($this->positiv, FHC_BOOLEAN).','.
$this->db_add_param($this->notenwert).','.
$this->db_add_parma($this->aktiv, FHC_BOOLEAN).','.
$this->db_add_param($htis->lehre, FHC_BOOLEAN).');';
$this->db_add_param($this->positiv, FHC_BOOLEAN).','.
$this->db_add_param($this->notenwert).','.
$this->db_add_param($this->aktiv, FHC_BOOLEAN).','.
$this->db_add_param($this->lehre, FHC_BOOLEAN).');';
}
else
{
@@ -141,9 +141,9 @@ class note extends basis_db
'note='.$this->db_add_param($this->note).', '.
'bezeichnung='.$this->db_add_param($this->bezeichnung).', '.
'anmerkung='.$this->db_add_param($this->anmerkung).', '.
'positiv='.$this->db_add_param($this->positiv, FHC_BOOLEAN).', '.
'notenwert='.$this->db_add_param($this->notenwert).', '.
'aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).', '.
'positiv='.$this->db_add_param($this->positiv, FHC_BOOLEAN).', '.
'notenwert='.$this->db_add_param($this->notenwert).', '.
'aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).', '.
'lehre='.$this->db_add_param($this->lehre, FHC_BOOLEAN).' '.
'WHERE note='.$this->db_add_param($this->note).';';
}
@@ -158,15 +158,21 @@ class note extends basis_db
return false;
}
}
/**
* Laedt alle Noten
* Laedt alle Noten, inklusive inaktiven Noten
* @param null $offiziell wenn true, werden nur Noten, die auf offiziellen Dokumenten gedruckt weden können, geladen
* @return true wenn ok, false wenn Fehler
*/
public function getAll()
*/
public function getAll($offiziell = null)
{
$qry = "SELECT * FROM lehre.tbl_note ORDER BY note";
$qry = "SELECT * FROM lehre.tbl_note";
if(is_bool($offiziell))
$qry .= " WHERE offiziell = ".$this->db_add_param($offiziell, FHC_BOOLEAN);
$qry .= " ORDER BY note";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
@@ -177,9 +183,50 @@ class note extends basis_db
$n->bezeichnung = $row->bezeichnung;
$n->anmerkung = $row->anmerkung;
$n->farbe = $row->farbe;
$n->positiv = $this->db_parse_bool($row->positiv);
$n->notenwert = $row->notenwert;
$n->aktiv = $this->db_parse_bool($row->aktiv);
$n->positiv = $this->db_parse_bool($row->positiv);
$n->notenwert = $row->notenwert;
$n->aktiv = $this->db_parse_bool($row->aktiv);
$n->lehre = $this->db_parse_bool($row->lehre);
$this->result[] = $n;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Laedt alle aktive Noten
* @param null $offiziell wenn true, werden nur Noten, die auf offiziellen Dokumenten gedruckt weden können, geladen
* @return true wenn ok, false wenn Fehler
*/
public function getActive($offiziell = null)
{
$qry = "SELECT * FROM lehre.tbl_note WHERE aktiv = TRUE";
if(is_bool($offiziell))
$qry .= " AND offiziell = ".$this->db_add_param($offiziell, FHC_BOOLEAN);
$qry .= " ORDER BY note";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$n = new note();
$n->note = $row->note;
$n->bezeichnung = $row->bezeichnung;
$n->anmerkung = $row->anmerkung;
$n->farbe = $row->farbe;
$n->positiv = $this->db_parse_bool($row->positiv);
$n->notenwert = $row->notenwert;
$n->aktiv = $this->db_parse_bool($row->aktiv);
$n->lehre = $this->db_parse_bool($row->lehre);
$this->result[] = $n;
+12 -9
View File
@@ -104,19 +104,22 @@ class pruefungstermin extends basis_db{
}
}
/**
* Lädt alle Prüfungstypen aus der Datenbank
* @return Array/Boolean Ein Array mit den Daten, wenn ok; ansonsten false
*/
public function getAllPruefungstypen($abschluss = null)
/**
* Lädt alle Prüfungstypen aus der Datenbank
* @param null $abschluss gibt an, ob Abschlussprüfungen ausgegeben werden sollen. default: Abschlussprüfungen und andere Prüfungen
* @return array /Boolean Ein Array mit den Daten, wenn ok; ansonsten false
*/
public function getAllPruefungstypen($abschluss = null, $sort = false)
{
$qry = 'SELECT * FROM lehre.tbl_pruefungstyp';
if(!is_null($abschluss))
if(is_bool($abschluss))
{
$qry .= ' WHERE abschluss='.$this->db_add_param($abschluss);
$qry .= ' WHERE abschluss='.$this->db_add_param($abschluss, FHC_BOOLEAN);
}
if($sort)
$qry .= ' ORDER BY (sort IS NULL), sort, pruefungstyp_kurzbz';
$qry .=';';
if($this->db_query($qry))
@@ -128,6 +131,7 @@ class pruefungstermin extends basis_db{
$obj->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
$obj->beschreibung = $row->beschreibung;
$obj->abschluss = $row->abschluss;
$obj->sort = $row->sort;
array_push($result, $obj);
}
}
@@ -137,7 +141,6 @@ class pruefungstermin extends basis_db{
return false;
}
return $result;
}
/**
Regular → Executable
+6 -4
View File
@@ -200,11 +200,11 @@ class service extends basis_db
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
$zeit
GROUP BY tbl_service.service_id HAVING COUNT(*) > $anzahl_ereignisse
UNION
SELECT tbl_service.*, '0' AS anzahl
FROM public.tbl_service
ORDER BY count DESC,bezeichnung,oe_kurzbz";
if($result = $this->db_query($qry))
@@ -254,7 +254,7 @@ class service extends basis_db
if (!is_null($content_id) && is_numeric($content_id))
$qry.= ' AND content_id='.$this->db_add_param($content_id);
elseif ($content_id==true)
$qry.= ' AND content_id IS NOT NULL';
$qry.= ' AND (content_id IS NOT NULL OR ext_id IS NOT NULL)';
else
$qry.= '';
@@ -363,12 +363,13 @@ class service extends basis_db
if($new)
{
$qry = "BEGIN;INSERT INTO public.tbl_service (bezeichnung, beschreibung, oe_kurzbz, content_id, design_uid, betrieb_uid, operativ_uid)
$qry = "BEGIN;INSERT INTO public.tbl_service (bezeichnung, beschreibung, oe_kurzbz, content_id, ext_id, design_uid, betrieb_uid, operativ_uid)
VALUES(".
$this->db_add_param($this->bezeichnung).','.
$this->db_add_param($this->beschreibung).','.
$this->db_add_param($this->oe_kurzbz).','.
$this->db_add_param($this->content_id).','.
$this->db_add_param($this->ext_id).','.
$this->db_add_param($this->design_uid).','.
$this->db_add_param($this->betrieb_uid).','.
$this->db_add_param($this->operativ_uid).');';
@@ -380,6 +381,7 @@ class service extends basis_db
' beschreibung = '.$this->db_add_param($this->beschreibung).','.
' oe_kurzbz = '.$this->db_add_param($this->oe_kurzbz).','.
' content_id = '.$this->db_add_param($this->content_id).','.
' ext_id = '.$this->db_add_param($this->ext_id).','.
' design_uid = '.$this->db_add_param($this->design_uid).','.
' betrieb_uid = '.$this->db_add_param($this->betrieb_uid).','.
' operativ_uid = '.$this->db_add_param($this->operativ_uid).
+3 -3
View File
@@ -538,9 +538,9 @@ class studienplan extends basis_db
$this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' .
$this->db_add_param($this->pflicht, FHC_BOOLEAN) . ', ' .
$this->db_add_param($this->koordinator) . ', ' .
$this->db_add_param($this->curriculum) . ', ' .
$this->db_add_param($this->export) . ', ' .
$this->db_add_param($this->genehmigung) . ', ' .
$this->db_add_param($this->curriculum, FHC_BOOLEAN) . ', ' .
$this->db_add_param($this->export, FHC_BOOLEAN) . ', ' .
$this->db_add_param($this->genehmigung, FHC_BOOLEAN) . ', ' .
'now(), ' .
$this->db_add_param($this->insertvon) . ');';
}
+3 -4
View File
@@ -54,7 +54,7 @@
* NOTE: If you change these, also change the error_reporting() code below
*
*/
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
/*
@@ -102,7 +102,7 @@ switch (ENVIRONMENT)
* as this file.
*
*/
$system_path = 'vendor/codeigniter/framework/system';
$system_path = dirname(__FILE__).'/vendor/codeigniter/framework/system';
/*
*---------------------------------------------------------------
@@ -118,7 +118,7 @@ switch (ENVIRONMENT)
* NO TRAILING SLASH!
*
*/
$application_folder = 'application';
$application_folder = dirname(__FILE__).'/application';
/*
*---------------------------------------------------------------
@@ -308,4 +308,3 @@ include_once 'vendor/autoload.php';
// Now the bootstrap file
require_once BASEPATH.'core/CodeIgniter.php';
+4
View File
@@ -106,6 +106,10 @@
<!ENTITY menu-statistic-notenspiegel-excel.label "Notenspiegel EXCEL">
<!ENTITY menu-statistic-notenspiegel-excel.accesskey "E">
<!ENTITY menu-statistic-notenspiegel-excel-erweitert.key "R">
<!ENTITY menu-statistic-notenspiegel-excel-erweitert.label "Notenspiegel erweitert EXCEL">
<!ENTITY menu-statistic-notenspiegel-excel-erweitert.accesskey "R">
<!ENTITY menu-statistic-notenspiegel.key "H">
<!ENTITY menu-statistic-notenspiegel.label "Notenspiegel HTML">
<!ENTITY menu-statistic-notenspiegel.accesskey "H">
+2 -1
View File
@@ -19,9 +19,10 @@ $this->phrasen['mailverteiler/mailverteiler']='Mailverteiler';
$this->phrasen['mailverteiler/oeffnenEinesVerteilers']='Öffnen eines Mailverteilers';
$this->phrasen['mailverteiler/status']='Status';
$this->phrasen['mailverteiler/geoeffnet']='Geöffnet';
$this->phrasen['mailverteiler/klickenZumSchicken']='Um ein Mail an den Verteiler zu senden klicken Sie bitte auf den obigen Link. Ihr Mailprogramm öffnet automatisch eine Vorlage für ein neues Mail, welche bereits die korrekte Adresse enthält.';
$this->phrasen['mailverteiler/klickenZumSchicken']='Um ein Mail an den Verteiler zu senden klicken Sie bitte auf den angezeigten Link. Ihr Mailprogramm öffnet automatisch eine Vorlage für ein neues Mail, welche bereits die korrekte Adresse enthält.';
$this->phrasen['mailverteiler/infoBenutzung']='Das Senden ist für den Zeitraum von <b>2 Stunden</b> bzw. für die <b>einmalige</b> Benutzung unter der Adresse <a href="mailto:%1$s">%1$s</a> möglich.';
$this->phrasen['mailverteiler/bestaetigeOeffnen']='Bitte bestätigen Sie das Öffnen des Verteilers %1$s';
$this->phrasen['mailverteiler/bestaetige']='Bestätige';
$this->phrasen['mailverteiler/personenImVerteiler']='Personen im Mailverteiler';
$this->phrasen['mailverteiler/oeffnenFehlgeschlagen']='Beim Freischalten des Verteilers ist ein Fehler aufgetreten.<br>Bitte Informieren Sie den Administrator';
?>
Regular → Executable
+2 -2
View File
@@ -4,7 +4,7 @@ $this->phrasen['services/uebersichtUeberServicesOrganisationseinheiten']='Übers
$this->phrasen['services/details']='Details';
$this->phrasen['services/filtern']='Filtern';
$this->phrasen['services/leistung']='Leistung';
$this->phrasen['services/design']='Design';
$this->phrasen['services/design']='Verantwortlich';
$this->phrasen['services/betrieb']='Betrieb';
$this->phrasen['services/operativ']='Operativ';
?>
?>
+4
View File
@@ -102,6 +102,10 @@
<!ENTITY menu-statistic-notenspiegel-excel.label "Notenspiegel EXCEL">
<!ENTITY menu-statistic-notenspiegel-excel.accesskey "E">
<!ENTITY menu-statistic-notenspiegel-excel-erweitert.key "R">
<!ENTITY menu-statistic-notenspiegel-excel-erweitert.label "Notenspiegel erweitert EXCEL">
<!ENTITY menu-statistic-notenspiegel-excel-erweitert.accesskey "R">
<!ENTITY menu-statistic-notenspiegel.key "H">
<!ENTITY menu-statistic-notenspiegel.label "Notenspiegel HTML">
<!ENTITY menu-statistic-notenspiegel.accesskey "H">
+1
View File
@@ -24,4 +24,5 @@ $this->phrasen['mailverteiler/infoBenutzung']='You can use the Mailinglist durin
$this->phrasen['mailverteiler/bestaetigeOeffnen']='Please confirm to unlock the Mailing list %1$s';
$this->phrasen['mailverteiler/bestaetige']='Confirm';
$this->phrasen['mailverteiler/personenImVerteiler']='People in this mailing list';
$this->phrasen['mailverteiler/oeffnenFehlgeschlagen']='Failed to open mailing list. Please inform your administrator.';
?>
+5 -5
View File
@@ -622,7 +622,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
tbl_lehrveranstaltung.bezeichnung, COALESCE(tbl_lehrveranstaltung.bezeichnung_english,
tbl_lehrveranstaltung.bezeichnung) as bezeichnung_english, tbl_lehrveranstaltung.semester,
tbl_lehrveranstaltung.semesterstunden, tbl_lehrveranstaltung.ects, zeugnis.studiensemester_kurzbz,
zeugnis.note, note.bezeichnung note_bezeichnung, note.anmerkung, sort, tbl_lehrveranstaltung.sws
zeugnis.note, note.bezeichnung note_bezeichnung, note.anmerkung, note.offiziell, sort, tbl_lehrveranstaltung.sws
FROM
lehre.tbl_zeugnisnote zeugnis
JOIN lehre.tbl_note note USING(note)
@@ -654,7 +654,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['ects'] = $row_stud->ects;
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['sws_lv'] = $row_stud->sws;
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['studiensemester_kurzbz'] = $row_stud->studiensemester_kurzbz;
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note'] = $row_stud->anmerkung;
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note'] = $db->db_parse_bool($row_stud->offiziell) ? $row_stud->anmerkung : "";
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['sort'] = $row_stud->sort;
$ects_total += $row_stud->ects;
$semester_ects +=$row_stud->ects;
@@ -677,7 +677,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['ects'] = $row_stud->ects;
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['sws_lv'] = $row_stud->sws;
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['studiensemester_kurzbz'] = $row_stud->studiensemester_kurzbz;
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note'] = $row_stud->anmerkung;
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note'] = $db->db_parse_bool($row_stud->offiziell) ? $row_stud->anmerkung : "";
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['sort'] = $row_stud->sort;
}
}
@@ -857,7 +857,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$qry_outgoing_note = "
SELECT
anmerkung, benotungsdatum, lehrform_kurzbz
anmerkung, offiziell, benotungsdatum, lehrform_kurzbz
FROM
lehre.tbl_zeugnisnote
JOIN tbl_lehrveranstaltung using(lehrveranstaltung_id)
@@ -870,7 +870,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
{
if($row_outgoing_note = $db->db_fetch_object($result_outgoing_note))
{
$note_outgoing = $row_outgoing_note->anmerkung;
$note_outgoing = $db->db_parse_bool($row_outgoing_note->offiziell) ? $row_outgoing_note->anmerkung : "";
$benotungsdatum_outgoing = $datum->formatDatum($row_outgoing_note->benotungsdatum,'d/m/Y');
$lehrform_kurzbz_outgoing = $row_outgoing_note->lehrform_kurzbz;
}
+2 -2
View File
@@ -77,7 +77,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$note_arr = array();
$note = new note();
$note->getAll();
$note->getAll($offiziell = true);
foreach ($note->result as $n){
$note_arr[$n->note] = $n->anmerkung;
$note_bezeichnung_arr[$n->note] = $n->bezeichnung;
@@ -236,7 +236,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$obj = new zeugnisnote();
$obj->load($lehrveranstaltung_id, $uid_arr[$i], $studiensemester_kurzbz);
if ($obj->note)
if ($obj->note && isset($note_arr[$obj->note]))
{
$note = $note_arr[$obj->note];
$note_bezeichnung = $note_bezeichnung_arr[$obj->note];
+2 -2
View File
@@ -85,7 +85,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$note_arr = array();
$note = new note();
$note->getAll();
$note->getAll($offiziell = true);
foreach ($note->result as $n){
$note_arr[$n->note] = $n->anmerkung;
$note_bezeichnung_arr[$n->note] = $n->bezeichnung;
@@ -283,7 +283,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$obj = new zeugnisnote();
$obj->load($lehrveranstaltung_id, $uid_arr[$i], $studiensemester_kurzbz);
if ($obj->note)
if ($obj->note && isset($note_arr[$obj->note]))
{
$note = $note_arr[$obj->note];
$note_bezeichnung = $note_bezeichnung_arr[$obj->note];
+2 -2
View File
@@ -218,7 +218,7 @@ function draw_studienerfolg($uid, $studiensemester_kurzbz)
{
if($row->zeugnis)
{
if (trim($row->note)!=='')
if (trim($row->note)!=='' && isset($note_arr[$row->note]))
$note = $note_arr[$row->note];
else
$note = "";
@@ -297,7 +297,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$note_arr = array();
$note_wert = array();
$note = new note();
$note->getAll();
$note->getAll($offiziell = true);
foreach ($note->result as $n)
{
$note_arr[$n->note] = $n->anmerkung;
+2 -3
View File
@@ -77,11 +77,10 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$note_arr = array();
$note = new note();
$note->getAll();
$note->getAll($offiziell = true);
foreach ($note->result as $n){
$note_arr[$n->note] = $n->anmerkung;
$note_bezeichnung_arr[$n->note] = $n->bezeichnung;
}
if(isset($_GET['ss']))
$studiensemester_kurzbz = $_GET['ss'];
@@ -221,7 +220,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$obj = new zeugnisnote();
$obj->load($lehrveranstaltung_id, $uid_arr[$i], $studiensemester_kurzbz);
if ($obj->note)
if ($obj->note && isset($note_arr[$obj->note]))
{
$note = $note_arr[$obj->note];
$note_bezeichnung = $note_bezeichnung_arr[$obj->note];
+3 -3
View File
@@ -81,7 +81,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$note_arr = array();
$note = new note();
$note->getAll();
$note->getAll($offiziell = true);
foreach ($note->result as $n)
$note_arr[$n->note] = $n->anmerkung;
@@ -257,7 +257,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
{
if($row->zeugnis)
{
if (trim($row->note)!=='')
if (trim($row->note)!=='' && isset($note_arr[$row->note]))
$note = $note_arr[$row->note];
else
$note = "";
@@ -323,7 +323,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
//$note = $note_arr[$projektarbeit[$row->lehrveranstaltung_id]['note']];
$note = $projektarbeit[$row->lehrveranstaltung_id]['note'];
//$nl = str_repeat('\n',($anzahl_nl));
$xml_fussnote .=' <note>'.(isset($note_arr[$note])?$note_arr[$note]:$note).$nl.'</note>';
$xml_fussnote .=' <note>'.(isset($note_arr[$note])?$note_arr[$note]:"").$nl.'</note>';
$xml_fussnote .=' <sws>'.$nl.'</sws>';
$xml_fussnote .=' <sws_lv>'.$nl.'</sws_lv>';
$xml_fussnote .=' <ects>'.$nl.'</ects>';
+377 -16
View File
@@ -358,8 +358,8 @@ if(!$result = @$db->db_query("SELECT mailversand FROM campus.tbl_coodle LIMIT 1;
if(!$db->db_query($qry))
echo '<strong>campus.tbl_coodle: '.$db->db_last_error().'</strong><br>';
else
echo '<br>campus.tbl_coodle: Spalten mailversand, teilnehmer_anonym und termine_anonym hinzugefuegt!<br>';
else
echo '<br>campus.tbl_coodle: Spalten mailversand, teilnehmer_anonym und termine_anonym hinzugefuegt!<br>';
}
// Spalte onlinebewerbung_studienplan in lehre.tbl_studienplan
@@ -369,8 +369,99 @@ if(!$result = @$db->db_query("SELECT onlinebewerbung_studienplan FROM lehre.tbl_
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_studienplan: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_studienplan: Spalte onlinebewerbung_studienplan hinzugefuegt!<br>';
}
// Spalte sort in lehre.tbl_pruefungstyp (gibt Reihenfolge der Prüfungsantritte an)
if(!$result = @$db->db_query("SELECT sort FROM lehre.tbl_pruefungstyp LIMIT 1;"))
{
$qry = "ALTER TABLE lehre.tbl_pruefungstyp ADD COLUMN sort smallint;";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_pruefungstyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_pruefungstyp: Spalte sort hinzugefuegt!<br>';
}
// zusätzliche kommissionelle Prüfung (4.Termin) als Zeile hinzufügen
if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefungstyp_kurzbz= 'zusKommPruef';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO lehre.tbl_pruefungstyp(pruefungstyp_kurzbz, beschreibung, abschluss) VALUES ('zusKommPruef', 'zusätzliche kommissionelle Prüfung', FALSE);";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_pruefungstyp: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_studienplan: Spalte onlinebewerbung_studienplan hinzugefuegt!<br>';
echo '<br>lehre.tbl_pruefungstyp: Zeile zusKommPruef hinzugefuegt!<br>';
}
}
// Note "entschuldigt" hinzufügen
if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES((SELECT max(note)+1 FROM lehre.tbl_note),'entschuldigt', 'en', NULL, TRUE, NULL, TRUE, TRUE);";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_note: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_note: Zeile entschuldigt hinzugefuegt!<br>';
}
}
// Note "unentschuldigt" hinzufügen
if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue' AND (bezeichnung = 'unentschuldigt' OR bezeichnung = 'Unentschuldigt');"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES((SELECT max(note)+1 FROM lehre.tbl_note),'unentschuldigt', 'ue', NULL, FALSE, NULL, TRUE, TRUE);";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_note: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_note: Zeile unentschuldigt hinzugefuegt!<br>';
}
}
// Spalte offiziell in lehre.tbl_note
if(!$result = @$db->db_query("SELECT offiziell FROM lehre.tbl_note LIMIT 1;"))
{
$qry = "ALTER TABLE lehre.tbl_note ADD COLUMN offiziell boolean NOT NULL DEFAULT true;";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_note: '.$db->db_last_error().'</strong><br>';
else
echo '<br>lehre.tbl_note: Spalte offiziell hinzugefuegt!<br>';
}
// Spalte bezeichnung_mehrsprachig in lehre.tbl_note
if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM lehre.tbl_note LIMIT 1"))
{
$qry = "ALTER TABLE lehre.tbl_note ADD COLUMN bezeichnung_mehrsprachig varchar(64)[];";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_note '.$db->db_last_error().'</strong><br>';
else
echo 'lehre.tbl_note: Spalte bezeichnung_mehrsprachig hinzugefuegt!<br>';
// Bezeichnung_mehrsprachig aus existierender Bezeichnung vorausfuellen. Ein Eintrag fuer jede Sprache mit Content aktiv.
$qry_help = "SELECT index FROM public.tbl_sprache WHERE content=TRUE;";
if(!$result = $db->db_query($qry_help))
echo '<strong>tbl_note bezeichnung_mehrsprachig: Fehler beim ermitteln der Sprachen: '.$db->db_last_error().'</strong>';
else
{
$qry='';
while($row = $db->db_fetch_object($result))
$qry.= "UPDATE lehre.tbl_note set bezeichnung_mehrsprachig[".$row->index."] = bezeichnung;";
if(!$db->db_query($qry))
echo '<strong>Setzen der bezeichnung_mehrsprachig fehlgeschlagen: '.$db->db_last_error().'</strong><br>';
else
echo 'lehre.tbl_note: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen<br>';
}
}
// Column design_uid, betrieb_uid and operativ_uid to tbl_service
@@ -385,8 +476,8 @@ if(!$result = @$db->db_query("SELECT design_uid FROM public.tbl_service LIMIT 1;
if(!$db->db_query($qry))
echo '<strong>public.tbl_service: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_service: Spalten design_uid,betrieb_uid,operativ_uid hinzugefuegt!<br>';
else
echo '<br>public.tbl_service: Spalten design_uid,betrieb_uid,operativ_uid hinzugefuegt!<br>';
}
// FOREIGN KEY tbl_phrasentext_sprache_fkey: system.tbl_phrasentext.sprache references public.tbl_sprache.sprache
@@ -525,9 +616,9 @@ if(!@$db->db_query("SELECT campus.get_highest_content_version(0)"))
RETURN rec.version;
END;
$_$;
ALTER FUNCTION campus.get_highest_content_version(bigint) OWNER TO fhcomplete;';
if(!$db->db_query($qry))
echo '<strong>campus.get_highest_content_version(content_id): '.$db->db_last_error().'</strong><br>';
else
@@ -543,7 +634,7 @@ if(!@$db->db_query("SELECT ausstellungsnation FROM public.tbl_akte LIMIT 1"))
COMMENT ON COLUMN public.tbl_akte.ausstellungsnation IS 'Nation-Code des Landes, in dem das Dokument ausgestellt wurde';
COMMENT ON COLUMN public.tbl_akte.formal_geprueft_amum IS 'Bestaetigungsdatum, an dem das Dokument inhaltlich auf Formalkriterien (Leserlichkeit, Vollständigkeit, etc) geprueft wurde';
";
if(!$db->db_query($qry))
echo '<strong>public.tbl_rt_person '.$db->db_last_error().'</strong><br>';
else
@@ -556,7 +647,7 @@ if(!@$db->db_query("SELECT ausstellungsdetails FROM public.tbl_dokument LIMIT 1"
$qry = "ALTER TABLE public.tbl_dokument ADD COLUMN ausstellungsdetails boolean NOT NULL DEFAULT false;
COMMENT ON COLUMN public.tbl_dokument.ausstellungsdetails IS 'Sollen beim Dokument weitere Felder (zB Ausstellungsnation) angezeigt werden?';
";
if(!$db->db_query($qry))
echo '<strong>public.tbl_dokument '.$db->db_last_error().'</strong><br>';
else
@@ -700,6 +791,274 @@ if ($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berech
// End extensions
//---------------------------------------------------------------------------------------------------------------------
if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_log LIMIT 1"))
{
$qry = "CREATE TABLE system.tbl_log
(
log_id bigint NOT NULL,
person_id integer,
zeitpunkt timestamp NOT NULL DEFAULT now(),
app varchar(32) NOT NULL,
oe_kurzbz varchar(32),
logtype_kurzbz varchar(32) NOT NULL,
logdata jsonb NOT NULL,
insertvon varchar(32)
);
ALTER TABLE system.tbl_log ADD CONSTRAINT pk_log PRIMARY KEY (log_id);
CREATE SEQUENCE system.tbl_log_log_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE system.tbl_log ALTER COLUMN log_id SET DEFAULT nextval('system.tbl_log_log_id_seq');
GRANT SELECT, INSERT ON system.tbl_log TO vilesci;
GRANT SELECT, INSERT ON system.tbl_log TO web;
GRANT SELECT, UPDATE ON system.tbl_log_log_id_seq TO vilesci;
GRANT SELECT, UPDATE ON system.tbl_log_log_id_seq TO web;
CREATE TABLE system.tbl_logtype
(
logtype_kurzbz varchar(32),
data_schema jsonb NOT NULL
);
ALTER TABLE system.tbl_logtype ADD CONSTRAINT pk_logtype PRIMARY KEY (logtype_kurzbz);
GRANT SELECT ON system.tbl_logtype TO vilesci;
GRANT SELECT ON system.tbl_logtype TO web;
ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_person_id FOREIGN KEY (person_id) REFERENCES public.tbl_person(person_id) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_app FOREIGN KEY (app) REFERENCES system.tbl_app(app) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_oe_kurzbz FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_logtype_kurzbz FOREIGN KEY (logtype_kurzbz) REFERENCES system.tbl_logtype(logtype_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
INSERT INTO system.tbl_logtype VALUES ('Action', '{\"type\": \"object\", \"title\": \"Action\", \"required\": [\"name\", \"success\", \"message\"], \"properties\": {\"name\": {\"type\": \"string\"}, \"message\": {\"type\": \"string\"}, \"success\": {\"type\": \"string\"}}}');
INSERT INTO system.tbl_logtype VALUES ('Processstate', '{\"type\": \"object\", \"title\": \"Processstate\", \"required\": [\"name\"], \"properties\": {\"name\": {\"type\": \"string\"}}}');
";
if (!$db->db_query($qry))
echo '<strong>system.tbl_log '.$db->db_last_error().'</strong><br>';
else
echo ' system.tbl_log hinzugefügt<br>';
}
//---------------------------------------------------------------------------------------------------------------------
// Start filters
// SEQUENCE tbl_filters_id_seq
if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_filters_id_seq'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = '
CREATE SEQUENCE system.tbl_filters_id_seq
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
';
if(!$db->db_query($qry))
echo '<strong>system.tbl_filters_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created sequence: system.tbl_filters_id_seq';
// GRANT SELECT, UPDATE ON SEQUENCE system.tbl_filters_id_seq TO vilesci;
$qry = 'GRANT SELECT, UPDATE ON SEQUENCE system.tbl_filters_id_seq TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_filters_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on system.tbl_filters_id_seq';
// GRANT SELECT, UPDATE ON SEQUENCE system.tbl_filters_id_seq TO fhcomplete;
$qry = 'GRANT SELECT, UPDATE ON SEQUENCE system.tbl_filters_id_seq TO fhcomplete;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_filters_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on system.tbl_filters_id_seq';
}
}
// TABLE system.tbl_filters
if (!@$db->db_query("SELECT 0 FROM system.tbl_filters WHERE 0 = 1"))
{
$qry = '
CREATE TABLE system.tbl_filters (
filter_id integer NOT NULL DEFAULT nextval(\'system.tbl_filters_id_seq\'::regclass),
app character varying(32) NOT NULL,
dataset_name character varying(128) NOT NULL,
filter_kurzbz character varying(64) NOT NULL,
person_id integer,
description character varying(128)[] NOT NULL,
sort integer,
default_filter boolean DEFAULT FALSE,
filter jsonb NOT NULL,
oe_kurzbz character varying(16)
);';
if (!$db->db_query($qry))
echo '<strong>system.tbl_filters '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created table system.tbl_filters';
// GRANT SELECT ON TABLE system.tbl_filters TO web;
$qry = 'GRANT SELECT ON TABLE system.tbl_filters TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_filters '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_filters';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_filters TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_filters TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_filters '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on system.tbl_filters';
// COMMENT ON TABLE system.tbl_filters
$qry = 'COMMENT ON TABLE system.tbl_filters IS \'Table to manage filters\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters';
// COMMENT ON TABLE system.tbl_filters.app
$qry = 'COMMENT ON COLUMN system.tbl_filters.app IS \'Application which this filter belongs to\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.app: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.app';
// COMMENT ON TABLE system.tbl_filters.dataset_name
$qry = 'COMMENT ON COLUMN system.tbl_filters.dataset_name IS \'Name that identifies the data set to be filtered\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.dataset_name: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.dataset_name';
// COMMENT ON TABLE system.tbl_filters.filter_kurzbz
$qry = 'COMMENT ON COLUMN system.tbl_filters.filter_kurzbz IS \'Short description of the filter, unique for this application and this data set\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.filter_kurzbz: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.filter_kurzbz';
// COMMENT ON TABLE system.tbl_filters.person_id
$qry = 'COMMENT ON COLUMN system.tbl_filters.person_id IS \'Person identifier which this filter belongs to. If null it is global\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.person_id: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.person_id';
// COMMENT ON TABLE system.tbl_filters.description
$qry = 'COMMENT ON COLUMN system.tbl_filters.description IS \'Long description for this filter\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.description: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.description';
// COMMENT ON TABLE system.tbl_filters.sort
$qry = 'COMMENT ON COLUMN system.tbl_filters.sort IS \'Indicates the order in which the filters appear in a list\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.sort: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.sort';
// COMMENT ON TABLE system.tbl_filters.default_filter
$qry = 'COMMENT ON COLUMN system.tbl_filters.default_filter IS \'If it is the default filter for that data set\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.default_filter: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.default_filter';
// COMMENT ON TABLE system.tbl_filters.filter
$qry = 'COMMENT ON COLUMN system.tbl_filters.filter IS \'Cointains json that define the filter\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.filter: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.filter';
// COMMENT ON TABLE system.tbl_filters.oe_kurzbz
$qry = 'COMMENT ON COLUMN system.tbl_filters.oe_kurzbz IS \'Organisation unit which this filter belongs to. If null it is for all the organisation units\';';
if (!$db->db_query($qry))
echo '<strong>Adding comment to system.tbl_filters.oe_kurzbz: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Added comment to system.tbl_filters.oe_kurzbz';
// ALTER SEQUENCE system.tbl_filters_id_seq OWNED BY system.tbl_filters.filter_id;
$qry = 'ALTER SEQUENCE system.tbl_filters_id_seq OWNED BY system.tbl_filters.filter_id;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_filters_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Altered sequence system.tbl_filters_id_seq';
}
// UNIQUE INDEX uidx_filters_app_dataset_name_filter_kurzbz
if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'uidx_filters_app_dataset_name_filter_kurzbz'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = 'CREATE UNIQUE INDEX uidx_filters_app_dataset_name_filter_kurzbz ON system.tbl_filters USING btree (app, dataset_name, filter_kurzbz);';
if (!$db->db_query($qry))
echo '<strong>uidx_filters_app_dataset_name_filter_kurzbz '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created unique uidx_filters_app_dataset_name_filter_kurzbz';
}
}
// Add permission for filters
if ($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'system/filters';"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('system/filters', 'To manage core filters');";
if (!$db->db_query($qry))
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
else
echo ' system.tbl_berechtigung: Added permission for filters<br>';
}
}
// FOREIGN KEY tbl_filters_app_fkey
if ($result = $db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_filters_app_fkey'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = 'ALTER TABLE system.tbl_filters ADD CONSTRAINT tbl_filters_app_fkey FOREIGN KEY (app) REFERENCES system.tbl_app(app) ON UPDATE CASCADE ON DELETE RESTRICT;';
if (!$db->db_query($qry))
echo '<strong>tbl_filters_app_fkey '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created foreign key tbl_filters_app_fkey';
}
}
// FOREIGN KEY tbl_filters_person_id_fkey
if ($result = $db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_filters_person_id_fkey'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = 'ALTER TABLE system.tbl_filters ADD CONSTRAINT tbl_filters_person_id_fkey FOREIGN KEY (person_id) REFERENCES public.tbl_person(person_id) ON UPDATE CASCADE ON DELETE RESTRICT;';
if (!$db->db_query($qry))
echo '<strong>tbl_filters_person_id_fkey '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created foreign key tbl_filters_person_id_fkey';
}
}
// FOREIGN KEY tbl_filters_oe_kurzbz_fkey
if ($result = $db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_filters_oe_kurzbz_fkey'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = 'ALTER TABLE system.tbl_filters ADD CONSTRAINT tbl_filters_oe_kurzbz_fkey FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;';
if (!$db->db_query($qry))
echo '<strong>tbl_filters_oe_kurzbz_fkey '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created foreign key tbl_filters_oe_kurzbz_fkey';
}
}
// End filters
//---------------------------------------------------------------------------------------------------------------------
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -823,12 +1182,12 @@ $tabellen=array(
"lehre.tbl_notenschluessel" => array("notenschluessel_kurzbz","bezeichnung"),
"lehre.tbl_notenschluesselaufteilung" => array("notenschluesselaufteilung_id","notenschluessel_kurzbz","note","punkte"),
"lehre.tbl_notenschluesselzuordnung" => array("notenschluesselzuordnung_id","notenschluessel_kurzbz","lehrveranstaltung_id","studienplan_id","oe_kurzbz","studiensemester_kurzbz"),
"lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre"),
"lehre.tbl_note" => array("note","bezeichnung","anmerkung","farbe","positiv","notenwert","aktiv","lehre","offiziell","bezeichnung_mehrsprachig"),
"lehre.tbl_projektarbeit" => array("projektarbeit_id","projekttyp_kurzbz","titel","lehreinheit_id","student_uid","firma_id","note","punkte","beginn","ende","faktor","freigegeben","gesperrtbis","stundensatz","gesamtstunden","themenbereich","anmerkung","updateamum","updatevon","insertamum","insertvon","ext_id","titel_english","seitenanzahl","abgabedatum","kontrollschlagwoerter","schlagwoerter","schlagwoerter_en","abstract", "abstract_en", "sprache","final"),
"lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id"),
"lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung"),
"lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"),
"lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss"),
"lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss","sort"),
"lehre.tbl_studienordnung" => array("studienordnung_id","studiengang_kz","version","gueltigvon","gueltigbis","bezeichnung","ects","studiengangbezeichnung","studiengangbezeichnung_englisch","studiengangkurzbzlang","akadgrad_id","insertamum","insertvon","updateamum","updatevon","ext_id", "status_kurzbz", "standort_id"),
"lehre.tbl_studienordnungstatus" => array("status_kurzbz","bezeichnung","reihenfolge"),
"lehre.tbl_studienordnung_semester" => array("studienordnung_semester_id","studienordnung_id","studiensemester_kurzbz","semester"),
@@ -849,7 +1208,7 @@ $tabellen=array(
"lehre.tbl_zeugnisnote" => array("lehrveranstaltung_id","student_uid","studiensemester_kurzbz","note","uebernahmedatum","benotungsdatum","bemerkung","updateamum","updatevon","insertamum","insertvon","ext_id","punkte"),
"public.ci_apikey" => array("apikey_id","key","level","ignore_limits","date_created"),
"public.tbl_adresse" => array("adresse_id","person_id","name","strasse","plz","ort","gemeinde","nation","typ","heimatadresse","zustelladresse","firma_id","updateamum","updatevon","insertamum","insertvon","ext_id","rechnungsadresse","anmerkung"),
"public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern","nachgereicht_am"),
"public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern","nachgereicht_am","ausstellungsnation","formal_geprueft_amum"),
"public.tbl_ampel" => array("ampel_id","kurzbz","beschreibung","benutzer_select","deadline","vorlaufzeit","verfallszeit","insertamum","insertvon","updateamum","updatevon","email","verpflichtend","buttontext"),
"public.tbl_ampel_benutzer_bestaetigt" => array("ampel_benutzer_bestaetigt_id","ampel_id","uid","insertamum","insertvon"),
"public.tbl_aufmerksamdurch" => array("aufmerksamdurch_kurzbz","beschreibung","ext_id","bezeichnung", "aktiv"),
@@ -862,7 +1221,7 @@ $tabellen=array(
"public.tbl_benutzergruppe" => array("uid","gruppe_kurzbz","studiensemester_kurzbz","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_bewerbungstermine" => array("bewerbungstermin_id","studiengang_kz","studiensemester_kurzbz","beginn","ende","nachfrist","nachfrist_ende","anmerkung", "insertamum", "insertvon", "updateamum", "updatevon","studienplan_id"),
"public.tbl_buchungstyp" => array("buchungstyp_kurzbz","beschreibung","standardbetrag","standardtext","aktiv","credit_points"),
"public.tbl_dokument" => array("dokument_kurzbz","bezeichnung","ext_id","bezeichnung_mehrsprachig","dokumentbeschreibung_mehrsprachig"),
"public.tbl_dokument" => array("dokument_kurzbz","bezeichnung","ext_id","bezeichnung_mehrsprachig","dokumentbeschreibung_mehrsprachig","ausstellungsdetails"),
"public.tbl_dokumentprestudent" => array("dokument_kurzbz","prestudent_id","mitarbeiter_uid","datum","updateamum","updatevon","insertamum","insertvon","ext_id"),
"public.tbl_dokumentstudiengang" => array("dokument_kurzbz","studiengang_kz","ext_id", "onlinebewerbung", "pflicht","beschreibung_mehrsprachig","nachreichbar"),
"public.tbl_erhalter" => array("erhalter_kz","kurzbz","bezeichnung","dvr","logo","zvr"),
@@ -950,6 +1309,9 @@ $tabellen=array(
"system.tbl_benutzerrolle" => array("benutzerberechtigung_id","rolle_kurzbz","berechtigung_kurzbz","uid","funktion_kurzbz","oe_kurzbz","art","studiensemester_kurzbz","start","ende","negativ","updateamum", "updatevon","insertamum","insertvon","kostenstelle_id","anmerkung"),
"system.tbl_berechtigung" => array("berechtigung_kurzbz","beschreibung"),
"system.tbl_extensions" => array("extension_id","name","version","description","license","url","core_version","dependencies","enabled"),
"system.tbl_log" => array("log_id","person_id","zeitpunkt","app","oe_kurzbz","logtype_kurzbz","logdata","insertvon"),
"system.tbl_logtype" => array("logtype_kurzbz", "data_schema"),
"system.tbl_filters" => array("filter_id","app","dataset_name","filter_kurzbz","person_id","description","sort","default_filter","filter","oe_kurzbz"),
"system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon"),
"system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"),
"system.tbl_rolle" => array("rolle_kurzbz","beschreibung"),
@@ -965,15 +1327,14 @@ $tabellen=array(
"wawi.tbl_betriebsmittelstatus" => array("betriebsmittelstatus_kurzbz","beschreibung"),
"wawi.tbl_betriebsmitteltyp" => array("betriebsmitteltyp","beschreibung","anzahl","kaution","typ_code","mastershapename"),
"wawi.tbl_budget" => array("geschaeftsjahr_kurzbz","kostenstelle_id","budget"),
"wawi.tbl_zahlungstyp" => array("zahlungstyp_kurzbz","bezeichnung","reihenfolge"),
"wawi.tbl_konto" => array("konto_id","kontonr","beschreibung","kurzbz","aktiv","person_id","insertamum","insertvon","updateamum","updatevon","ext_id","person_id","hilfe"),
"wawi.tbl_zahlungstyp" => array("zahlungstyp_kurzbz","bezeichnung"),
"wawi.tbl_konto" => array("konto_id","kontonr","beschreibung","kurzbz","aktiv","person_id","insertamum","insertvon","updateamum","updatevon","ext_id","person_id"),
"wawi.tbl_konto_kostenstelle" => array("konto_id","kostenstelle_id","insertamum","insertvon"),
"wawi.tbl_kostenstelle" => array("kostenstelle_id","oe_kurzbz","bezeichnung","kurzbz","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","kostenstelle_nr","deaktiviertvon","deaktiviertamum"),
"wawi.tbl_bestellungtag" => array("tag","bestellung_id","insertamum","insertvon"),
"wawi.tbl_bestelldetailtag" => array("tag","bestelldetail_id","insertamum","insertvon"),
"wawi.tbl_projekt_bestellung" => array("projekt_kurzbz","bestellung_id","anteil"),
"wawi.tbl_bestellung" => array("bestellung_id","besteller_uid","kostenstelle_id","konto_id","firma_id","lieferadresse","rechnungsadresse","freigegeben","bestell_nr","titel","bemerkung","liefertermin","updateamum","updatevon","insertamum","insertvon","ext_id","zahlungstyp_kurzbz","zuordnung_uid","zuordnung_raum","zuordnung","auftragsbestaetigung","auslagenersatz","iban","wird_geleast","nicht_bestellen","empfehlung_leasing"),
"wawi.tbl_bestellung_angebot" => array("angebot_id","bestellung_id","dms_id"),
"wawi.tbl_bestelldetail" => array("bestelldetail_id","bestellung_id","position","menge","verpackungseinheit","beschreibung","artikelnummer","preisprove","mwst","erhalten","sort","text","updateamum","updatevon","insertamum","insertvon"),
"wawi.tbl_bestellung_bestellstatus" => array("bestellung_bestellstatus_id","bestellung_id","bestellstatus_kurzbz","uid","oe_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"),
"wawi.tbl_bestellstatus" => array("bestellstatus_kurzbz","beschreibung"),
+2 -1
View File
@@ -134,7 +134,8 @@ $error_msg='';
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
WHERE lektor
AND aktiv";
AND aktiv
AND personalnummer >=0";
//MitarbeiterInnen mit gueltiger Funktion "ass" (assistenz)
$verteilerArray['tw_sek']['bezeichnung'] = 'Alle Sekretariate';
$verteilerArray['tw_sek']['beschreibung'] = 'Alle Sekretariate an der FH Technikum Wien';
+1 -1
View File
@@ -345,7 +345,7 @@ if($result = $db->db_query($qry))
$person_content.="
<Funktion>
<StgKz>".sprintf("%04s",$row_fkt['stgkz'])."</StgKz>
<SWS>".number_format($row_fkt['sws'])."</SWS>";
<SWS>".number_format($row_fkt['sws'],2)."</SWS>";
if($row_fkt['hauptberuflich']=='t')
{
$person_content.="
+12 -8
View File
@@ -40,15 +40,19 @@ foreach ($cj->result as $cronjob)
$timestamp = $cronjob->getNextExecutionTime();
if($timestamp && time()>=$timestamp)
{
//Starten des Jobs
if($cronjob->execute())
if(!$cronjob->running)
{
echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') executed<br>'."\n";
echo implode($cronjob->output,"\n");
}
else
{
echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') <b>failed</b><br>'."\n";
echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') execute...<br>'."\n";
//Starten des Jobs
if($cronjob->execute())
{
echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') executed<br>'."\n";
echo implode($cronjob->output,"\n");
}
else
{
echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') <b>failed:'.$cronjob->errormsg.'</b><br>'."\n";
}
}
}
}
+13 -25
View File
@@ -20,7 +20,7 @@
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/studiengang.class.php');
@@ -38,7 +38,7 @@ $user = get_uid();
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
@@ -58,21 +58,21 @@ echo '<html>
<body class="Background_main">
';
if(!$rechte->isBerechtigt('admin') &&
if(!$rechte->isBerechtigt('admin') &&
!$rechte->isBerechtigt('preinteressent') &&
!$rechte->isBerechtigt('assistenz'))
die('Sie haben keine Berechtigung fuer diese Seite');
if(isset($_GET['id']) && is_numeric($_GET['id']))
$id = $_GET['id'];
else
else
die('der Parameter id mit der Person_id muss uebergeben werden');
$person = new person();
if(!$person->load($id))
die('Person wurde nicht gefunden');
//PERSON
echo '<h2>Person</h2>';
echo '<table cellspacing="3px">';
@@ -117,7 +117,7 @@ $nation->getAll();
$nation_arr['']='';
foreach($nation->nation as $row)
$nation_arr[$row->code]=$row->kurztext;
$adresstyp_arr = array(''=>'','h'=>'Hauptwohnsitz','n'=>'Nebenwohnsitz','f'=>'Firma');
// *** ADRESSEN ***
@@ -144,18 +144,6 @@ foreach ($adresse_obj->result as $row)
echo "<td>".$firma->name."</td>";
}
echo '</table>';
//PREINTERESSENT
function CutString($strVal, $limit)
{
if(strlen($strVal) > $limit+3)
{
return substr($strVal, 0, $limit) . "...";
}
else
{
return $strVal;
}
}
$preinteressent = new preinteressent();
$preinteressent->getPreinteressenten($person->person_id);
@@ -188,7 +176,7 @@ if(count($preinteressent->result)>0)
echo '<td>';
$preinteressent1 = new preinteressent();
$preinteressent1->loadZuordnungen($row->preinteressent_id);
$stgs='';
foreach ($preinteressent1->result as $row_zuordnung)
{
@@ -210,12 +198,12 @@ if(count($preinteressent->result)>0)
$plz = $adresse->result[0]->plz;
$ort = $adresse->result[0]->ort;
}
else
else
{
$plz='';
$ort='';
}
echo $plz.' '.$ort.' '.$firma->name." ($firma->firmentyp_kurzbz)";
}
echo '</td>';
@@ -283,7 +271,7 @@ if(count($prestudent->result)>0)
{
$uid='ACHTUNG: Es gibt mehrere Studenteneinträge die auf diesen Prestudenten zeigen!';
}
else
else
{
if($row_std = $db->db_fetch_object($result))
{
@@ -295,7 +283,7 @@ if(count($prestudent->result)>0)
echo "<td>$uid</td>";
echo "<td>$gruppe</td>";
$prestudent1 = new prestudent();
$prestudent1->getLastStatus($row->prestudent_id);
$prestudent1->getLastStatus($row->prestudent_id);
echo "<td>$prestudent1->status_kurzbz ".($prestudent1->ausbildungssemester!=''?"($prestudent1->ausbildungssemester. Semester)":'')."</td>";
echo '</tr>';
}
@@ -307,7 +295,7 @@ if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)>0)
{
echo '<br><h2>Mitarbeiter</h2>';
echo '<br><h2>Mitarbeiter</h2>';
echo '<table class="liste table-autosort:0 table-stripeclass:alternate table-autostripe">
<thead>
<tr>
@@ -333,4 +321,4 @@ if($result = $db->db_query($qry))
}
echo '</body>';
echo '</html>';
?>
?>
+16 -14
View File
@@ -26,7 +26,7 @@ $user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/service'))
die('Sie haben keine Berechtigung fuer diese Seite');
@@ -37,27 +37,27 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
<title>Service</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/fhcomplete.css" type="text/css">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">';
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
echo'
<script type="text/javascript">
$(document).ready(function()
{
$(document).ready(function()
{
$("#myTable").tablesorter(
{
sortList: [[3,0],[2,0]],
widgets: [\'zebra\'],
headers: {8:{sorter:false}}
});
}
});
}
);
function confdel()
{
return confirm("Wollen Sie diesen Eintrag wirklich löschen?");
@@ -73,10 +73,10 @@ if(isset($_GET['action']) && $_GET['action']=='delete')
{
if(!$rechte->isBerechtigt('basis/service', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Seite');
if(!isset($_GET['service_id']))
die('Fehlender Parameter ServiceID');
$service = new service();
if($service->delete($_GET['service_id']))
echo '<span class="ok">Eintrag wurde erfolgreich gelöscht</span>';
@@ -100,7 +100,7 @@ foreach($oe->result as $row)
$selected='selected';
else
$selected='';
echo '<OPTION value="'.$row->oe_kurzbz.'" '.$selected.'>'.$row->organisationseinheittyp_kurzbz.' '.$row->bezeichnung.'</OPTION>';
}
echo '</SELECT>
@@ -125,6 +125,7 @@ echo '<table class="tablesorter" id="myTable">
<th>Beschreibung</th>
<th>Organisationseinheit</th>
<th>Content_ID</th>
<th>Ext_ID</th>
<th>Design</th>
<th>Betrieb</th>
<th>Operativ</th>
@@ -141,6 +142,7 @@ foreach($service->result as $row)
echo '<td>',$row->beschreibung,'</td>';
echo '<td>',$row->oe_kurzbz,'</td>';
echo '<td>',$row->content_id,'</td>';
echo '<td>',$row->ext_id,'</td>';
echo '<td>',$row->design_uid,'</td>';
echo '<td>',$row->betrieb_uid,'</td>';
echo '<td>',$row->operativ_uid,'</td>';
@@ -152,4 +154,4 @@ echo '</tbody>
</table>
</body>
</html>';
?>
?>
+7 -8
View File
@@ -37,7 +37,7 @@ if (!isset($outputformat))
{
$outputformat='html';
}
if($statistik->berechtigung_kurzbz != '')
{
$uid = get_uid();
@@ -102,15 +102,14 @@ foreach($_REQUEST as $name=>$value)
<link rel="stylesheet" href="../../skin/fhcomplete.css" type="text/css"/>
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css"/>
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
<script type="text/javascript">
<?php
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
?>
<script type="text/javascript">
$(function() {
$("#myTable").tablesorter({
widgets: ['zebra']
widgets: ['zebra', 'filter', 'stickyHeaders']
});
});
</script>