diff --git a/application/config/constants.php b/application/config/constants.php index ac2ecc649..621f58ecb 100644 --- a/application/config/constants.php +++ b/application/config/constants.php @@ -64,7 +64,9 @@ define('LDAP_TOO_MANY_USER_DN', 11); |-------------------------------------------------------------------------- */ define('LANG_SESSION_NAME', 'LANGUAGE'); -define('LANG_SESSION_INDEXES', 'LANGUAGE_INDEXES'); +define('LANG_SESSION_INDEXES', 'INDEXES'); +define('LANG_SESSION_ACTIVE_LANGUAGES', 'ACTIVE_LANGUAGES'); +define('LANG_SESSION_CURRENT_LANGUAGE', 'sprache'); // NOTE: it is not under LANG_SESSION_NAME /* |-------------------------------------------------------------------------- diff --git a/application/controllers/widgets/Language.php b/application/controllers/widgets/Language.php new file mode 100644 index 000000000..8269d3b2d --- /dev/null +++ b/application/controllers/widgets/Language.php @@ -0,0 +1,31 @@ +input->post('language'); + + $this->outputJson(setUserLanguage($language)); + } +} diff --git a/application/core/FHC_Controller.php b/application/core/FHC_Controller.php index 234cf6a6f..93c324b21 100644 --- a/application/core/FHC_Controller.php +++ b/application/core/FHC_Controller.php @@ -21,6 +21,9 @@ abstract class FHC_Controller extends CI_Controller { parent::__construct(); + // NOTE: placed here before performing anything else!!! + $this->_checkHTTPS(); + $this->_controllerId = null; // set _controllerId as null by default // Loads helper message to manage returning messages @@ -129,4 +132,20 @@ abstract class FHC_Controller extends CI_Controller { $this->output->set_content_type('application/json')->set_output(json_encode($mixed)); } + + //------------------------------------------------------------------------------------------------------------------ + // Private methods + + /** + * Checks if the call is performed via web and if HTTPS is enabled and used + * If NOT then an error is raised and the execution is terminated + */ + private function _checkHTTPS() + { + // If NOT called from command line and if the HTTPS protocol is NOT enabled + if (!$this->input->is_cli_request() && !isset($_SERVER['HTTPS'])) + { + show_error('This web site cannot work correctly without the HTTPS protocol enabled'); + } + } } diff --git a/application/helpers/hlp_language_helper.php b/application/helpers/hlp_language_helper.php index 4dfb53c7b..1678a4102 100644 --- a/application/helpers/hlp_language_helper.php +++ b/application/helpers/hlp_language_helper.php @@ -18,28 +18,48 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); /** * Function to retrieve the language of the logged user - * If is not possible to retrieve it, then the default system language is returnd - * If as parameter is given a valid language the it's returned useful to avoid - * to write the same control structures for the language + * If is not possible to retrieve it, then the default system language is returned + * NOTE: If the given parameter is a valid language then it is returned + * It is useful to avoid to write a lot of "if else" structures */ function getUserLanguage($language = null) { + // If the given parameter is a valid language then return it if (!isEmptyString($language)) return $language; - $ci =& get_instance(); // get CI instance - - // Use the default system language, if it's possible retrieves the language for the logged user + // Use the default system language as fallback $language = DEFAULT_LANGUAGE; - // Checks if the user is authenticated to retrieve the users's language - // NOTE: this helper could be called when the user is not logged in the system - // so this is why is checked if the function getAuthUID exists - if (function_exists('getAuthUID')) + + // If the language is present in the session and it is valid + if (isset($_SESSION[LANG_SESSION_CURRENT_LANGUAGE]) && !isEmptyString($_SESSION[LANG_SESSION_CURRENT_LANGUAGE])) { + $language = $_SESSION[LANG_SESSION_CURRENT_LANGUAGE]; // then use it + } + // Otherwise checks if the user is authenticated to retrieve the users's language + // NOTE: this helper could be called when the user is NOT logged in the system + // therefore is checked if the user is logged + elseif (isLogged()) + { + $ci =& get_instance(); // get CI instance + // NOTE: Stores the loaded model with the alias PersonModelLanguage to avoid to overwrite // an already loaded PersonModel used somewhere else $ci->load->model('person/Person_model', 'PersonModelLanguage'); - $language = $ci->PersonModelLanguage->getLanguage(getAuthUID()); + // Retrieves language/s for the logged user + $languagesDB = $ci->PersonModelLanguage->getLanguage(getAuthUID()); + if (hasData($languagesDB)) + { + // Looks for the first valid language + foreach (getData($languagesDB) as $languageDB) + { + if (!isEmptyString($languageDB->sprache)) + { + $language = $languageDB->sprache; + break; + } + } + } } return $language; @@ -62,31 +82,21 @@ function getPhraseByLanguage($phraseLanguagesArray, $language) $langArray = getSessionElement(LANG_SESSION_NAME, LANG_SESSION_INDEXES); if ($langArray == null) // If not already loaded in session { - // Loads the Sprache_model to retrieve the language settings from the DB - // NOTE: Stores the loaded model with the alias SpracheModelLanguage to avoid to overwrite - // an already loaded SpracheModel used somewhere else - $ci->load->model('system/Sprache_model', 'SpracheModelLanguage'); - - // Add order clause by index and select only the sprache column - $ci->SpracheModelLanguage->addOrder('index'); - $ci->SpracheModelLanguage->addSelect('sprache'); - - // Retrieves from public.tbl_sprache - $dbLanguages = $ci->SpracheModelLanguage->load(); + // Retrieves active languages + $dbLanguages = getDBActiveLanguages(); if (hasData($dbLanguages)) // If everything is ok and contains data { $index = 0; // Incremental integer - $languageIndexes = array(); // Array that will contains languages and their indexes + $langArray = array(); // Array that will contains languages and their indexes // Loops through database results foreach (getData($dbLanguages) as $dbLanguage) { - $languageIndexes[$dbLanguage->sprache] = $index++; // set $languageIndexes array elements + $langArray[$dbLanguage->sprache] = $index++; // set $languageIndexes array elements } } - $langArray = $languageIndexes; // copy $languageIndexes to $langArray - // Set session element $_SESSION['LANG']['LANG_INDEXES'] with $languageIndexes + // Set session element $_SESSION['LANG']['LANG_INDEXES'] with $langArray setSessionElement(LANG_SESSION_NAME, LANG_SESSION_INDEXES, $langArray); } @@ -100,3 +110,78 @@ function getPhraseByLanguage($phraseLanguagesArray, $language) return $phrase; } + +/** + * Tries to load active languages from session, if not present then loads them from database and stores them in session + */ +function getActiveLanguages() +{ + $languagesArray = getSessionElement(LANG_SESSION_NAME, LANG_SESSION_ACTIVE_LANGUAGES); + if ($languagesArray == null) + { + $languagesArray = array(); + + // Retrieves from public.tbl_sprache + $dbLanguages = getDBActiveLanguages(); + if (hasData($dbLanguages)) + { + // Loops through database results + foreach (getData($dbLanguages) as $dbLanguage) + { + $languagesArray[$dbLanguage->sprache] = $dbLanguage->bezeichnung; // set $languageIndexes array elements + } + } + + // Set session element $_SESSION['LANG']['LANG_SESSION_ACTIVE_LANGUAGES'] with $languagesArray + setSessionElement(LANG_SESSION_NAME, LANG_SESSION_ACTIVE_LANGUAGES, $languagesArray); + } + + return $languagesArray; +} + +/** + * Loads active languages from database + */ +function getDBActiveLanguages() +{ + $ci =& get_instance(); // get CI instance + + // Loads the Sprache_model to retrieve the language settings from the DB + // NOTE: Stores the loaded model with the alias SpracheModelLanguage to avoid to overwrite + // an already loaded SpracheModel used somewhere else + $ci->load->model('system/Sprache_model', 'SpracheModelLanguage'); + + // Add order clause by index and select only the sprache column + $ci->SpracheModelLanguage->addOrder('index'); + $ci->SpracheModelLanguage->addSelect('sprache, bezeichnung'); + + // Retrieves from public.tbl_sprache + return $ci->SpracheModelLanguage->loadWhere(array('content' => true)); +} + +/** + * Sets the current language to render the GUI in session + */ +function setUserLanguage($language) +{ + $languageValid = false; + + // Checks if the given language is valid (present between active languages) + foreach (getActiveLanguages() as $languageName => $languageTranslation) + { + if ($language == $languageName) + { + $languageValid = true; + break; + } + } + + if ($languageValid) // if the provided language is valid + { + $_SESSION[LANG_SESSION_CURRENT_LANGUAGE] = $language; // stores it in session + + return success('Language successfully changed'); // return success!! + } + + return error('The given language is not valid'); // return an error +} diff --git a/application/libraries/CryptLib.php b/application/libraries/CryptLib.php new file mode 100644 index 000000000..ea19f3e5b --- /dev/null +++ b/application/libraries/CryptLib.php @@ -0,0 +1,28 @@ +setBlockLength(256); + $cipher->setKey($key); + + if ($paddingDisabled === true) $cipher->disablePadding(); + + return $cipher->encrypt($value); + } +} diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index 9c1146632..388f77b0a 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -205,28 +205,12 @@ class Person_model extends DB_Model */ public function getLanguage($uid) { - $language = DEFAULT_LANGUAGE; - + $this->addSelect('public.tbl_person.sprache'); $this->addJoin('public.tbl_benutzer', 'person_id'); + $this->addJoin('public.tbl_sprache', 'sprache'); $this->addOrder('public.tbl_person.updateamum', 'DESC'); $this->addOrder('public.tbl_person.insertvon', 'DESC'); - $persons = $this->loadWhere(array('uid' => $uid)); - - if (hasData($persons)) - { - for ($i = 0; $i < count($persons->retval); $i++) - { - $person = $persons->retval[$i]; - - if (!isEmptyString($person->sprache)) - { - $language = $person->sprache; - break; - } - } - } - - return $language; + return $this->loadWhere(array('uid' => $uid, 'content' => true)); } } diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 3c1327d5f..03ee011b7 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -18,6 +18,7 @@ $addons = isset($addons) ? $addons : false; $ajaxlib = isset($ajaxlib) ? $ajaxlib : false; $bootstrap = isset($bootstrap) ? $bootstrap : false; + $captcha = isset($captcha) ? $captcha : false; $dialoglib = isset($dialoglib) ? $dialoglib : false; $filterwidget = isset($filterwidget) ? $filterwidget : false; $fontawesome = isset($fontawesome) ? $fontawesome : false; @@ -62,12 +63,6 @@ // Font Awesome CSS if ($fontawesome === true) generateCSSsInclude('vendor/components/font-awesome/css/font-awesome.min.css'); - // PivotUI CSS - if ($pivotui === true) - { - generateCSSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.css'); - } - // SB Admin 2 template CSS if ($sbadmintemplate === true) { @@ -75,6 +70,15 @@ generateCSSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/css/sb-admin-2.min.css'); } + // Securimage CSS + if ($captcha === true) generateCSSsInclude('vendor/dapphp/securimage/securimage.css'); + + // PivotUI CSS + if ($pivotui === true) + { + generateCSSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.css'); + } + // Table sorter CSS if ($tablesorter === true) { @@ -107,6 +111,9 @@ // Eventually required CSS generateCSSsInclude($customCSSs); // Eventually required CSS + // CSS End + // -------------------------------------------------------------------------------------------------------- + // -------------------------------------------------------------------------------------------------------- // Javascripts @@ -132,19 +139,32 @@ } // jQuery checkboxes + // NOTE: keep it after jQuery includes if ($jquerycheckboxes === true) { generateJSsInclude('vendor/rmariuzzo/jquery-checkboxes/dist/jquery.checkboxes-1.0.7.min.js'); } - // Bootstrap JS - if ($bootstrap === true) generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js'); - // jQuery treetable // NOTE: keep it after jQuery includes if ($jquerytreetable === true) generateJSsInclude('vendor/ludo/jquery-treetable/jquery.treetable.js'); - // MomentJS + // Bootstrap JS + if ($bootstrap === true) generateJSsInclude('vendor/twbs/bootstrap/dist/js/bootstrap.min.js'); + + // SB Admin 2 template JS + if ($sbadmintemplate === true) + { + generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/vendor/metisMenu/metisMenu.min.js'); + generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/js/sb-admin-2.min.js'); + generateBackwardCompatibleJSMsIe('vendor/afarkas/html5shiv/dist/html5shiv.min.js'); + generateBackwardCompatibleJSMsIe('vendor/scottjehl/Respond/dest/respond.min.js'); + } + + // Securimage JS + if ($captcha === true) generateJSsInclude('vendor/dapphp/securimage/securimage.js'); + + // Moment JS if ($momentjs === true) { generateJSsInclude('vendor/moment/momentjs/min/moment.min.js'); @@ -152,7 +172,7 @@ generateJSsInclude('vendor/moment/momentjs/locale/en-ie.js'); } - // PivotUI CSS + // PivotUI JS if ($pivotui === true) { generateJSsInclude('vendor/nicolaskruchten/pivottable/dist/pivot.min.js'); @@ -176,15 +196,6 @@ // Tinymce JS if ($tinymce === true) generateJSsInclude('vendor/tinymce/tinymce/tinymce.min.js'); - // SB Admin 2 template JS - if ($sbadmintemplate === true) - { - generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/vendor/metisMenu/metisMenu.min.js'); - generateJSsInclude('vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/js/sb-admin-2.min.js'); - generateBackwardCompatibleJSMsIe('vendor/afarkas/html5shiv/dist/html5shiv.min.js'); - generateBackwardCompatibleJSMsIe('vendor/scottjehl/Respond/dest/respond.min.js'); - } - // -------------------------------------------------------------------------------------------------------- // From public folder diff --git a/composer.json b/composer.json index 2dfe2c38b..145927be0 100644 --- a/composer.json +++ b/composer.json @@ -254,6 +254,8 @@ "components/font-awesome": "4.*", "components/angular.js": "1.3.*", + "dapphp/securimage": "3.6.7", + "easyrdf/easyrdf": "0.9.*", "fzaninotto/faker": "1.*", diff --git a/composer.lock b/composer.lock index 9fc4fab12..d707ce776 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "59fc693321fbae0364ec7174a0d0dcb1", - "content-hash": "b377fd50d87a28fdedf6214e4ffb6a6d", + "hash": "d9941245360c86434d18413999bdc812", + "content-hash": "fbeb5d4ef943f6d1d55220cb844d11f1", "packages": [ { "name": "BlackrockDigital/startbootstrap-sb-admin-2", @@ -627,6 +627,55 @@ "description": "jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.", "time": "2016-09-16 05:47:55" }, + { + "name": "dapphp/securimage", + "version": "3.6.7", + "source": { + "type": "git", + "url": "https://github.com/dapphp/securimage.git", + "reference": "1ecb884797c66e01a875c058def46c85aecea45b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dapphp/securimage/zipball/1ecb884797c66e01a875c058def46c85aecea45b", + "reference": "1ecb884797c66e01a875c058def46c85aecea45b", + "shasum": "" + }, + "require": { + "ext-gd": "*", + "php": ">=5.4" + }, + "suggest": { + "ext-pdo": "For database storage support", + "ext-pdo_mysql": "For MySQL database support", + "ext-pdo_sqlite": "For SQLite3 database support" + }, + "type": "library", + "autoload": { + "classmap": [ + "securimage.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Drew Phillips", + "email": "drew@drew-phillips.com" + } + ], + "description": "PHP CAPTCHA Library", + "homepage": "https://www.phpcaptcha.org", + "keywords": [ + "Forms", + "anti-spam", + "captcha", + "security" + ], + "time": "2018-03-09 06:07:41" + }, { "name": "easyrdf/easyrdf", "version": "0.9.1", @@ -1455,16 +1504,16 @@ }, { "name": "tinymce/tinymce", - "version": "4.9.7", + "version": "4.9.8", "source": { "type": "git", "url": "https://github.com/tinymce/tinymce-dist.git", - "reference": "e14935a4ba07beb716ccdb192ee9823dbb4a73d5" + "reference": "912df2bc85015c758e32d1262219f1653bbf9783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/e14935a4ba07beb716ccdb192ee9823dbb4a73d5", - "reference": "e14935a4ba07beb716ccdb192ee9823dbb4a73d5", + "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/912df2bc85015c758e32d1262219f1653bbf9783", + "reference": "912df2bc85015c758e32d1262219f1653bbf9783", "shasum": "" }, "type": "component", @@ -1497,7 +1546,7 @@ "tinymce", "wysiwyg" ], - "time": "2019-12-19 06:05:16" + "time": "2020-01-28 05:03:01" }, { "name": "tomazdragar/SimpleCropper", diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index f73517090..0cc307bf2 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -3449,6 +3449,20 @@ if(!$result = @$db->db_query("SELECT 1 FROM fue.tbl_projekttyp LIMIT 1")) echo '
fue.tbl_projekttyp hinzugefuegt.'; } +// Add new webservice type in system.tbl_webservicetyp +if ($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicetyp WHERE webservicetyp_kurzbz = 'API';")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO system.tbl_webservicetyp(webservicetyp_kurzbz, beschreibung) VALUES('API', 'Cronjob');"; + + if (!$db->db_query($qry)) + echo 'system.tbl_webservicetyp '.$db->db_last_error().'
'; + else + echo ' system.tbl_webservicetyp: Added webservice type "API"
'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 4dbfbebe0..d5f5e47d9 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -3789,7 +3789,7 @@ When on hold, the date is only a reminder.', ), array( 'sprache' => 'English', - 'text' => 'Please enter the old an new password', + 'text' => 'Please enter the old and the new password', 'description' => '', 'insertvon' => 'system' ) @@ -4036,65 +4036,65 @@ When on hold, the date is only a reminder.', ) ), array( - 'app' => 'core', - 'category' => 'global', - 'phrase' => 'lehrauftraegeBestellen', - 'insertvon' => 'system', - 'phrases' => array( - array( - 'sprache' => 'German', - 'text' => 'Lehraufträge bestellen', - 'description' => '', - 'insertvon' => 'system' - ), - array( - 'sprache' => 'English', - 'text' => 'Order lectureships', - 'description' => '', - 'insertvon' => 'system' - ) - ) - ), - array( - 'app' => 'core', - 'category' => 'global', - 'phrase' => 'lehrauftraegeErteilen', - 'insertvon' => 'system', - 'phrases' => array( - array( - 'sprache' => 'German', - 'text' => 'Lehraufträge erteilen', - 'description' => '', - 'insertvon' => 'system' - ), - array( - 'sprache' => 'English', - 'text' => 'Approve lectureships', - 'description' => '', - 'insertvon' => 'system' - ) - ) - ), - array( - 'app' => 'core', - 'category' => 'global', - 'phrase' => 'lehrauftraegeAnnehmen', - 'insertvon' => 'system', - 'phrases' => array( - array( - 'sprache' => 'German', - 'text' => 'Lehraufträge annehmen', - 'description' => '', - 'insertvon' => 'system' - ), - array( - 'sprache' => 'English', - 'text' => 'Accept lectureships', - 'description' => '', - 'insertvon' => 'system' - ) - ) - ), + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'lehrauftraegeBestellen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Lehraufträge bestellen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Order lectureships', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'lehrauftraegeErteilen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Lehraufträge erteilen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Approve lectureships', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'lehrauftraegeAnnehmen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Lehraufträge annehmen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Accept lectureships', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'global', @@ -4114,6 +4114,206 @@ When on hold, the date is only a reminder.', 'insertvon' => 'system' ) ) + ), + array( + 'app' => 'core', + 'category' => 'account', + 'phrase' => 'title', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Account Aktivierung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Account Activation', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'account', + 'phrase' => 'usage', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bitte wählen Sie ein Passwort für Ihren Account.
Das Passwort muss zumindest 8 Zeichen enthalten, davon mindestens 1 Großbuchstabe, 1 Kleinbuchstabe und eine Ziffer.
Das Passwort darf keine Leerzeichen und Umlaute enthalten.
Erlaubte Sonderzeichen sind: -$#[]{}!().,*:;_', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Please choose a password for your account
The password must contain at least 8 characters, of which 1 must be upper case, 1 lower case and 1 a numeral.
The password may not include spaces or umlauts.
The following special characters are allowed: -$#[]{}!().,*:;_', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'account', + 'phrase' => 'username', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Username', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Username', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'account', + 'phrase' => 'code', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Code', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Code', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'captcha', + 'phrase' => 'label', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Tippen Sie die angezeigten
Zeichen in das untere Feld.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Enter the characters in
the field below.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'captcha', + 'phrase' => 'reload', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ich kann das Bild nicht lesen - neu laden', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Reload picture', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'account', + 'phrase' => 'activate', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Abschicken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Activate', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'password', + 'phrase' => 'wrongCaptcha', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Captcha code falsch ', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Captcha code is wrong', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'account', + 'phrase' => 'missingParameters', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bitte geben Sie Benutzername, Code und Passwort ein', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Please enter username, code and password', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'account', + 'phrase' => 'wrongActivationCode', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der angegebene Aktivierungscode ist falsch', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The provided activation code is wrong', + 'description' => '', + 'insertvon' => 'system' + ) + ) ) );