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