Merge remote-tracking branch 'origin/master'

This commit is contained in:
kindlm
2025-03-27 11:55:58 +01:00
6 changed files with 653 additions and 147 deletions
@@ -0,0 +1,80 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Studienjahr extends FHCAPI_Controller
{
/**
* Studienjahr API constructor.
*/
public function __construct()
{
parent::__construct(
array(
'getAll' => self::PERM_LOGGED,
'getNext' => self::PERM_LOGGED
)
);
// Load model StudiensemesterModel
$this->load->model('organisation/studienjahr_model', 'StudienjahrModel');
}
/**
* Get all Studienjahre.
*
* @param null|string $order Sorting order for the Studienjahr, 'asc' or 'desc'. Defaults to 'asc'.
* @param null|string $start Starting Studienjahre with given studienjahr_kurzbz
*/
public function getAll()
{
$order = $this->input->get('order');
$start = $this->input->get('studienjahr_kurzbz');
if (strcasecmp($order, 'DESC') == 0) {
$this->StudienjahrModel->addOrder('studienjahr_kurzbz', 'DESC');
} else {
$this->StudienjahrModel->addOrder('studienjahr_kurzbz', 'ASC');
}
if ($start) {
$result = $this->StudienjahrModel->loadWhere([
'studienjahr_kurzbz >= ' => $start
]);
} else {
$result = $this->StudienjahrModel->load();
}
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess((getData($result) ?: []));
}
public function getNext()
{
$this->StudienjahrModel->addJoin('public.tbl_studiensemester', 'studienjahr_kurzbz');
$this->StudienjahrModel->addOrder('start');
$this->StudienjahrModel->addLimit(1);
$result = $this->StudienjahrModel->loadWhere(['start >' => 'NOW()']);
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess(current(getData($result)));
}
}
@@ -24,7 +24,8 @@ class Studiensemester extends FHCAPI_Controller
parent::__construct(
array(
'getAll' => self::PERM_LOGGED,
'getAktNext' => self::PERM_LOGGED
'getAktNext' => self::PERM_LOGGED,
'getStudienjahrByStudiensemester' => self::PERM_LOGGED
)
);
// Load model StudiensemesterModel
@@ -115,4 +116,40 @@ class Studiensemester extends FHCAPI_Controller
$this->terminateWithSuccess((getData($result) ?: ''));
}
/**
* Get Studienjahr by Studiensemester.
* input param semester: studiensemester_kurzbz
*/
public function getStudienjahrByStudiensemester()
{
$semester = $this->input->get('semester');
$studienjahrObj = null;
if (!is_numeric($semester))
{
$this->StudiensemesterModel->addSelect('studienjahr_kurzbz');
$result = $this->StudiensemesterModel->loadWhere(array('studiensemester_kurzbz =' => $semester));
}
if (hasData($result))
{
$studienjahr = getData($result)[0]->studienjahr_kurzbz;
$startstudienjahr = substr($studienjahr, 0, 4);
$endstudienjahr = substr($studienjahr, 0, 2) . substr($studienjahr, -2);
$studienjahrObj = new StdClass();
$studienjahrObj->studienjahr_kurzbz = $studienjahr;
$studienjahrObj->startstudienjahr = $startstudienjahr;
$studienjahrObj->endstudienjahr= $endstudienjahr;
}
if (isError($result)) {
$this->terminateWithError(getError($result), self::ERROR_TYPE_DB);
}
$this->terminateWithSuccess((getData(success($studienjahrObj))));
}
}
@@ -16,145 +16,21 @@ class Lehrveranstaltung_model extends DB_Model
}
/**
* Get Lehrveranstaltungen by eventQuery string. Use with autocomplete event queries.
* @param $eventQuery String
* @param string $studiensemester_kurzbz Filter by Studiensemester
* @param array $oes Filter by Organisationseinheiten
* @return array
*/
public function getAutocompleteSuggestions($eventQuery, $studiensemester_kurzbz = null, $oes = null)
{
$subQry = $this->_getQryLvsByStudienplan($studiensemester_kurzbz, $oes);
$params = [];
/* filter by input string */
if (is_string($eventQuery)) {
$subQry.= ' AND lv.bezeichnung ILIKE ?';
$params[] = '%' . $eventQuery . '%';
}
$qry = 'SELECT DISTINCT ON (lehrveranstaltung_id) * FROM ('. $subQry. ') AS tmp';
return $this->execQuery($qry, $params);
}
/**
* Get Lehrveranstaltungen with its Stg, OE and OE-type.
* Filter by Studiensemester and Organisationseinheiten if necessary.
* @param $eventQuery String
* @param string $studiensemester_kurzbz Filter by Studiensemester
* @param array $oes Filter by Organisationseinheiten
* @param array $lv_ids Filter by Lehrveranstaltung-Ids
* @return array
*/
public function getLvsByStudienplan($studiensemester_kurzbz = null, $oes = null, $lv_ids = null)
{
$subQry = $this->_getQryLvsByStudienplan($studiensemester_kurzbz, $oes);
$qry = 'SELECT * FROM ('. $subQry. ') AS tmp';
if (isset($lv_ids) && is_array($lv_ids))
{
/* filter by lv_ids */
$implodedLvIds = "'". implode("', '", $lv_ids). "'";
$qry.= ' WHERE lehrveranstaltung_id IN ('. $implodedLvIds. ')';
}
$qry.= ' ORDER BY stg_typ_kurzbz, orgform_kurzbz DESC';
return $this->execQuery($qry);
}
/**
* Get basic query to retrieve Lehrveranstaltungen according to the Orgforms and Ausbildungssemesters actual Studienplan.
*
* @return string
*/
private function _getQryLvsByStudienplan($studiensemester_kurzbz = null, $oes = null, $lehrtyp_kurzbz = 'lv')
{
$qry = '
SELECT
lv.oe_kurzbz AS lv_oe_kurzbz,
CASE
WHEN oe.organisationseinheittyp_kurzbz = \'Kompetenzfeld\' THEN (\'KF \' || oe.bezeichnung)
WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung)
ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung)
END AS lv_oe_bezeichnung,
stplsem.studiensemester_kurzbz,
studienordnung_id,
sto.studiengang_kz,
stpl.studienplan_id,
stplsem.semester,
stpl.orgform_kurzbz,
upper(stg.typ || stg.kurzbz) AS stg_typ_kurzbz,
stg.bezeichnung AS stg_bezeichnung,
stgtyp.bezeichnung AS stg_typ_bezeichnung,
lv.lehrveranstaltung_id,
lv.semester,
lv.bezeichnung AS lv_bezeichnung,
(
-- comma seperated string of all lehreinheitgruppen
SELECT string_agg(bezeichnung, \', \') AS lehreinheitgruppe_bezeichnung
FROM(
-- distinct bezeichnung, as may come multiple times from different lehreinheiten
SELECT DISTINCT ON (studiengang_kz, bezeichnung) studiengang_kz, bezeichnung FROM
(
-- distinct lehreinheitgruppe, as may come multiple times from different lehrform
SELECT DISTINCT ON (legr.lehreinheitgruppe_id) legr.studiengang_kz,
-- get Spezialgruppe or Lehrverbandgruppe
COALESCE(
legr.gruppe_kurzbz,
CONCAT( UPPER(stg1.typ), UPPER(stg1.kurzbz), \'-\', legr.semester, legr.verband, legr.gruppe )
) as bezeichnung
FROM lehre.tbl_lehreinheitgruppe legr
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung lv1 USING (lehrveranstaltung_id)
JOIN public.tbl_studiengang stg1 ON stg1.studiengang_kz = legr.studiengang_kz
WHERE lv1.lehrveranstaltung_id = lv.lehrveranstaltung_id
AND le.studiensemester_kurzbz = stplsem.studiensemester_kurzbz
) AS lehreinheitgruppen
GROUP BY studiengang_kz, bezeichnung
ORDER BY studiengang_kz DESC
) AS uniqueLehreinheitgruppen_bezeichnung
) AS lehreinheitgruppen_bezeichnung
FROM
lehre.tbl_studienplan stpl
JOIN lehre.tbl_studienordnung sto USING (studienordnung_id)
JOIN lehre.tbl_studienplan_semester stplsem USING (studienplan_id)
JOIN lehre.tbl_studienplan_lehrveranstaltung stpllv ON (stpllv.studienplan_id = stpl.studienplan_id AND stpllv.semester = stplsem.semester)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN public.tbl_organisationseinheit oe USING (oe_kurzbz)
JOIN public.tbl_studiengang stg ON stg.studiengang_kz = sto.studiengang_kz
JOIN public.tbl_studiengangstyp stgtyp ON stgtyp.typ = stg.typ
/* filter by lehrtyp_kurzbz, default is lvs only */
WHERE
lehrtyp_kurzbz = '. $this->db->escape($lehrtyp_kurzbz);
if (isset($studiensemester_kurzbz) && is_string($studiensemester_kurzbz))
{
/* filter by studiensemester */
$qry.= ' AND stplsem.studiensemester_kurzbz = '. $this->db->escape($studiensemester_kurzbz);
}
if (isset($oes) && is_array($oes))
{
/* filter by organisationseinheit */
$implodedOes = "'". implode("', '", $oes). "'";
$qry.= ' AND lv.oe_kurzbz IN ('. $implodedOes. ')';
}
return $qry;
}
/**
* Get all Templates and union with all Lehrveranstaltungen of given Studiensemester and Oes, that are assigned to
* a template. This data structure can be used for nested tabulator data tree.
* Get all Templates and its assigned Lehrveranstaltungen of given Studiensemester and Oes.
* Lvs are queried via actual Studienordnung and Studienplan.
*
* @param null|string $studiensemester_kurzbz
* @param null|array $oes
* @param null $lehrveranstaltung_id Queries certain LV only
* @return array|stdClass|null
*/
public function getTemplateLvTree($studiensemester_kurzbz = null, $oes = null){
public function getTemplateLvTree($studiensemester_kurzbz = null, $oes = null, $studienjahr_kurzbz = null){
if (is_string($studiensemester_kurzbz) && is_string($studienjahr_kurzbz))
{
return error('Query not possible for both studiensemester and studienjahr');
}
$params = [];
$qry = '
WITH
@@ -189,6 +65,17 @@ class Lehrveranstaltung_model extends DB_Model
}
if (is_string($studienjahr_kurzbz)) {
/* filter by studiensemester */
$params[] = $studienjahr_kurzbz;
$qry .= '
AND stplsem.studiensemester_kurzbz IN (
SELECT studiensemester_kurzbz
FROM public.tbl_studiensemester
WHERE studienjahr_kurzbz = ?
)';
}
if (is_array($oes))
{
/* filter by organisationseinheit */
@@ -300,7 +187,15 @@ class Lehrveranstaltung_model extends DB_Model
JOIN public.tbl_studiengangstyp stgtyp ON stgtyp.typ = stg.typ
JOIN public.tbl_organisationseinheit oe ON oe.oe_kurzbz = lv.oe_kurzbz
ORDER BY
oe.bezeichnung, lv.semester, lv.bezeichnung
-- Sort by lv.bezeichnung
lv.bezeichnung,
-- Within each group, ensure templates appear first
CASE
WHEN lv.lehrtyp_kurzbz = \'tpl\' THEN 0
ELSE 1
END,
-- Ensure assigend lvs follow their template, grouped by lehrveranstaltung_template_id
COALESCE(lv.lehrveranstaltung_template_id, lv.lehrveranstaltung_id)
';
return $this->execQuery($qry, $params);
@@ -811,6 +706,28 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($qry);
}
/**
* Check if given LV is a template (Quellkurs)
*
* @param $lehrveranstaltung_id
* @return array|stdClass|void
*/
public function checkIsTemplate($lehrveranstaltung_id)
{
$this->addSelect('lehrtyp_kurzbz, lehrveranstaltung_template_id');
$result = $this->load($lehrveranstaltung_id);
if (isError($result))
return error(getError($result));
if (hasData($result))
{
return success(
getData($result)[0]->lehrtyp_kurzbz === 'tpl' &&
getData($result)[0]->lehrveranstaltung_template_id === null
);
}
}
/**
* Get ECTS Summe pro angerechnetes Quereinstiegssemester.
@@ -1,4 +1,5 @@
<?php
class Studienjahr_model extends DB_Model
{
@@ -29,6 +30,22 @@ class Studienjahr_model extends DB_Model
return $this->execQuery($query);
}
public function getNextStudienjahr()
{
$this->addJoin('public.tbl_studiensemester', 'studienjahr_kurzbz');
$this->addOrder('start');
$this->addLimit(1);
return $this->loadWhere(['start >' => 'NOW()']);
}
public function getNextFrom($studienjahr_kurzbz)
{
$this->addLimit(1);
return $this->loadWhere([
'studienjahr_kurzbz >' => $studienjahr_kurzbz
]);
}
/**
* Get the current Studienjahr. During the summer term, continue using the previous Studienjahr.
@@ -38,8 +55,7 @@ class Studienjahr_model extends DB_Model
*/
public function getLastOrAktStudienjahr($days = 60)
{
if (!is_numeric($days))
{
if (!is_numeric($days)) {
$days = 60;
}
@@ -63,8 +79,7 @@ class Studienjahr_model extends DB_Model
*/
public function getAktOrNextStudienjahr($days = 62)
{
if (!is_numeric($days))
{
if (!is_numeric($days)) {
$days = 62;
}
@@ -225,7 +225,7 @@ class Studiensemester_model extends DB_Model
/**
* @param string $student_uid
*
*
* @return StdClass
*/
public function getWhereStudentHasLvs($student_uid)
@@ -238,7 +238,7 @@ class Studiensemester_model extends DB_Model
$this->db->where("v.lehreverzeichnis<>''");
$this->addOrder($this->dbTable . '.start');
return $this->loadWhere(['uid' => $student_uid, 'v.lehre' => true]);
}
@@ -291,6 +291,42 @@ class Studiensemester_model extends DB_Model
return $studienjahrNumber;
}
/**
* Get Studienjahr by Studiensemester.
*
* @param $studiensemester_kurzbz
* @return array|stdClass
*/
public function getStudienjahrByStudiensemester($studiensemester_kurzbz)
{
$studienjahrObj = null;
if (!is_numeric($studiensemester_kurzbz))
{
$this->StudiensemesterModel->addSelect('studienjahr_kurzbz');
$result = $this->StudiensemesterModel->loadWhere(array('studiensemester_kurzbz =' => $studiensemester_kurzbz));
}
if (hasData($result))
{
$studienjahr = getData($result)[0]->studienjahr_kurzbz;
$startstudienjahr = substr($studienjahr, 0, 4);
$endstudienjahr = substr($studienjahr, 0, 2) . substr($studienjahr, -2);
$studienjahrObj = new StdClass();
$studienjahrObj->studienjahr_kurzbz = $studienjahr;
$studienjahrObj->startstudienjahr = $startstudienjahr;
$studienjahrObj->endstudienjahr= $endstudienjahr;
}
if (isError($result)) {
return error(getError($result));
}
return success($studienjahrObj);
}
/**
* Holt Start und Ende des Studiensemester_kurzbz
* @param studiensemester_kurzbz
+426 -5
View File
@@ -35371,18 +35371,18 @@ array(
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'softwareanforderungSubtitle',
'phrase' => 'softwarebereitstellungSubtitle',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Softwareanforderung und Lizenzmanagement für die Lehre',
'text' => 'Softwarebereitstellung für die Lehre',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Software Request and License management for Education',
'text' => 'Software delivery for Education',
'description' => '',
'insertvon' => 'system'
)
@@ -37979,6 +37979,147 @@ array(
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'userAnzahl',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'User-Anzahl',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'User Number',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'userAnzahlAendern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'User-Anzahl ändern',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Change User Number',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'userAnzahlNeu',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'User-Anzahl NEU',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'NEW User Number',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'standardLvTemplate',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Standard LV-Template',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Standard Course Template',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'anforderungNachStandardLvTemplate',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Anforderung nach Standard LV-Template',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Request by Standard Course Template',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swAnforderungUeberAuswahlVonStandardisiertenLvTemplates',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Softwareanforderung über die Auswahl von standardisierten LV-Templates (Quellkurse)",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Software Requirements based on the Selection of Standardized Course-Templates",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swFuerLvAnfordern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Software für LV anfordern",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Request software for courses",
'description' => '',
'insertvon' => 'system'
)
)
),
// Betriebsmittel end
array(
'app' => 'core',
'category' => 'exam',
@@ -38218,7 +38359,7 @@ array(
'insertvon' => 'system'
)
)
),
),
array(
'app' => 'core',
'category' => 'betriebsmittel',
@@ -38238,7 +38379,7 @@ array(
'insertvon' => 'system'
)
)
),
),
array(
'app' => 'core',
'category' => 'betriebsmittel',
@@ -38280,6 +38421,166 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'errorConfigFehlt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Config-Eintrag fehlt",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Missing config entry",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'errorUnbekannteUrl',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Unbekannte URL. Seite bzw. Link kann nicht geöffnet werden.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Unknown URL. Cannot open to site or link",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'zuordnungExistiertBereits',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Zuordnung existiert bereits.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Assignment already exists.",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swFuerLvAendern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Software für LV ändern",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Change Software for courses",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'anforderungNachQuellkurs',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Anforderung nach Quellkurs',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Request by Course-Template',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swAnforderungFuerQuellkurs',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Softwareanforderung für Quellkurse",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Software Requirements for Course-Templates",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swAnforderungFuerEinzelneLvs',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Softwareanforderung für einzelne Lehrveranstaltungen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Software Requirements for individual Courses",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'softwarebereitstellung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Softwarebereitstellung",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Software Delivery",
'description' => '',
'insertvon' => 'system'
)
)
),
// AMPELN PHRASEN -----------------------------------------------------------------------------
array(
'app' => 'core',
@@ -40534,6 +40835,126 @@ array(
)
),
// feature-55614 end
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'swAendern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'SW ändern',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Change SW',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'quellkurs',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Quellkurs',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Source Course',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'softwareAbbestellt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Software wurde abbestellt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Software was cancelled',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'lizenzkategorie',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lizenz-Kategorie',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'License category',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'lizenzkategorieKurzbz',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lizenz-Kategorie Kurzbz',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'License category short',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'softwarebereitstellung',
'category' => 'global',
'phrase' => 'lizenzkategorie',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Lizenz-Kategorie',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'License category',
'description' => '',
'insertvon' => 'system'
)
)
)
);