public function run($userId, $mode = 'test') { $testMode = $mode != 'run'; $message = "Import Other Language Semantic Domain Projects\n\n"; $languages = array('es', 'fa', 'hi', 'id', 'km', 'ko', 'ne', 'pt', 'ru', 'te', 'th', 'ur', 'zh-CN'); //$languages = array('es', 'fa'); $languageData = new LanguageData(); $languageData->read(); foreach ($languages as $lang) { $projectCode = SemDomTransProjectModel::projectCode($lang); $languageName = $languageData->getLanguage($lang)->name; $projectName = SemDomTransProjectModel::projectName($lang, $languageName); $existingProject = new SemDomTransProjectModel(); $existingProject->readByCode($lang); if ($existingProject->id->asString() != '') { $message .= "{$projectName} already exists! Removing...\n"; if (!$testMode) { $existingProject->remove(); } } if (!$testMode) { $projectId = self::_createEmptyProject($lang, $languageName, $userId); $projectModel = ProjectModel::getById($projectId); $xmlFilePath = APPPATH . "resources/languageforge/semdomtrans/LocalizedLists-{$lang}.xml"; $projectModel->importFromFile($xmlFilePath); } $message .= "Finished importing the {$projectName} \n"; } return $message; }
public static function getEnglishProject($semdomVersion = self::SEMDOM_VERSION) { $englishProject = new SemDomTransProjectModel(); $englishProject->readByCode('en', $semdomVersion); if ($englishProject->id->asString() != '') { return $englishProject; } else { throw new \Exception('The semantic domain English project is assumed to already exist at this point...but it does not!'); } }
/** * Determines if project with given langauge code exists * @param string $languageCode * @return boolean */ public static function checkProjectExists($languageCode) { $project = new SemDomTransProjectModel(); $project->readByCode($languageCode); if (Id::isEmpty($project->id)) { return true; } else { return false; } }
// accept language code $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";
public function cleanPreviousProject($languageCode) { $p = new SemDomTransProjectModel(); $p->readByCode($languageCode, self::TESTVERSION); if (!Id::isEmpty($p->id)) { $this->cleanProjectEnvironment($p); } else { // create the project and then clean the project environment $p = new SemDomTransProjectModel(); $p->projectCode = SemDomTransProjectModel::projectCode($languageCode, self::TESTVERSION); $p->write(); $this->cleanProjectEnvironment($p); } $p->remove(); }