diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 378a72f79..ed1f1d37d 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -129,24 +129,31 @@ class InfoCenter extends FHC_Controller $personexists = $this->PersonModel->load($person_id); - if(isError($personexists)) + if (isError($personexists)) show_error($personexists->retval); if (empty($personexists->retval)) show_error('person does not exist!'); - //mark person as locked for editing - $result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP); + $show_lock_link_get = $this->input->get('show_lock_link'); + $show_lock_link = !isset($show_lock_link_get) || $show_lock_link_get === '1'; - if(isError($result)) - show_error($result->retval); + if ($show_lock_link) + { + //mark person as locked for editing + $result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP); + + if (isError($result)) + show_error($result->retval); + } $persondata = $this->_loadPersonData($person_id); $prestudentdata = $this->_loadPrestudentData($person_id); $data = array_merge( $persondata, - $prestudentdata + $prestudentdata, + array('show_lock_link' => $show_lock_link) ); $data['fhc_controller_id'] = $this->fhc_controller_id; @@ -162,7 +169,7 @@ class InfoCenter extends FHC_Controller { $result = $this->PersonLockModel->unlockPerson($person_id, self::APP); - if(isError($result)) + if (isError($result)) show_error($result->retval); redirect(self::URL_PREFIX.'?fhc_controller_id='.$this->fhc_controller_id); @@ -245,9 +252,7 @@ class InfoCenter extends FHC_Controller $data['data'] = $studienordnung->retval[0]->data; } - $this->load->view('system/infocenter/studiengangZgvInfo.php', - $data - ); + $this->load->view('system/infocenter/studiengangZgvInfo.php', $data); } /** @@ -721,6 +726,18 @@ class InfoCenter extends FHC_Controller ); } + /** + * Wrapper for setNavigationMenu, returns JSON message + */ + public function setNavigationMenuArrayJson() + { + $this->setNavigationMenuArray(); + + $this->output + ->set_content_type('application/json') + ->set_output(json_encode(success('success'))); + } + private function _fillFilters($filters, &$tofill) { foreach ($filters as $filterId => $description) diff --git a/application/core/FHC_Controller.php b/application/core/FHC_Controller.php index b63978f22..7417a4ca6 100644 --- a/application/core/FHC_Controller.php +++ b/application/core/FHC_Controller.php @@ -28,7 +28,7 @@ class FHC_Controller extends CI_Controller * NOTE: The library is loaded with the alias 'p', so must me used with this alias in the rest of the code. * EX: $this->p->t(, ) */ - public function loadPhrases($categories, $language = null) + protected function loadPhrases($categories, $language = null) { $this->load->library('PhrasesLib', array($categories, $language), 'p'); } diff --git a/application/libraries/PhrasesLib.php b/application/libraries/PhrasesLib.php index 1194e769c..e50fc4d22 100644 --- a/application/libraries/PhrasesLib.php +++ b/application/libraries/PhrasesLib.php @@ -14,6 +14,8 @@ class PhrasesLib { $this->_ci =& get_instance(); + $this->_phrases = null; // set the property _phrases as null by default + // CI parser $this->_ci->load->library('parser'); @@ -78,7 +80,6 @@ class PhrasesLib return $this->_ci->PhraseModel->update($phrase_id, $data); } - /** * getVorlagetextByVorlage() - will load tbl_vorlagestudiengang for a spezific Template. */ @@ -179,91 +180,60 @@ class PhrasesLib } /** - * + * Retrives a phrases from the the property _phrases with the given parameters + * It also replace parameters inside the phrase if they are provided + * @param string $category Category name which is used to categorize the phrase. + * @param string $phrase Phrase name. + * @param array $parameters Array of String var(s) to be set into phrases' placeholder values (order matters). + * @return string Phrase text */ public function t($category, $phrase, $parameters = array(), $orgeinheit_kurzbz = null, $orgform_kurzbz = null) { - if (isset($this->_phrases) && is_array($this->_phrases)) + // If the property _phrases is populated + if (is_array($this->_phrases)) { + // Loops through the _phrases property for ($i = 0; $i < count($this->_phrases); $i++) { - - $_phrase = $this->_phrases[$i]; - + $_phrase = $this->_phrases[$i]; // single phrase + + // If the single phrase match the given parameters and is not an empty string if ($_phrase->category == $category && $_phrase->phrase == $phrase && $_phrase->orgeinheit_kurzbz == $orgeinheit_kurzbz - && $_phrase->orgform_kurzbz== $orgform_kurzbz - && (!empty($_phrase->text))) - { - if ($parameters == null) - $parameters = array(); - - return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); - } - } - - //fallback 1: if phrase not found in phrases-array, try with default language - $default_language = DEFAULT_LANGUAGE; - $categories = $this->_ci->PhraseModel->getCategories(); - - if (hasData($categories)) - { - $categories = $categories->retval; - foreach($categories as $cat) - $all_categories[] = $cat->category; - } - - $phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($all_categories, $default_language); - - if (hasData($phrases)) - { - $default_phrases = $phrases->retval; - } - - if (isset($default_phrases) && is_array($default_phrases)) - { - for ($i = 0; $i < count($default_phrases); $i++) + && $_phrase->orgform_kurzbz == $orgform_kurzbz + && (!empty(trim($_phrase->text)))) { - $_phrase = $default_phrases[$i]; -// var_dump($_phrase); - -// echo $phrase . "
"; -// echo $_phrase->phrase . "

