/** * Analyze a lexicon project and create Entry guids. * @param LexProjectModelForEntryGuidMigration $project * @param string $testMode * @internal param string $projectId */ private static function analyzeProject($project, $testMode) { $entryModifiedCount = 0; $entryList = new LexAllEntryListModel($project); $entryList->read(); foreach ($entryList->entries as $entryListItem) { $entry = new LexEntryModel($project, $entryListItem['id']); if (!isset($entry->guid) || !$entry->guid || !Guid::isValid($entry->guid)) { $entry->guid = Guid::create(); $entryModifiedCount++; if (!$testMode) { $entry->write(); } } } if (!$testMode) { $project->hasHadEntryGuidMigrated = true; $project->write(); } print "{$entryModifiedCount} of {$entryList->count} entries had guids created.\n"; }
/** * @param LexSense $sense * @param bool $entryModified * @param int $exampleModifiedCount * @param int $pictureModifiedCount */ private static function createSenseGuids($sense, &$entryModified, &$exampleModifiedCount = 0, &$pictureModifiedCount = 0) { $senseModified = false; unset($sense->id); if (!$sense->guid || !Guid::isValid($sense->guid)) { $liftGuid = Guid::extract($sense->liftId); if (Guid::isValid($liftGuid)) { $sense->guid = $liftGuid; } else { $sense->guid = Guid::create(); } $senseModified = true; } if (isset($sense->examples)) { /** @var LexExample $example */ foreach ($sense->examples as $example) { unset($example->id); if (!$example->guid || !Guid::isValid($example->guid)) { $liftGuid = Guid::extract($example->liftId); if (Guid::isValid($liftGuid)) { $example->guid = $liftGuid; } else { $example->guid = Guid::create(); } $exampleModifiedCount++; $senseModified = true; } } } if (isset($sense->pictures)) { /** @var LexPicture $picture */ foreach ($sense->pictures as $picture) { if (!$picture->guid || !Guid::isValid($picture->guid)) { $picture->guid = Guid::create(); $pictureModifiedCount++; $senseModified = true; } } } if ($senseModified) { $entryModified = true; } }