HOR-3209
Web Entry 2.0 Rest - Languages EP ACCEPTACE CRITERIA 1. The result should include the detailed fields. 2. The result should include the installed languages. 3. User should be logged.
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace ProcessMaker\BusinessModel;
|
||||
|
||||
/**
|
||||
* Test the ProcessMaker\BusinessModel\Language class.
|
||||
*/
|
||||
class LanguageTest extends \WorkflowTestCase
|
||||
{
|
||||
/**
|
||||
* @var Language
|
||||
*/
|
||||
protected $object;
|
||||
private $translationEnv;
|
||||
|
||||
/**
|
||||
* Sets up the unit tests.
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
$this->setupDB();
|
||||
$this->object = new Language;
|
||||
$this->translationEnv = PATH_DATA."META-INF".PATH_SEP."translations.env";
|
||||
file_exists($this->translationEnv) ? unlink($this->translationEnv) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tears down the unit tests.
|
||||
*/
|
||||
protected function tearDown()
|
||||
{
|
||||
$this->dropDB();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test default languages
|
||||
*
|
||||
* @category HOR-3209:1
|
||||
* @covers ProcessMaker\BusinessModel\Language::getLanguageList
|
||||
*/
|
||||
public function testGetLanguageList()
|
||||
{
|
||||
$list = $this->object->getLanguageList();
|
||||
$this->assertCount(1, $list);
|
||||
$this->assertEquals('en', $list[0]['LANG_ID']);
|
||||
$this->assertEquals('English', $list[0]['LANG_NAME']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test installed languages
|
||||
*
|
||||
* @category HOR-3209:2
|
||||
* @covers ProcessMaker\BusinessModel\Language::getLanguageList
|
||||
*/
|
||||
public function testGetLanguageListInstalled()
|
||||
{
|
||||
$this->installLanguage('es', __DIR__.'/processmaker.es.po');
|
||||
$list = $this->object->getLanguageList();
|
||||
$this->assertCount(2, $list);
|
||||
$this->assertEquals('en', $list[0]['LANG_ID']);
|
||||
$this->assertEquals('English', $list[0]['LANG_NAME']);
|
||||
$this->assertEquals('es-ES', $list[1]['LANG_ID']);
|
||||
$this->assertEquals('Spanish (Spain)', $list[1]['LANG_NAME']);
|
||||
$this->uninstallLanguage('es', __DIR__.'/processmaker.es.po');
|
||||
$list2 = $this->object->getLanguageList();
|
||||
$this->assertCount(1, $list2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Install a language to the system.
|
||||
*
|
||||
* @param type $lanId
|
||||
* @param type $filename
|
||||
*/
|
||||
private function installLanguage($lanId, $filename)
|
||||
{
|
||||
copy($filename, PATH_CORE.'content/translations/'.basename($filename));
|
||||
$language = \LanguagePeer::retrieveByPK($lanId);
|
||||
$language->setLanEnabled(1);
|
||||
$language->save();
|
||||
file_exists($this->translationEnv) ? unlink($this->translationEnv) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Uninstall a language from the system.
|
||||
*
|
||||
* @param type $lanId
|
||||
* @param type $filename
|
||||
*/
|
||||
private function uninstallLanguage($lanId, $filename)
|
||||
{
|
||||
unlink(PATH_CORE.'content/translations/'.basename($filename));
|
||||
$language = \LanguagePeer::retrieveByPK($lanId);
|
||||
$language->setLanEnabled(0);
|
||||
$language->save();
|
||||
file_exists($this->translationEnv) ? unlink($this->translationEnv) : false;
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
42
workflow/engine/src/ProcessMaker/BusinessModel/Language.php
Normal file
42
workflow/engine/src/ProcessMaker/BusinessModel/Language.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace ProcessMaker\BusinessModel;
|
||||
|
||||
use Translation;
|
||||
|
||||
/**
|
||||
* Translation class
|
||||
*
|
||||
*/
|
||||
class Language
|
||||
{
|
||||
|
||||
/**
|
||||
* Web Entry 2.0 Rest - Get languages
|
||||
*
|
||||
* @category HOR-3209,PROD-181
|
||||
* @return array
|
||||
*/
|
||||
public function getLanguageList()
|
||||
{
|
||||
$Translations = new Translation();
|
||||
$translationsTable = $Translations->getTranslationEnvironments();
|
||||
|
||||
$availableLangArray = [];
|
||||
|
||||
foreach ($translationsTable as $locale) {
|
||||
$row['LANG_ID'] = $locale['LOCALE'];
|
||||
|
||||
if ($locale['COUNTRY'] != '.') {
|
||||
$row['LANG_NAME'] = $locale['LANGUAGE'].' ('.
|
||||
(ucwords(strtolower($locale['COUNTRY']))).')';
|
||||
} else {
|
||||
$row['LANG_NAME'] = $locale['LANGUAGE'];
|
||||
}
|
||||
|
||||
$availableLangArray [] = $row;
|
||||
}
|
||||
|
||||
return $availableLangArray;
|
||||
}
|
||||
}
|
||||
@@ -52,6 +52,24 @@ class System extends Api
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of the installed languages.
|
||||
*
|
||||
* @category HOR-3209,PROD-181
|
||||
* @return array
|
||||
* @url GET /languages
|
||||
*/
|
||||
public function doGetLanguages()
|
||||
{
|
||||
try {
|
||||
$language = new \ProcessMaker\BusinessModel\Language;
|
||||
$list = $language->getLanguageList();
|
||||
return ["data" => $list];
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user