/**
  * @param string $userId
  * @return array
  */
 public function getPublicSettings($userId)
 {
     $settings = parent::getPublicSettings($userId);
     $settings['currentUserRole'] = $this->users[$userId]->role;
     $settings['hasSendReceive'] = $this->hasSendReceive();
     return array_merge($settings, LexBaseViewDto::encode($this->id->asString(), $userId));
 }
 public function testEncode_Project_DtoCorrect()
 {
     $environ = new LexiconMongoTestEnvironment();
     $environ->clean();
     $userId = $environ->createUser('User', 'Name', '*****@*****.**');
     $user = new UserProfileModel($userId);
     $user->role = SystemRoles::USER;
     $project = $environ->createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE);
     $projectId = $project->id->asString();
     $project->addUser($userId, ProjectRoles::CONTRIBUTOR);
     $user->addProject($projectId);
     $user->interfaceLanguageCode = 'th';
     $user->write();
     $project->write();
     $dto = LexBaseViewDto::encode($projectId, $userId);
     // test for a few default values
     $this->assertEquals('en', $dto['config']['inputSystems']['en']['tag']);
     $this->assertTrue($dto['config']['tasks']['dbe']['visible']);
     $this->assertEquals('fields', $dto['config']['entry']['type'], 'dto config is not valid');
     $this->assertEquals('Word', $dto['config']['entry']['fields']['lexeme']['label']);
     $this->assertEquals('Word', $dto['config']['entry']['fields']['lexeme']['label']);
     $this->assertEquals('Part of Speech', $dto['config']['entry']['fields']['senses']['fields']['partOfSpeech']['label']);
     $this->assertTrue($dto['config']['roleViews']['contributor']['fields']['lexeme']['show']);
     $this->assertTrue($dto['config']['roleViews']['contributor']['showTasks']['dbe']);
     // todo re-enable this after userLanguageCode feature is mature
     //$this->assertEquals('th', $dto['interfaceConfig']['userLanguageCode']);
     $this->assertEquals('English', $dto['interfaceConfig']['selectLanguages']['options']['en']);
 }
 public function testUpdateConfig_ConfigPersists()
 {
     $e = new LexiconMongoTestEnvironment();
     $e->clean();
     $userId = $e->createUser("User", "Name", "*****@*****.**");
     $user = new UserModel($userId);
     $user->role = SystemRoles::USER;
     $project = $e->createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE);
     $projectId = $project->id->asString();
     $project->addUser($userId, ProjectRoles::CONTRIBUTOR);
     $user->addProject($projectId);
     $user->write();
     $project->write();
     $config = json_decode(json_encode(LexBaseViewDto::encode($projectId, $userId)['config']), true);
     $this->assertTrue($config['tasks']['addMeanings']['visible']);
     $this->assertEqual($config['entry']['fields']['lexeme']['inputSystems'][0], 'th');
     $config['tasks']['addMeanings']['visible'] = false;
     $config['entry']['fields']['lexeme']['inputSystems'] = array('my', 'th');
     LexProjectCommands::updateConfig($projectId, $config);
     $project2 = new LexiconProjectModel($projectId);
     // test for a few default values
     $this->assertEqual($project2->inputSystems['en']->tag, 'en');
     $this->assertTrue($project2->config->tasks['dbe']->visible);
     $this->assertEqual($project2->config->entry->fields['lexeme']->label, 'Word');
     // test for updated values
     $this->assertFalse($project2->config->tasks['addMeanings']->visible);
     $this->assertEqual($project2->config->entry->fields['lexeme']->inputSystems[0], 'my');
     $this->assertEqual($project2->config->entry->fields['lexeme']->inputSystems[1], 'th');
 }
 public function lex_baseViewDto()
 {
     return LexBaseViewDto::encode($this->projectId, $this->userId);
 }