$hasInvariableModel = false; $dbResult = db_execute("select canonical, modelNumber, count(*) as c " . "from Lexem " . "join LexemModel on lexemId = Lexem.id " . "join ModelType on modelType = code " . "where modelType != 'T' " . "and reverse like '{$reverseSuffix}%' " . "group by canonical, modelNumber " . "order by c desc", PDO::FETCH_ASSOC); foreach ($dbResult as $row) { $modelType = $row['canonical']; $modelNumber = $row['modelNumber']; $count = $row['c']; if (!count($models) || $count / $numLabeled >= 0.05) { if ($modelType == 'V' || $modelType == 'VT') { $m = Model::factory('FlexModel')->where('modelType', 'V')->where('number', $modelNumber)->find_one(); $models[] = $m; $models[] = FlexModel::create('VT', $modelNumber, '', $m->exponent); } else { if ($modelType == 'A' || $modelType == 'MF') { $m = Model::factory('FlexModel')->where('modelType', 'A')->where('number', $modelNumber)->find_one(); $models[] = $m; $models[] = FlexModel::create('MF', $modelNumber, '', $m->exponent); } else { $models[] = Model::factory('FlexModel')->where('modelType', $modelType)->where('number', $modelNumber)->find_one(); } } $hasInvariableModel = $hasInvariableModel || $modelType == 'I'; } } // Always add the Invariable model if (!$hasInvariableModel) { $models[] = Model::factory('FlexModel')->where('modelType', 'I')->where('number', '1')->find_one(); } $modelTypes = array(); foreach ($models as $m) { $modelTypes[] = ModelType::get_by_code($m->modelType); }
$lexemModelIds = util_getRequestParameter('lexemModelId'); $cloneButton = util_getRequestParameter('cloneButton'); $errorMessages = array(); if ($cloneButton) { // Disallow duplicate model numbers $m = FlexModel::loadCanonicalByTypeNumber($modelType, $newModelNumber); if ($m) { $errorMessages[] = "Modelul {$modelType}{$newModelNumber} există deja."; } if (!$newModelNumber) { $errorMessages[] = "Numărul modelului nu poate fi vid."; } if (!count($errorMessages)) { // Clone the model $model = Model::factory('FlexModel')->where('modelType', $modelType)->where('number', $modelNumber)->find_one(); $cloneModel = FlexModel::create($modelType, $newModelNumber, "Clonat după {$modelType}{$modelNumber}", $model->exponent); $cloneModel->save(); // Clone the model descriptions $mds = Model::factory('ModelDescription')->where('modelId', $model->id)->order_by_asc('inflectionId')->order_by_asc('variant')->order_by_asc('applOrder')->find_many(); foreach ($mds as $md) { $newMd = Model::factory('ModelDescription')->create(); $newMd->copyFrom($md); $newMd->modelId = $cloneModel->id; $newMd->save(); } // Clone the participle model if ($modelType == 'V') { $pm = ParticipleModel::loadByVerbModel($modelNumber); $clonePm = Model::factory('ParticipleModel')->create(); $clonePm->verbModel = $newModelNumber; $clonePm->adjectiveModel = $pm->adjectiveModel;