/**
  * 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;
     }
 }