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;
     }
 }
예제 #4
0
// 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();
 }