"; + if (!is_array($parameters)) $parameters = array(); // if params is not an array - if ($_phrase->category == $category - && $_phrase->phrase == $phrase - && $_phrase->orgeinheit_kurzbz == $orgeinheit_kurzbz - && $_phrase->orgform_kurzbz== $orgform_kurzbz) - { - if ($parameters == null) - $parameters = array(); - return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); - } + return $this->_ci->parser->parse_string($_phrase->text, $parameters, true); // parsing } } - - //fallback 2: if phrase not found at all, return phrasename - $phrase = '<< PHRASE ' . $phrase . ' >>'; - return $this->_ci->parser->parse_string($phrase, $parameters, true); - } + } + + // If a valid phrase is not found + return '<< PHRASE '.$phrase.' >>'; } + // ----------------------------------------------------------------------------------------------------------------- // Private methods /** * Extends the functionalities of the constructor of this class * This is a workaround to use more parameters in the construct since PHP doesn't support many constructors - * The new accepted parameters are: - * - categories: could be a string or an array of strings. These are the categories used to load phrases - * - language: optional parameter must be a string. It's used to load phrases + * @param (array) $params Array of categories and (optional) language. + * categories: + * - could be a string or an array of strings. These are the categories used to load phrases + * - could be an array of categories, and for each category there is an array of phrases + * language: optional parameter must be a string. It's used to load phrases */ private function _extend_construct($params) { // Checks if the $params is an array with at least one element if (is_array($params) && count($params) > 0) { - $parameters = $params[0]; // temporary variable + $parameters = $params[0]; // temporary variable + $isIndexArray = false; //flag for indexed array // If there are parameters if (is_array($parameters) && count($parameters) > 0) @@ -287,15 +257,103 @@ class PhrasesLib $language = $this->_ci->PersonModel->getLanguage(getAuthUID()); } - // Loads phrases - $phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language); - - // If there are phrases loaded then store them in the property _phrases - if (hasData($phrases)) - { - $this->_phrases = $phrases->retval; - } + $this->_setPhrases($categories, $language); } } } + + /** + * Retrieves phrases in the users language. + * If a phrase is not set in the users language it will be retrieved in the default language. + * Stores phrases-array in property $_phrases. + * @param array $categories Could be an: + * - indexed array: string or an array of strings. These are the categories used to load phrases. + * - associative array: of categories, and for each category there is an array of phrases. + * @param string User's language or default language. + */ + private function _setPhrases($categories, $language) + { + $phrases = null; + // Checks if categories is associative or indexed array + if (ctype_digit(implode('', array_keys($categories)))) + { + // is indexed array -> Loads phrases + $isIndexArray = true; + $phrases = $this->_ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language); + } + else + { + // is assoc array -> Loads specific phrasentexte by category and phrases + $isIndexArray = false; + $phrases = $this->_ci->PhraseModel + ->getPhrasesByCategoryAndPhrasesAndLanguage($categories, $language); + } + + // If language is not default language and phrasentext is null -> fallback to default language + if ($language != DEFAULT_LANGUAGE) + { + // get array with phrasentexte in the default language + $defaultPhrases = null; + if ($isIndexArray) + { + $defaultPhrases = $this->_ci->PhraseModel + ->getPhrasesByCategoryAndLanguage($categories, DEFAULT_LANGUAGE); + } + else + { + $defaultPhrases = $this->_ci->PhraseModel + ->getPhrasesByCategoryAndPhrasesAndLanguage($categories, DEFAULT_LANGUAGE); + } + + // combine array with phrasentexte in users language and in default language + // (default used if phrasentext in users language is null or not set) + if (hasData($phrases) && hasData($defaultPhrases)) + { + // loop through phrases in default language + foreach ($defaultPhrases->retval as $defaultPhrase) + { + $found = false; // flag for found phrase + + // loop through phrases in users language + foreach ($phrases->retval as $phrase) + { + // if same phrase and category found and text is not null + // use phrase in users language + if ($phrase->phrase == $defaultPhrase->phrase + && $phrase->category == $defaultPhrase->category + && !is_null($phrase->text)) + { + $found = true; + break; + } + } + + // otherwise use phrase in default language + if (!$found) + { + array_push($phrases->retval, $defaultPhrase); + } + } + } + elseif (hasData($defaultPhrases)) + { + $phrases = $defaultPhrases; + } + } + + // If there are phrases loaded then store them in the property _phrases + if (hasData($phrases)) + { + $this->_phrases = $phrases->retval; + } + } + + /** + * Returns the property _phrases JSON encoded + * @return json encoded property _phrases + */ + public function getJSON() + { + return json_encode($this->_phrases); + } } diff --git a/application/models/system/Phrase_model.php b/application/models/system/Phrase_model.php index dff8bebaf..fd121758a 100644 --- a/application/models/system/Phrase_model.php +++ b/application/models/system/Phrase_model.php @@ -79,13 +79,30 @@ class Phrase_model extends DB_Model } /** - * Loads all categories + * Loads phrases using category(s) and language as keys using associative category array + * that contains also phrases for each category */ - public function getCategories() + public function getPhrasesByCategoryAndPhrasesAndLanguage($phrasesParams, $language) { - $query = 'SELECT DISTINCT category - FROM system.tbl_phrase'; + $query = ' + SELECT p.category, p.phrase, pt.orgeinheit_kurzbz, pt.orgform_kurzbz, pt.text + FROM system.tbl_phrase p + INNER JOIN system.tbl_phrasentext pt USING(phrase_id) + WHERE pt.sprache = ? AND '; - return $this->execQuery($query); + $parametersArray = array($language); + + foreach ($phrasesParams as $category => $phrases) + { + $query .= '(category = ? AND phrase IN ?) OR '; + $parametersArray[] = $category; + $parametersArray[] = $phrases; + } + + $query = rtrim($query, ' OR '); + + $query .= ' ORDER BY p.category, p.phrase, pt.orgeinheit_kurzbz DESC, pt.orgform_kurzbz DESC'; + + return $this->execQuery($query, $parametersArray); } -} \ No newline at end of file +} diff --git a/application/views/system/infocenter/infocenter.php b/application/views/system/infocenter/infocenter.php index f33abff79..41431922e 100644 --- a/application/views/system/infocenter/infocenter.php +++ b/application/views/system/infocenter/infocenter.php @@ -5,12 +5,18 @@ 'title' => 'Info Center', 'jquery' => true, 'jqueryui' => true, + 'ajaxlib' => true, 'bootstrap' => true, 'fontawesome' => true, 'sbadmintemplate' => true, 'tablesorter' => true, 'ajaxlib' => true, 'filterwidget' => true, + 'phrases' => array( + 'person' => array('vorname', 'nachname'), + 'global' => array('mailAnXversandt'), + 'ui' => array('bitteEintragWaehlen') + ), 'navigationwidget' => true, 'customCSSs' => 'public/css/sbadmin2/tablesort_bootstrap.css', 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js') @@ -27,12 +33,17 @@
- +
load->view('system/infocenter/infocenterData.php', array('fhc_controller_id' => $fhc_controller_id)); + $this->load->view( + 'system/infocenter/infocenterData.php', + array('fhc_controller_id' => $fhc_controller_id) + ); ?>
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index 700c06569..7ad0e47a0 100755 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -7,6 +7,8 @@ 'bootstrap' => true, 'fontawesome' => true, 'jqueryui' => true, + 'ajaxlib' => true, + 'phraseslib' => true, 'tablesorter' => true, 'tinymce' => true, 'sbadmintemplate' => true, @@ -22,8 +24,33 @@ array( 'public/js/bootstrapper.js', 'public/js/tablesort/tablesort.js', - 'public/js/infocenter/infocenterDetails.js') + 'public/js/infocenter/infocenterDetails.js' + ), + 'phrases' => + array( + 'infocenter' => + array( + 'notizHinzufuegen', + 'notizAendern', + 'bewerberParken', + 'bewerberAusparken', + 'nichtsZumAusparken', + 'fehlerBeimAusparken', + 'fehlerBeimParken', + 'bewerberGeparktBis' + ), + 'ui' => + array( + 'gespeichert', + 'fehlerBeimSpeichern' + ), + 'global' => + array( + 'bis', + 'zeilen' + ) ) + ) ); ?> @@ -42,14 +69,16 @@
- p->t('global', 'wirdBearbeitetVon') . ':' ?> p->t('global', 'wirdBearbeitetVon') . ': '; echo $lockedby; - ?> -    -  p->t('ui', 'freigeben')) ?> + if (!isset($show_lock_link) || $show_lock_link === true): ?> +    + +  p->t('ui', 'freigeben')) ?> + +
@@ -59,7 +88,9 @@
-

