/**
  * @param EntryDistribution $entryDistribution
  * @param int $action enum from DistributionAction
  * @param array $validationErrors
  * @param bool $validateDescription
  * @param bool $validateTags
  * @return array
  */
 public function validateMetadataForSubmission(EntryDistribution $entryDistribution, $action, array $validationErrors, &$validateDescription, &$validateTags)
 {
     $validateDescription = true;
     $validateTags = true;
     if (!class_exists('MetadataProfile')) {
         return $validationErrors;
     }
     $metadataProfileId = $this->getMetadataProfileId();
     if (!$metadataProfileId) {
         return $validationErrors;
     }
     $metadata = MetadataPeer::retrieveByObject($metadataProfileId, Metadata::TYPE_ENTRY, $entryDistribution->getEntryId());
     if (!$metadata) {
         return $validationErrors;
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_DESCRIPTION);
     if ($metadataProfileCategoryField) {
         $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_DESCRIPTION);
         if (count($values)) {
             foreach ($values as $value) {
                 if (!strlen($value)) {
                     continue;
                 }
                 $validateDescription = false;
                 // validate entry description minumum length of 1 character
                 if (strlen($value) < self::ENTRY_DESCRIPTION_MINIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_DESCRIPTION, 'YouTube description is too short');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT);
                     $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MINIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
                 // validate entry description maximum length of 60 characters
                 if (strlen($value) > self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_DESCRIPTION, 'YouTube description is too long');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG);
                     $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
             }
         }
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_TAGS);
     if ($metadataProfileCategoryField) {
         $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_TAGS);
         if (count($values)) {
             foreach ($values as $value) {
                 if (!strlen($value)) {
                     continue;
                 }
                 $validateTags = false;
                 // validate entry tags minumum length of 1 character
                 if (strlen($value) < self::ENTRY_TAGS_MINIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'YouTube tags is too short');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT);
                     $validationError->setValidationErrorParam(self::ENTRY_TAGS_MINIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
                 // validate entry tags maximum length of 60 characters
                 if (strlen($value) > self::ENTRY_TAGS_MAXIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'YouTube tags is too long');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG);
                     $validationError->setValidationErrorParam(self::ENTRY_TAGS_MAXIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
             }
         }
     }
     return $validationErrors;
 }
 /**
  * @param EntryDistribution $entryDistribution
  * @param int $action enum from DistributionAction
  * @param array $validationErrors
  * @param bool $validateDescription
  * @param bool $validateTags
  * @return array
  */
 public function validateMetadataForSubmission(EntryDistribution $entryDistribution, $action, array $validationErrors, &$validateDescription, &$validateTags)
 {
     $validateDescription = true;
     $validateTags = true;
     if (!class_exists('MetadataProfile')) {
         return $validationErrors;
     }
     $metadataProfileId = $this->getMetadataProfileId();
     if (!$metadataProfileId) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_CATEGORY, '');
         return $validationErrors;
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_CATEGORY);
     if (!$metadataProfileCategoryField) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_CATEGORY, '');
         return $validationErrors;
     }
     $metadata = MetadataPeer::retrieveByObject($metadataProfileId, Metadata::TYPE_ENTRY, $entryDistribution->getEntryId());
     if (!$metadata) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_CATEGORY);
         return $validationErrors;
     }
     $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_CATEGORY);
     if (!count($values)) {
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_CATEGORY, '');
     }
     foreach ($values as $value) {
         if (!strlen($value)) {
             $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_CATEGORY, '');
             return $validationErrors;
         }
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_DESCRIPTION);
     if ($metadataProfileCategoryField) {
         $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_DESCRIPTION);
         if (count($values)) {
             foreach ($values as $value) {
                 if (!strlen($value)) {
                     continue;
                 }
                 $validateDescription = false;
                 // validate entry description minumum length of 1 character
                 if (strlen($value) < self::ENTRY_DESCRIPTION_MINIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_DESCRIPTION, 'Dailymotion description is too short');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT);
                     $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MINIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
                 // validate entry description minumum length of 1 character
                 if (strlen($value) > self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_DESCRIPTION, 'Dailymotion description is too long');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG);
                     $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH);
                     $validationErrors[] = $validationError;
                 }
             }
         }
     }
     $metadataProfileCategoryField = MetadataProfileFieldPeer::retrieveByMetadataProfileAndKey($metadataProfileId, self::METADATA_FIELD_TAGS);
     if ($metadataProfileCategoryField) {
         $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_TAGS);
         if (count($values) && strlen(implode('', $values))) {
             $tags = implode(',', $values);
             $tags = explode(',', $tags);
             $tagsStr = implode(' , ', $tags);
             $validateTags = false;
             if (strlen($tagsStr) > self::ENTRY_TAGS_MAXIMUM_LENGTH) {
                 $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'Dailymotion tags is too long');
                 $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG);
                 $validationError->setValidationErrorParam(self::ENTRY_TAGS_MAXIMUM_LENGTH);
                 $validationErrors[] = $validationError;
             }
             if (count($tags) < self::ENTRY_TAGS_MINIMUM_COUNT) {
                 $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'Dailymotion tags must contain at least ' . self::ENTRY_TAGS_MINIMUM_COUNT . ' tags');
                 $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR);
                 $validationError->setValidationErrorParam('Dailymotion tags must contain at least ' . self::ENTRY_TAGS_MINIMUM_COUNT . ' tags');
                 $validationErrors[] = $validationError;
             }
             foreach ($tags as $tag) {
                 if (strlen($tag) < self::ENTRY_TAG_MINIMUM_LENGTH) {
                     $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TAGS, 'Dailymotion tag [$tag] must contain at least ' . self::ENTRY_TAG_MINIMUM_LENGTH . ' characters');
                     $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR);
                     $validationError->setValidationErrorParam('Dailymotion tag [$tag] must contain at least ' . self::ENTRY_TAG_MINIMUM_LENGTH . ' characters');
                     $validationErrors[] = $validationError;
                 }
             }
         }
     }
     return $validationErrors;
 }