private static function _createEmptyProject($languageCode, $languageName, $userId) { $website = Website::get(); $projectCode = SemDomTransProjectModel::projectCode($languageCode); $projectName = SemDomTransProjectModel::projectName($languageCode, $languageName); $projectID = ProjectCommands::createProject($projectName, $projectCode, LfProjectModel::SEMDOMTRANS_APP, $userId, $website); $project = new SemDomTransProjectModel($projectID); $project->languageIsoCode = $languageCode; $project->isSourceLanguage = false; $project->semdomVersion = SemDomTransProjectModel::SEMDOM_VERSION; // by default all created projects have English as their source. A future feature would allow creating projects off of other source languages $englishProject = SemDomTransProjectModel::getEnglishProject(); $project->sourceLanguageProjectId->id = $englishProject->id->asString(); return $project->write(); }
/** * * @param string $projectName * @param string $projectCode * @param string $appName * @param array $srProject send receive project data * @return string | boolean - $projectId on success, false if project code is not unique */ public function project_create($projectName, $projectCode, $appName, $srProject = null) { return ProjectCommands::createProject($projectName, $projectCode, $appName, $this->userId, $this->website, $srProject); }
public function testCreateProject_NewSRProject_SRProjectWithLinks() { self::$environ = new LexiconMongoTestEnvironment(); self::$environ->clean(); $user1Id = self::$environ->createUser("user1name", "User1 Name", "*****@*****.**"); $user1 = new UserModel($user1Id); $srProject = array('identifier' => 'srIdentifier', 'name' => 'srName', 'repository' => 'http://public.languagedepot.org', 'role' => 'manager'); $projectId = ProjectCommands::createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE, LexProjectModel::LEXICON_APP, $user1->id->asString(), self::$environ->website, $srProject); $project = new LexProjectModel($projectId); $assetImagePath = $project->getImageFolderPath(); $assetAudioPath = $project->getAudioFolderPath(); $this->assertTrue($project->hasSendReceive()); $this->assertTrue(is_link($assetImagePath)); $this->assertTrue(is_link($assetAudioPath)); $projectWorkPath = $project->getSendReceiveWorkFolder(); FileUtilities::removeFolderAndAllContents($project->getAssetsFolderPath()); FileUtilities::removeFolderAndAllContents($projectWorkPath); }
$changeDatabase = false; // process xml into a php data structure, organized by language $xml = simplexml_load_file($xmlFilePath); $lang = $argv[2]; $version = $argv[3]; $projectCode = "semdom-{$lang}-{$semdomVersion}"; $projectName = "Semdom {$lang} Project"; $appName = LfProjectModel::SEMDOMTRANS_APP; $website = new Website($domain, Website::LANGUAGEFORGE); // if a previous project for that language and semantic domain version exists, DO NOT IMPORT $previousProject = new SemDomTransProjectModel(); $previousProject->readByProperties(array("languageIsoCode" => $lang, "semdomVersion" => $semdomVersion)); if ($previousProject->id->asString() == "") { $sourceProject = new SemDomTransProjectModel(); $sourceProject->readByCode("en"); $projectID = ProjectCommands::createProject($projectName, $projectCode, $appName, $userId, $website); $projectModel = new SemDomTransProjectModel($projectID); $newXmlFilePath = $projectModel->getAssetsFolderPath() . '/' . basename($xmlFilePath); FileUtilities::createAllFolders($projectModel->getAssetsFolderPath()); print "copying {$xmlFilePath} to {$newXmlFilePath}\n"; copy($xmlFilePath, $newXmlFilePath); $projectModel->xmlFilePath = $newXmlFilePath; $projectModel->languageIsoCode = $lang; $projectModel->semdomVersion = $semdomVersion; $projectModel->sourceLanguageProjectId = $sourceProject->id->asString(); $projectModel->write(); $importer = new SemDomXMLImporter($xmlFilePath, $projectModel, false, $isEnglish); $importer->run(); } else { echo "Project exists already" . "\n"; }
$testProjectModel = new ProjectModel($testProjectId); $testProjectModel->projectCode = $constants['testProjectCode']; $testProjectModel->allowInviteAFriend = $constants['testProjectAllowInvites']; $testProjectModel->write(); $otherProjectId = ProjectCommands::createProject($constants['otherProjectName'], $constants['otherProjectCode'], $projectType, $managerUserId, $website); $otherProjectModel = new ProjectModel($otherProjectId); $otherProjectModel->projectCode = $constants['otherProjectCode']; $otherProjectModel->allowInviteAFriend = $constants['otherProjectAllowInvites']; $otherProjectModel->write(); $fourthProjectId = ProjectCommands::createProject($constants['fourthProjectName'], $constants['fourthProjectCode'], $projectType, $managerUserId, $website); $fourthProjectModel = new ProjectModel($fourthProjectId); $fourthProjectModel->projectCode = $constants['fourthProjectCode']; $fourthProjectModel->allowInviteAFriend = $constants['fourthProjectAllowInvites']; $fourthProjectModel->write(); $srProject = array('identifier' => $constants['srIdentifier'], 'name' => $constants['srName'], 'repository' => 'http://public.languagedepot.org', 'role' => 'manager'); $srTestProjectId = ProjectCommands::createProject($constants['srProjectName'], $constants['srProjectCode'], $projectType, $managerUserId, $website, $srProject); ProjectCommands::updateUserRole($testProjectId, $managerUserId, ProjectRoles::MANAGER); ProjectCommands::updateUserRole($testProjectId, $memberUserId, ProjectRoles::CONTRIBUTOR); ProjectCommands::updateUserRole($testProjectId, $resetUserId, ProjectRoles::CONTRIBUTOR); ProjectCommands::updateUserRole($otherProjectId, $adminUserId, ProjectRoles::MANAGER); ProjectCommands::updateUserRole($fourthProjectId, $adminUserId, ProjectRoles::MANAGER); ProjectCommands::updateUserRole($srTestProjectId, $adminUserId, ProjectRoles::MANAGER); if ($site == 'scriptureforge') { $text1 = TextCommands::updateText($testProjectId, array('id' => '', 'title' => $constants['testText1Title'], 'content' => $constants['testText1Content'])); $text2 = TextCommands::updateText($testProjectId, array('id' => '', 'title' => $constants['testText2Title'], 'content' => $constants['testText2Content'])); $question1 = QuestionCommands::updateQuestion($testProjectId, array('id' => '', 'textRef' => $text1, 'title' => $constants['testText1Question1Title'], 'description' => $constants['testText1Question1Content'])); $question2 = QuestionCommands::updateQuestion($testProjectId, array('id' => '', 'textRef' => $text1, 'title' => $constants['testText1Question2Title'], 'description' => $constants['testText1Question2Content'])); $template1 = QuestionTemplateCommands::updateTemplate($testProjectId, array('id' => '', 'title' => 'first template', 'description' => 'not particularly interesting')); $template2 = QuestionTemplateCommands::updateTemplate($testProjectId, array('id' => '', 'title' => 'second template', 'description' => 'not entirely interesting')); $answer1 = QuestionCommands::updateAnswer($testProjectId, $question1, array('id' => '', 'content' => $constants['testText1Question1Answer']), $managerUserId); $answer1Id = array_keys($answer1)[0];
public function testUserCRUD_CRUDOK() { // initial list $result = self::$environ->fixJson(UserCommands::listUsers()); $count = $result['count']; // Create $userId = self::$environ->createUser('someuser', 'SomeUser', '*****@*****.**'); $someUser = new UserModel($userId); $this->assertNotNull($someUser); $this->assertEquals(24, strlen($someUser->id->asString())); // create project ProjectCommands::createProject(SF_TESTPROJECT, SF_TESTPROJECTCODE, 'sfchecks', $someUser->id->asString(), self::$environ->website); // list $result = self::$environ->fixJson(UserCommands::listUsers()); $this->assertEquals($count + 1, $result['count']); // Read $result = self::$environ->fixJson(UserCommands::readUser($someUser->id->asString())); $this->assertNotNull($result['id']); $this->assertEquals('someuser', $result['username']); $this->assertEquals('*****@*****.**', $result['email']); // Update $result['username'] = '******'; $result['email'] = '*****@*****.**'; $id = UserCommands::updateUser($result, self::$environ->website); $this->assertNotNull($id); $this->assertEquals($result['id'], $id); // typeahead $result = self::$environ->fixJson(UserCommands::userTypeaheadList('ome', '', self::$environ->website)); $this->assertTrue($result['count'] > 0); // change password UserCommands::changePassword($id, 'newpassword', $id); // Delete $result = UserCommands::deleteUsers(array($id)); $this->assertTrue($result > 0); }
/** * Creates a semdomtrans project and prefills it (using Google Translate data if appropriate flag is set) * @param string $languageCode * @param string $languageName * @param bool $useGoogleTranslateData * @param string $userId * @param Website $website * @param int $semdomVersion * @return string */ public static function createProject($languageCode, $languageName, $useGoogleTranslateData, $userId, $website, $semdomVersion = SemDomTransProjectModel::SEMDOM_VERSION) { $projectCode = SemDomTransProjectModel::projectCode($languageCode, $semdomVersion); $projectName = SemDomTransProjectModel::projectName($languageCode, $languageName, $semdomVersion); $projectID = ProjectCommands::createProject($projectName, $projectCode, LfProjectModel::SEMDOMTRANS_APP, $userId, $website); $project = new SemDomTransProjectModel($projectID); $project->languageIsoCode = $languageCode; $project->isSourceLanguage = false; $project->semdomVersion = $semdomVersion; $project->languageName = $languageName; // by default all created projects have English as their source. A future feature would allow creating projects off of other source languages $englishProject = SemDomTransProjectModel::getEnglishProject($semdomVersion); $project->sourceLanguageProjectId->id = $englishProject->id->asString(); // prefill project with semdom items $project->preFillFromSourceLanguage($useGoogleTranslateData); return $project->write(); }