p->t('global','stammdaten')) ?>

+
+

p->t('global', 'stammdaten')) ?>

+
load->view('system/infocenter/stammdaten.php'); ?> load->view('system/infocenter/anmerkungenZurBewerbung.php'); ?> @@ -73,7 +104,9 @@
-

p->t('infocenter','dokumentenpruefung')) ?>

+
+

p->t('infocenter', 'dokumentenpruefung')) ?>

+
load->view('system/infocenter/dokpruefung.php'); ?>
@@ -87,7 +120,8 @@
-

p->t('infocenter', 'zgv') . ' - ' . ucfirst($this->p->t('lehre','pruefung'))?>

+

p->t('infocenter', 'zgv'). ' - '. + ucfirst($this->p->t('lehre', 'pruefung'))?>

load->view('system/infocenter/zgvpruefungen.php'); ?> @@ -102,7 +136,7 @@
-

p->t('global','nachrichten')) ?>

+

p->t('global', 'nachrichten')) ?>

@@ -121,7 +155,8 @@
-

p->t('global','notizen')) . ' & ' . ucfirst($this->p->t('global','aktivitaeten')) ?>

+

p->t('global', 'notizen')). ' & '. + ucfirst($this->p->t('global', 'aktivitaeten')) ?>

diff --git a/application/views/system/infocenter/infocenterFreigegeben.php b/application/views/system/infocenter/infocenterFreigegeben.php index 2e31b5f56..bf3b34d65 100755 --- a/application/views/system/infocenter/infocenterFreigegeben.php +++ b/application/views/system/infocenter/infocenterFreigegeben.php @@ -172,7 +172,7 @@ 'formatRow' => function($datasetRaw) { $datasetRaw->{'Details'} = sprintf( - 'Details', + 'Details', site_url('system/infocenter/InfoCenter/showDetails'), $datasetRaw->{'PersonId'}, (isset($_GET['fhc_controller_id'])?$_GET['fhc_controller_id']:'') diff --git a/application/views/system/infocenter/studiengangZgvInfo.php b/application/views/system/infocenter/studiengangZgvInfo.php index 6242d0db6..813a87889 100644 --- a/application/views/system/infocenter/studiengangZgvInfo.php +++ b/application/views/system/infocenter/studiengangZgvInfo.php @@ -17,13 +17,13 @@ $this->load->view(
- +
- Keine Zugangsvoraussetzungen für den Studiengang definiert - p->t('infocenter', 'keineZugangsvoraussetzungenTxt'); ?> +
-
+
zgvmanation_bez; @@ -220,7 +220,7 @@
@@ -249,7 +249,7 @@ class="d-inline float-right" required> @@ -323,7 +323,7 @@ data-toggle="modal" data-target="#freigabeModal_prestudent_id ?>" data-toggle="tooltip" title=""> - p->t('ui', 'freigabeAnStudiengang') ?> + p->t('ui', 'freigabeAnStudiengang') ?>
@@ -340,10 +340,10 @@ + p->t('infocenter', 'freigabeBestaetigen') ?>
diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 8b4dc058a..33326cb56 100755 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -11,6 +11,7 @@ $calledMethod = $this->router->method; $title = isset($title) ? $title : null; $customCSSs = isset($customCSSs) ? $customCSSs : null; $customJSs = isset($customJSs) ? $customJSs : null; +$phrases = isset($phrases) ? $phrases : null; // By default set the parameters to false $jquery = isset($jquery) ? $jquery : false; @@ -84,6 +85,25 @@ function _generateJSDataStorageObject($calledPath, $calledMethod) echo $toPrint; } +/** + * Generates global JS-Object to pass phrases to other javascripts + */ +function _generateJSPhrasesStorageObject($phrases) +{ + $ci =& get_instance(); + $ci->load->library('PhrasesLib', array($phrases), 'pj'); + + $toPrint = "\n"; + $toPrint .= ''; + $toPrint .= "\n\n"; + + echo $toPrint; +} + /** * Generates tags for the javascripts you want to include, the parameter could by a string or an array of strings */ @@ -184,6 +204,10 @@ function _generateAddonsJSsInclude($calledFrom) // NOTE: must be called before any other JS include _generateJSDataStorageObject($calledPath, $calledMethod); + // Generates the global object to pass phrases to javascripts + // NOTE: must be called before including the PhrasesLib.js + _generateJSPhrasesStorageObject($phrases); + // JQuery V3 if ($jquery === true) _generateJSsInclude('vendor/components/jquery/jquery.min.js'); @@ -194,9 +218,6 @@ function _generateAddonsJSsInclude($calledFrom) _generateJSsInclude('vendor/components/jqueryui/ui/i18n/datepicker-de.js'); // datepicker german language file } - // AjaxLib JS - if ($ajaxlib === true) _generateJSsInclude('public/js/AjaxLib.js'); - // Bootstrap JS if ($bootstrap === true) _generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js'); @@ -218,6 +239,13 @@ function _generateAddonsJSsInclude($calledFrom) _generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/js/sb-admin-2.min.js'); } + // AjaxLib JS + // NOTE: must be called before including others JS libraries that use it + if ($ajaxlib === true) _generateJSsInclude('public/js/AjaxLib.js'); + + // PhrasesLib JS + if ($phrases != null) _generateJSsInclude('public/js/PhrasesLib.js'); + // FilterWidget JS if($filterwidget === true) _generateJSsInclude('public/js/FilterWidget.js') ; diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php index 8f1c5b4f3..bae5110e9 100644 --- a/application/views/widgets/filter/filter.php +++ b/application/views/widgets/filter/filter.php @@ -1,10 +1,12 @@
+

+
@@ -14,18 +16,21 @@
+

+

+
@@ -36,12 +41,15 @@
+
+
+
diff --git a/application/views/widgets/filter/saveFilter.php b/application/views/widgets/filter/saveFilter.php index 23f8afdc9..f91f56704 100644 --- a/application/views/widgets/filter/saveFilter.php +++ b/application/views/widgets/filter/saveFilter.php @@ -2,14 +2,14 @@
- Filter description: + p->t('global', 'beschreibung')); ?>: - +
diff --git a/application/views/widgets/filter/selectFields.php b/application/views/widgets/filter/selectFields.php index 7124b60e9..644bbf277 100644 --- a/application/views/widgets/filter/selectFields.php +++ b/application/views/widgets/filter/selectFields.php @@ -2,7 +2,7 @@
- Add field: + p->t('filter', 'feldHinzufuegen')); ?>: diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php index a4202e70a..4b98c629c 100644 --- a/application/views/widgets/filter/selectFilters.php +++ b/application/views/widgets/filter/selectFilters.php @@ -4,7 +4,7 @@
- Add filter: + p->t('filter', 'filterHinzufuegen')); ?>: @@ -12,6 +12,6 @@ - +
diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 98fdf4115..9507b0f89 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -738,7 +738,11 @@ if($projekt->getProjekteMitarbeiter($user, true)) "; if ($p->t("dms_link/handbuchZeitaufzeichnung")!='') { - echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; + // An der FHTW wird ins Moodle verlinkt + if (CAMPUS_NAME == 'FH Technikum Wien') + echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; + else + echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; } if ($p->t("dms_link/fiktiveNormalarbeitszeit")!='') { diff --git a/content/fas.xul.php b/content/fas.xul.php index 81969fa7f..9f31ec1c3 100644 --- a/content/fas.xul.php +++ b/content/fas.xul.php @@ -680,12 +680,6 @@ foreach($addon_obj->result as $addon) label = "&menu-dokumente-bescheid_deutsch.label;" command = "menu-dokumente-bescheid_deutsch:command" accesskey = "&menu-dokumente-bescheid_deutsch.accesskey;"/> - loadVariables($user); -//Parameter holen -if (isset($_GET['xml'])) - $xml = $_GET['xml']; -else - die('Fehlerhafte Parameteruebergabe'); -if (isset($_GET['xsl'])) - $xsl = $_GET['xsl']; -else - die('Fehlerhafte Parameteruebergabe'); +$archivdokument = ''; -if(isset($_GET['sign'])) - $sign = true; -else - $sign = false; - -// Studiengang ermitteln dessen Vorlage verwendet werden soll -$xsl_stg_kz = 0; -// Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll -if (isset($_GET['xsl_stg_kz'])) - $xsl_stg_kz = $_GET['xsl_stg_kz']; -else +// Wenn der Parameter archivdokument übergeben wird, werden ein oder mehrere Dokumente aus dem Archiv zu einem PDF zusammengefügt und ausgegeben +// Ansonsten wird ein neues XML-Dokument erstellt +if (isset($_GET['archivdokument'])) { - // Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet - if (isset($_GET['stg_kz'])) - $xsl_stg_kz = $_GET['stg_kz']; - else - { - // Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen - // in dem der 1. Studierende in der Liste ist - if (isset($_GET['uid']) && $_GET['uid']!='') - { - if (strstr($_GET['uid'],';')) - $uids = explode(';',$_GET['uid']); - else - $uids[1] = $_GET['uid']; + $archivdokument = $_GET['archivdokument']; + $allDocs = array(); + $errorText = ''; + + $dokument = new dokument(); + $dokument->loadDokumenttyp($archivdokument); + + $pdf = new pdf(); + + // Temporaeren Ordner fuer die Erstellung der Dokumente generieren + $tmpDir = sys_get_temp_dir() . "/fhc_archivexport_" . uniqid(); + + if (!file_exists($tmpDir)) + mkdir($tmpDir, 0777, true); - $student_obj = new student(); - if ($student_obj->load($uids[1])) + // Studierende für Rechteabfrage laden + if (isset($_GET['uid']) && $_GET['uid'] != '') + { + if (strstr($_GET['uid'],';')) + { + $uids = explode(';',$_GET['uid']); + } + else + $uids[1] = $_GET['uid']; + + $student_obj = new student(); + if ($student_obj->load($uids[1])) + { + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + + if (!$rechte->isBerechtigt('admin', $student_obj->studiengang_kz, 'suid') + && !$rechte->isBerechtigt('assistenz', $student_obj->studiengang_kz, 'suid')) + die('Sie haben keine Berechtigung für diese Studierenden'); + else { - $xsl_stg_kz = $student_obj->studiengang_kz; + // Die jeweils letzte (aktuellste) Akte dieses Typs von jedem Studierenden laden und in eine temporäre Datei schreiben + foreach ($uids AS $value) + { + // Leere Einträge überspringen + if ($value == '') + continue; + + $student_obj = new student($value); + $person_id = $student_obj->person_id; + $akte = new akte(); + $akte->getAkten($person_id, $archivdokument, null, null, true, 'erstelltam DESC'); + + if (isset($akte->result[0])) + { + $filename = ''; + if($akte->result[0]->inhalt != '') + { + $filename = $tmpDir . "/" . uniqid(); + + $fileData = base64_decode($akte->result[0]->inhalt); + file_put_contents($filename, $fileData); + + $allDocs[] = $filename; + } + else + $errorText .= "Das Dokument ".$dokument->bezeichnung." bei ".$student_obj->nachname." ".$student_obj->vorname." (".$value.") ist leer\n"; + } + else + $errorText .= $student_obj->nachname." ".$student_obj->vorname." (".$value.") hat kein Dokument '".$dokument->bezeichnung."' im Archiv\n"; + } + if (count($allDocs) == 0) + { + rmdir($tmpDir); + die('Bei keinem der gewählten Studierenden ist einen Bescheid vorhanden'); + } + + // Textseite mit Errormessages generieren und in PDF umwandeln + if ($errorText != '') + { + $errorfile = $tmpDir . "/" . uniqid() . ".txt"; + file_put_contents($errorfile, $errorText); + + $newnameErrorfile = $tmpDir . "/" . uniqid(); + + $docExport = new dokument_export(); + $docExport->convert($errorfile, $newnameErrorfile, "pdf"); + unlink($errorfile); + + // Konvertiertes File an erste Position im Array hängen + array_unshift($allDocs, $newnameErrorfile); + } + + $finishedPdf = $tmpDir . "/".$archivdokument."_Album.pdf"; + $pdf->merge($allDocs, $finishedPdf); + + foreach ($allDocs as $doc) + unlink($doc); + + $fsize = filesize($finishedPdf); + + if(!$handle = fopen($finishedPdf,'r')) + die('load failed'); + + header('Content-type: application/pdf'); + header('Content-Disposition: attachment; filename="'.$archivdokument.'_Album.pdf"'); + header('Content-Length: '.$fsize); + + while (!feof($handle)) + { + echo fread($handle, 8192); + } + fclose($handle); + + unlink($finishedPdf); + rmdir($tmpDir); } } - elseif (isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='') + else + die('Der/Die Studierenden konnte nicht geladen werden'); + } +} +else +{ + //Parameter holen + if (isset($_GET['xml'])) + $xml = $_GET['xml']; + else + die('Fehlerhafte Parameteruebergabe'); + + if (isset($_GET['xsl'])) + $xsl = $_GET['xsl']; + else + die('Fehlerhafte Parameteruebergabe'); + + if(isset($_GET['sign'])) + $sign = true; + else + $sign = false; + + // Studiengang ermitteln dessen Vorlage verwendet werden soll + $xsl_stg_kz = 0; + // Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll + if (isset($_GET['xsl_stg_kz'])) + $xsl_stg_kz = $_GET['xsl_stg_kz']; + else + { + // Wenn eine Studiengangskennzahl uebergeben wird, wird die Vorlage dieses Studiengangs verwendet + if (isset($_GET['stg_kz'])) + $xsl_stg_kz = $_GET['stg_kz']; + else { - if (strstr($_GET['prestudent_id'],';')) - $prestudent_ids = explode(';',$_GET['prestudent_id']); - else - $prestudent_ids[1] = $_GET['prestudent_id']; - - $prestudent_obj = new prestudent(); - if ($prestudent_obj->load($prestudent_ids[1])) + // Werden UIDs oder Prestudent_IDs uebergeben, wird die Vorlage des Studiengangs genommen + // in dem der 1. Studierende in der Liste ist + if (isset($_GET['uid']) && $_GET['uid']!='') { - $xsl_stg_kz = $prestudent_obj->studiengang_kz; + if (strstr($_GET['uid'],';')) + $uids = explode(';',$_GET['uid']); + else + $uids[1] = $_GET['uid']; + + $student_obj = new student(); + if ($student_obj->load($uids[1])) + { + $xsl_stg_kz = $student_obj->studiengang_kz; + } + } + elseif (isset($_GET['prestudent_id']) && $_GET['prestudent_id']!='') + { + if (strstr($_GET['prestudent_id'],';')) + $prestudent_ids = explode(';',$_GET['prestudent_id']); + else + $prestudent_ids[1] = $_GET['prestudent_id']; + + $prestudent_obj = new prestudent(); + if ($prestudent_obj->load($prestudent_ids[1])) + { + $xsl_stg_kz = $prestudent_obj->studiengang_kz; + } } } } -} -if (isset($_GET['xsl_oe_kurzbz'])) - $xsl_oe_kurzbz = $_GET['xsl_oe_kurzbz']; -else - $xsl_oe_kurzbz = ''; - -//Parameter setzen -$params = 'xmlformat=xml'; - -// GET Parameter die an XML durchgereicht werden -foreach ($_GET as $getkey=>$getvalue) -{ - if (in_array($getkey, - array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id', - 'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis', - 'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort', - 'abrechnungsmonat', 'form') + if (isset($_GET['xsl_oe_kurzbz'])) + $xsl_oe_kurzbz = $_GET['xsl_oe_kurzbz']; + else + $xsl_oe_kurzbz = ''; + + //Parameter setzen + $params = 'xmlformat=xml'; + + // GET Parameter die an XML durchgereicht werden + foreach ($_GET as $getkey=>$getvalue) + { + if (in_array($getkey, + array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id', + 'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis', + 'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort', + 'abrechnungsmonat', 'form') + ) ) - ) - { - $params .= '&'.$getkey.'='.urlencode($getvalue); + { + $params .= '&'.$getkey.'='.urlencode($getvalue); + } } -} - -if (isset($_GET['vertrag_id'])) -{ - foreach($_GET['vertrag_id'] as $id) + + if (isset($_GET['vertrag_id'])) { - $params .= '&vertrag_id[]='.urlencode($id); - } -} -if (isset($_GET['version']) && is_numeric($_GET['version'])) - $version = $_GET['version']; -else - $version = null; - -$output = (isset($_GET['output'])?$_GET['output']:'odt'); - -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -//OE fuer Output ermitteln - -if ($xsl_oe_kurzbz != '') -{ - $oe_kurzbz = $xsl_oe_kurzbz; -} -else -{ - if ($xsl_stg_kz == '') - $xsl_stg_kz = '0'; - $oe = new studiengang(); - $oe->load($xsl_stg_kz); - $oe_kurzbz = $oe->oe_kurzbz; -} - -//Darf der User Dokumente in einem NICHT-PDF-Format exportieren? -if (isset($_GET['output']) && $_GET['output'] != 'pdf') -{ - if (!$rechte->isBerechtigt('system/change_outputformat',$oe_kurzbz)) - { - $output = 'pdf'; + foreach($_GET['vertrag_id'] as $id) + { + $params .= '&vertrag_id[]='.urlencode($id); + } } + if (isset($_GET['version']) && is_numeric($_GET['version'])) + $version = $_GET['version']; else - $output = $_GET['output']; -} -else - $output = 'pdf'; - -$vorlage = new vorlage(); -if(!$vorlage->loadVorlage($xsl)) - die('Vorlage wurde nicht gefunden'); - -//Berechtigung pruefen -if ($xsl == 'AccountInfo') -{ - $isberechtigt = false; - - $uids = explode(';',$_GET['uid']); - foreach ($uids as $uid) - { - //Berechtigung fuer das Drucken des Accountinfoblattes pruefen - $ma = new mitarbeiter(); - if($ma->load($uid)) - { - //Mitarbeiterrechte erforderlich - if ($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid')) - { - $isberechtigt = true; - } - } - - $stud = new student(); - if ($stud->load($uid)) - { - //Rechte pruefen - if ($rechte->isBerechtigt('admin', $stud->studiengang_kz, 'suid') || - $rechte->isBerechtigt('admin', 0, 'suid') || - $rechte->isBerechtigt('assistenz', $stud->studiengang_kz, 'suid') || - $rechte->isBerechtigt('assistenz', 0, 'suid') || - $rechte->isBerechtigt('support', 0, 'suid')) - { - $isberechtigt=true; - } - } - } - - if (!$isberechtigt) - { - echo 'Sie haben keine Berechtigung um dieses AccountInfoBlatt zu drucken'; - exit; - } -} -else -{ - $vorlagestudiengang = new vorlage(); + $version = null; + + $output = (isset($_GET['output'])?$_GET['output']:'odt'); + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + + //OE fuer Output ermitteln + if ($xsl_oe_kurzbz != '') { - $vorlagestudiengang->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version); + $oe_kurzbz = $xsl_oe_kurzbz; } else { if ($xsl_stg_kz == '') $xsl_stg_kz = '0'; - - $vorlagestudiengang->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); + $oe = new studiengang(); + $oe->load($xsl_stg_kz); + $oe_kurzbz = $oe->oe_kurzbz; } - // Wenn Berechtigung direkt beim der Vorlage angegeben ist - if (count($vorlagestudiengang->berechtigung)>0) + + //Darf der User Dokumente in einem NICHT-PDF-Format exportieren? + if (isset($_GET['output']) && $_GET['output'] != 'pdf') { - $allowed = false; - foreach($vorlagestudiengang->berechtigung as $berechtigung_kurzbz) + if (!$rechte->isBerechtigt('system/change_outputformat',$oe_kurzbz)) { - if ($rechte->isBerechtigt($berechtigung_kurzbz)) - $allowed = true; + $output = 'pdf'; } - if (!$allowed) + else + $output = $_GET['output']; + } + else + $output = 'pdf'; + + $vorlage = new vorlage(); + if(!$vorlage->loadVorlage($xsl)) + die('Vorlage wurde nicht gefunden'); + + //Berechtigung pruefen + if ($xsl == 'AccountInfo') + { + $isberechtigt = false; + + $uids = explode(';',$_GET['uid']); + foreach ($uids as $uid) { - echo 'unbekanntes Dokument oder keine Berechtigung'; + //Berechtigung fuer das Drucken des Accountinfoblattes pruefen + $ma = new mitarbeiter(); + if($ma->load($uid)) + { + //Mitarbeiterrechte erforderlich + if ($rechte->isBerechtigt('admin', 0, 'suid') || $rechte->isBerechtigt('mitarbeiter', 0, 'suid')) + { + $isberechtigt = true; + } + } + + $stud = new student(); + if ($stud->load($uid)) + { + //Rechte pruefen + if ($rechte->isBerechtigt('admin', $stud->studiengang_kz, 'suid') || + $rechte->isBerechtigt('admin', 0, 'suid') || + $rechte->isBerechtigt('assistenz', $stud->studiengang_kz, 'suid') || + $rechte->isBerechtigt('assistenz', 0, 'suid') || + $rechte->isBerechtigt('support', 0, 'suid')) + { + $isberechtigt=true; + } + } + } + + if (!$isberechtigt) + { + echo 'Sie haben keine Berechtigung um dieses AccountInfoBlatt zu drucken'; exit; } } else { - echo 'unbekanntes Dokument oder keine Berechtigung'; - exit; - } -} - -//wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen -$nachname = ''; -if (isset($_GET['uid']) && $_GET['uid']!='') -{ - $uid = str_replace(';','',$_GET['uid']); - $benutzer_obj = new benutzer(); - if ($benutzer_obj->load($uid)) - $nachname = '_'.convertProblemChars($benutzer_obj->nachname); - -} -$filename = $xsl.$nachname; - -if ($xsl_oe_kurzbz == '') -{ - if ($xsl_stg_kz == '') - $xsl_stg_kz = '0'; - $stg_obj = new studiengang(); - if (!$stg_obj->load($xsl_stg_kz)) - die($stg_obj->errormsg); - $xsl_oe_kurzbz = $stg_obj->oe_kurzbz; -} - -if($sign === true && $vorlage->signierbar === false) -{ - die('Diese Vorlage darf nicht signiert werden'); -} - -if (!isset($_REQUEST["archive"])) -{ - if (mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) - { - $dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version); - $dokument->addDataURL($xml, $params); - - /** - * Get Filename - * TODO cleanup - */ - if ($vorlage->bezeichnung!='') - $filename = $vorlage->bezeichnung.$nachname; - else - $filename = $vorlage->vorlage_kurzbz.$nachname; - - switch($xsl) + $vorlagestudiengang = new vorlage(); + if ($xsl_oe_kurzbz != '') { - case 'LV_Informationen': - $studiengang = new studiengang($_GET['stg_kz']); - $studiensemester = new studiensemester($_GET['ss']); - $filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz; - break; - case 'Honorarvertrag': - $filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname; - break; - case 'Studienordnung': - $studienordnung = new studienordnung(); - $studienordnung->loadStudienordnung($_GET['studienordnung_id']); - $filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang; - break; + $vorlagestudiengang->getAktuelleVorlage($xsl_oe_kurzbz, $xsl, $version); } - - $dokument->setFilename($filename); - - if ($sign === true) - { - $dokument->sign($user); - } - - if ($dokument->create($output)) - $dokument->output(); else - echo $dokument->errormsg; - - $dokument->close(); - } -} -else -{ - if(!$vorlage->archivierbar) - die('Dieses Dokument ist nicht archivierbar'); - - // Archivieren von Dokumenten - $uid = $_REQUEST["uid"]; - $heute = date('Y-m-d'); - - $student = new student(); - $student->load($uid); - - if (isset($_REQUEST['ss'])) - { - $ss = $_REQUEST["ss"]; - - $prestudent = new prestudent(); - $prestudent->getLastStatus($student->prestudent_id,$ss); - $semester = $prestudent->ausbildungssemester; - - $query = "SELECT - tbl_studiengang.studiengang_kz, tbl_studentlehrverband.semester, tbl_studiengang.typ, - tbl_studiengang.kurzbz, tbl_person.person_id FROM tbl_person, tbl_benutzer, - tbl_studentlehrverband, tbl_studiengang - WHERE - tbl_studentlehrverband.student_uid = tbl_benutzer.uid - AND tbl_benutzer.person_id = tbl_person.person_id - AND tbl_studentlehrverband.studiengang_kz = tbl_studiengang.studiengang_kz - AND tbl_studentlehrverband.student_uid = ".$db->db_add_param($uid)." - AND tbl_studentlehrverband.studiensemester_kurzbz = ".$db->db_add_param($ss); - - if ($result = $db->db_query($query)) { - if ($row = $db->db_fetch_object($result)) + if ($xsl_stg_kz == '') + $xsl_stg_kz = '0'; + + $vorlagestudiengang->getAktuelleVorlage($xsl_stg_kz, $xsl, $version); + } + // Wenn Berechtigung direkt beim der Vorlage angegeben ist + if (count($vorlagestudiengang->berechtigung)>0) + { + $allowed = false; + foreach($vorlagestudiengang->berechtigung as $berechtigung_kurzbz) { - $person_id = $row->person_id; - $titel = $xsl."_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$semester; - $bezeichnung = $xsl." ".strtoupper($row->typ).strtoupper($row->kurzbz)." ".$semester.". Semester"; - $studiengang_kz = $row->studiengang_kz; + if ($rechte->isBerechtigt($berechtigung_kurzbz)) + $allowed = true; } + if (!$allowed) + { + echo 'unbekanntes Dokument oder keine Berechtigung'; + exit; + } + } + else + { + echo 'unbekanntes Dokument oder keine Berechtigung'; + exit; + } + } + + //wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen + $nachname = ''; + if (isset($_GET['uid']) && $_GET['uid']!='') + { + $uid = str_replace(';','',$_GET['uid']); + $benutzer_obj = new benutzer(); + if ($benutzer_obj->load($uid)) + $nachname = '_'.convertProblemChars($benutzer_obj->nachname); + + } + $filename = $xsl.$nachname; + + if ($xsl_oe_kurzbz == '') + { + if ($xsl_stg_kz == '') + $xsl_stg_kz = '0'; + $stg_obj = new studiengang(); + if (!$stg_obj->load($xsl_stg_kz)) + die($stg_obj->errormsg); + $xsl_oe_kurzbz = $stg_obj->oe_kurzbz; + } + + if($sign === true && $vorlage->signierbar === false) + { + die('Diese Vorlage darf nicht signiert werden'); + } + + if (!isset($_REQUEST["archive"])) + { + if (mb_strstr($vorlage->mimetype, 'application/vnd.oasis.opendocument')) + { + $dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version); + $dokument->addDataURL($xml, $params); + + /** + * Get Filename + * TODO cleanup + */ + if ($vorlage->bezeichnung!='') + $filename = $vorlage->bezeichnung.$nachname; else + $filename = $vorlage->vorlage_kurzbz.$nachname; + + switch($xsl) { - die('Student hat keinen Status in diesem Semester'); + case 'LV_Informationen': + $studiengang = new studiengang($_GET['stg_kz']); + $studiensemester = new studiensemester($_GET['ss']); + $filename = $filename.'_'.$studiengang->kurzbzlang.'_'.$studiensemester->studiensemester_kurzbz; + break; + case 'Honorarvertrag': + $filename = $filename.'_'.$benutzer_obj->nachname.'_'.$benutzer_obj->vorname; + break; + case 'Studienordnung': + $studienordnung = new studienordnung(); + $studienordnung->loadStudienordnung($_GET['studienordnung_id']); + $filename = 'Studienordnung-Studienplan-'. sprintf("%'.04d",$studienordnung->studiengang_kz).'-'.$studienordnung->studiengangkurzbzlang; + break; } + + $dokument->setFilename($filename); + + if ($sign === true) + { + $dokument->sign($user); + } + + if ($dokument->create($output)) + $dokument->output(); + else + echo $dokument->errormsg; + + $dokument->close(); } } else { - $studiengang = new studiengang(); - $studiengang->load($student->studiengang_kz); - $studiengang_kz=$student->studiengang_kz; - $person_id = $student->person_id; - $titel = $vorlage->bezeichnung.'_'.$studiengang->kuerzel; - $bezeichnung = $vorlage->bezeichnung.'_'.$studiengang->kuerzel; - } - - if ($rechte->isBerechtigt('admin', $studiengang_kz, 'suid') - || $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid')) - { - $dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version); - $dokument->addDataURL($xml, $params); - - $dokument->setFilename($filename); - - $error = false; - - // Beim Archivieren wird das Dokument immer signiert wenn moeglich - if($vorlage->signierbar) - $sign = true; - - if ($sign === true) + if(!$vorlage->archivierbar) + die('Dieses Dokument ist nicht archivierbar'); + + // Archivieren von Dokumenten + $uid = $_REQUEST["uid"]; + $heute = date('Y-m-d'); + + $student = new student(); + $student->load($uid); + + if (isset($_REQUEST['ss'])) { - $dokument->sign($user); + $ss = $_REQUEST["ss"]; + + $prestudent = new prestudent(); + $prestudent->getLastStatus($student->prestudent_id,$ss); + $semester = $prestudent->ausbildungssemester; + + $query = "SELECT + tbl_studiengang.studiengang_kz, tbl_studentlehrverband.semester, tbl_studiengang.typ, + tbl_studiengang.kurzbz, tbl_person.person_id FROM tbl_person, tbl_benutzer, + tbl_studentlehrverband, tbl_studiengang + WHERE + tbl_studentlehrverband.student_uid = tbl_benutzer.uid + AND tbl_benutzer.person_id = tbl_person.person_id + AND tbl_studentlehrverband.studiengang_kz = tbl_studiengang.studiengang_kz + AND tbl_studentlehrverband.student_uid = ".$db->db_add_param($uid)." + AND tbl_studentlehrverband.studiensemester_kurzbz = ".$db->db_add_param($ss); + + if ($result = $db->db_query($query)) + { + if ($row = $db->db_fetch_object($result)) + { + $person_id = $row->person_id; + $titel = $xsl."_".strtoupper($row->typ).strtoupper($row->kurzbz)."_".$semester; + $bezeichnung = $xsl." ".strtoupper($row->typ).strtoupper($row->kurzbz)." ".$semester.". Semester"; + $studiengang_kz = $row->studiengang_kz; + } + else + { + die('Student hat keinen Status in diesem Semester'); + } + } } - - if ($dokument->create($output)) - $doc = $dokument->output(false); else { - $errormsg = $dokument->errormsg; - $error = true; + $studiengang = new studiengang(); + $studiengang->load($student->studiengang_kz); + $studiengang_kz=$student->studiengang_kz; + $person_id = $student->person_id; + $titel = $vorlage->bezeichnung.'_'.$studiengang->kuerzel; + $bezeichnung = $vorlage->bezeichnung.'_'.$studiengang->kuerzel; } - - $dokument->close(); - - if(!$error) + + if ($rechte->isBerechtigt('admin', $studiengang_kz, 'suid') + || $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid')) { - $hex = base64_encode($doc); - $akte = new akte(); - $akte->person_id = $person_id; - if($vorlage->dokument_kurzbz!='') - $akte->dokument_kurzbz = $vorlage->dokument_kurzbz; - else - $akte->dokument_kurzbz = 'Zeugnis'; - $akte->inhalt = $hex; - $akte->mimetype = 'application/pdf'; - $akte->erstelltam = $heute; - $akte->gedruckt = true; - $akte->titel = $titel.'.pdf'; - $akte->bezeichnung = $bezeichnung; - $akte->updateamum = ''; - $akte->updatevon = ''; - $akte->insertamum = date('Y-m-d H:i:s'); - $akte->insertvon = $user; - $akte->ext_id = ''; - $akte->uid = $uid; - $akte->new = true; - $akte->archiv = true; - $akte->signiert = $sign; - $akte->stud_selfservice = $vorlage->stud_selfservice; - - if (!$akte->save()) + $dokument = new dokument_export($xsl, $xsl_oe_kurzbz, $version); + $dokument->addDataURL($xml, $params); + + $dokument->setFilename($filename); + + $error = false; + + // Beim Archivieren wird das Dokument immer signiert wenn moeglich + if($vorlage->signierbar) + $sign = true; + + if ($sign === true) { - echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg; + $dokument->sign($user); + } + + if ($dokument->create($output)) + $doc = $dokument->output(false); + else + { + $errormsg = $dokument->errormsg; + $error = true; + } + + $dokument->close(); + + if(!$error) + { + $hex = base64_encode($doc); + $akte = new akte(); + $akte->person_id = $person_id; + if($vorlage->dokument_kurzbz!='') + $akte->dokument_kurzbz = $vorlage->dokument_kurzbz; + else + $akte->dokument_kurzbz = 'Zeugnis'; + $akte->inhalt = $hex; + $akte->mimetype = 'application/pdf'; + $akte->erstelltam = $heute; + $akte->gedruckt = true; + $akte->titel = $titel.'.pdf'; + $akte->bezeichnung = $bezeichnung; + $akte->updateamum = ''; + $akte->updatevon = ''; + $akte->insertamum = date('Y-m-d H:i:s'); + $akte->insertvon = $user; + $akte->ext_id = ''; + $akte->uid = $uid; + $akte->new = true; + $akte->archiv = true; + $akte->signiert = $sign; + $akte->stud_selfservice = $vorlage->stud_selfservice; + + if (!$akte->save()) + { + echo 'Erstellen Fehlgeschlagen: '.$akte->errormsg; + return false; + } + else + { + return true; + } + } + else + { + echo $errormsg; return false; } - else - { - return true; - } } else - { - echo $errormsg; - return false; - } + echo 'Keine Berechtigung zum Speichern'; } - else - echo 'Keine Berechtigung zum Speichern'; } ?> diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php index a9de22360..b329ee4d5 100644 --- a/content/student/studentenoverlay.xul.php +++ b/content/student/studentenoverlay.xul.php @@ -75,6 +75,11 @@ else