public function validateForSubmission(EntryDistribution $entryDistribution, $action) { $validationErrors = parent::validateForSubmission($entryDistribution, $action); $entry = entryPeer::retrieveByPK($entryDistribution->getEntryId()); if (!$entry) { KalturaLog::err("Entry [" . $entryDistribution->getEntryId() . "] not found"); $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'entry', 'entry not found'); return $validationErrors; } // validate entry name minumum length of 1 character if (strlen($entry->getName()) < self::ENTRY_NAME_MINIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, 'Name is too short'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_NAME_MINIMUM_LENGTH); $validationErrors[] = $validationError; } if (strlen($entry->getName()) > self::ENTRY_NAME_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, 'Name is too long'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_NAME_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } $validationErrors = $this->validateMetadataForSubmission($entryDistribution, $action, $validationErrors); if (!strlen($entry->getDescription())) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, entryPeer::DESCRIPTION, 'Description is empty'); } elseif (strlen($entry->getDescription()) < self::ENTRY_DESCRIPTION_MINIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::DESCRIPTION, 'Description is too short'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MINIMUM_LENGTH); $validationErrors[] = $validationError; } elseif (strlen($entry->getDescription()) > self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::DESCRIPTION, 'Description is too long'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } return $validationErrors; }
public function validateForSubmission(EntryDistribution $entryDistribution, $action) { $missingDesc = false; $missingTags = false; $validationErrors = parent::validateForSubmission($entryDistribution, $action); $entry = entryPeer::retrieveByPK($entryDistribution->getEntryId()); if (!$entry) { KalturaLog::err("Entry [" . $entryDistribution->getEntryId() . "] not found"); $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'entry', 'entry not found'); return $validationErrors; } // validate entry name minumum length of 1 character if (strlen($entry->getName()) < self::ENTRY_NAME_MINIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, ''); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_NAME_MINIMUM_LENGTH); $validationErrors[] = $validationError; } if (strlen($entry->getName()) > self::ENTRY_NAME_MAXIMUM_LENGTH) { $description = 'entry name length must be between ' . self::ENTRY_NAME_MINIMUM_LENGTH . ' and ' . self::ENTRY_NAME_MAXIMUM_LENGTH; $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, $description); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_NAME_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } if (strlen($entry->getDescription()) < self::ENTRY_DESC_MINIMUM_LENGTH) { $missingDesc = true; } if (strlen($entry->getTags()) < self::ENTRY_DESC_MINIMUM_LENGTH) { $missingTags = true; } if (!class_exists('MetadataProfile')) { return $validationErrors; } $metadataFields = array(self::METADATA_FIELD_KEYWORDS, self::METADATA_FIELD_DESCRIPTION); $metadataProfileId = $this->getMetadataProfileId(); $metadatas = MetadataPeer::retrieveAllByObject(MetadataObjectType::ENTRY, $entryDistribution->getEntryId()); foreach ($metadataFields as $index => $metadataField) { $values = $this->findMetadataValue($metadatas, $metadataField); if (!count($values)) { switch ($metadataField) { case self::METADATA_FIELD_DESCRIPTION: if ($missingDesc) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, entryPeer::DESCRIPTION, ""); } break; case self::METADATA_FIELD_KEYWORDS: if ($missingTags) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, entryPeer::TAGS, ""); } break; default: $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, $metadataField); } } foreach ($values as $value) { if (!strlen($value)) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, $metadataField, ""); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY); $validationError->setMetadataProfileId($metadataProfileId); $validationErrors[] = $validationError; break; } } } return $validationErrors; }
public function validateForSubmission(EntryDistribution $entryDistribution, $action) { $validationErrors = parent::validateForSubmission($entryDistribution, $action); $entry = entryPeer::retrieveByPK($entryDistribution->getEntryId()); if (!$entry) { KalturaLog::err("Entry [" . $entryDistribution->getEntryId() . "] not found"); $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'entry', 'entry not found'); return $validationErrors; } // validate entry name minumum length of 1 character if (strlen($entry->getName()) < self::ENTRY_NAME_MINIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, ''); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_NAME_MINIMUM_LENGTH); $validationErrors[] = $validationError; } // validate entry name maximum length of 60 characters if (strlen($entry->getName()) > self::ENTRY_NAME_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, ''); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_NAME_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } $validateDescription = true; $validateTags = true; $validationErrors = $this->validateMetadataForSubmission($entryDistribution, $action, $validationErrors, $validateDescription, $validateTags); if ($validateDescription) { if (!strlen($entry->getDescription())) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, entryPeer::DESCRIPTION, 'Description is empty'); } elseif (strlen($entry->getDescription()) < self::ENTRY_DESCRIPTION_MINIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::DESCRIPTION, 'Description is too short'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MINIMUM_LENGTH); $validationErrors[] = $validationError; } elseif (strlen($entry->getDescription()) > self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::DESCRIPTION, 'Description is too log'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } } $tags = $entry->getTags(); if ($validateTags) { if (!strlen($tags)) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, entryPeer::TAGS, 'Tags is empty'); } elseif (strlen($tags) < self::ENTRY_TAGS_MINIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::TAGS, 'Tags is too short'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_TAGS_MINIMUM_LENGTH); $validationErrors[] = $validationError; } elseif (strlen($tags) > self::ENTRY_TAGS_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::TAGS, 'Tags is too log'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_TAGS_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } } elseif (class_exists('MetadataProfile')) { $metadataProfileId = $this->getMetadataProfileId(); $metadata = MetadataPeer::retrieveByObject($metadataProfileId, Metadata::TYPE_ENTRY, $entryDistribution->getEntryId()); if ($metadata) { $tagsArray = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_TAGS); $tags = implode(',', $tagsArray); } } // validate each tag length between 2 and 30 characters $tags = explode(',', $tags); foreach ($tags as &$tag) { $tag = trim($tag); } foreach ($tags as $tag) { if (strlen($tag) < self::ENTRY_EACH_TAG_MANIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Tag', $tag); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_EACH_TAG_MANIMUM_LENGTH); $validationErrors[] = $validationError; } if (strlen($tag) > self::ENTRY_EACH_TAG_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Tag', $tag); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_EACH_TAG_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } } return $validationErrors; }
public function validateForSubmission(EntryDistribution $entryDistribution, $action) { $validationErrors = parent::validateForSubmission($entryDistribution, $action); //TODO: move entry validation to DistributionProfile ? $entry = entryPeer::retrieveByPK($entryDistribution->getEntryId()); if (!$entry) { KalturaLog::err("Entry [" . $entryDistribution->getEntryId() . "] not found"); $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'entry', 'entry not found'); return $validationErrors; } // verify fields markes as required $fieldConfigArray = $this->getFieldConfigArray(); foreach ($fieldConfigArray as $fieldConfig) { if ($fieldConfig->getIsRequired() != DistributionFieldRequiredStatus::NOT_REQUIRED) { $this->addRequiredFieldForValidation($fieldConfig->getFieldName()); } } $allFieldValues = $this->getAllFieldValues($entryDistribution); if (!$allFieldValues || !is_array($allFieldValues)) { KalturaLog::err('Error getting field values from entry distribution id [' . $entryDistribution->getId() . '] profile id [' . $this->getId() . ']'); return $validationErrors; } $validationErrors = array_merge($validationErrors, $this->validateNotEmpty($this->requiredFields, $allFieldValues, $action)); return $validationErrors; }
public function validateForSubmission(EntryDistribution $entryDistribution, $action) { // get validation errors from parent class $validationErrors = parent::validateForSubmission($entryDistribution, $action); // get the entry object $entry = entryPeer::retrieveByPK($entryDistribution->getEntryId()); if (!$entry) { KalturaLog::err("Entry [" . $entryDistribution->getEntryId() . "] not found"); return $validationErrors; } // validate entry name length if (strlen($entry->getName()) < self::ENTRY_NAME_MINIMUM_LENGTH) { $description = 'entry name length must be between ' . self::ENTRY_NAME_MINIMUM_LENGTH . ' and ' . self::ENTRY_NAME_MAXIMUM_LENGTH; $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, $description); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_NAME_MINIMUM_LENGTH); $validationErrors[] = $validationError; } if (strlen($entry->getName()) > self::ENTRY_NAME_MAXIMUM_LENGTH) { $description = 'entry name length must be between ' . self::ENTRY_NAME_MINIMUM_LENGTH . ' and ' . self::ENTRY_NAME_MAXIMUM_LENGTH; $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, $description); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_NAME_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } // get all metadata objects that related to the entry $metadatas = MetadataPeer::retrieveAllByObject(MetadataObjectType::ENTRY, $entryDistribution->getEntryId()); if (!count($metadatas)) { $description = 'field is missing because there is no metadata object defined'; $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_TEST_DATA, $description); } // get all fields from all metadata profile for the testData key $metadataProfileFields = MetadataProfileFieldPeer::retrieveByPartnerAndKey($this->getPartnerId(), self::METADATA_FIELD_TEST_DATA); if (!count($metadataProfileFields)) { $description = 'field is not defined in any of the metadata profiles'; $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_TEST_DATA, $description); } elseif (count($metadatas)) { // get the values for the testData key from all metadata objects $values = $this->findMetadataValue($metadatas, self::METADATA_FIELD_TEST_DATA); if (!count($values)) { $description = 'field is not defined in any of the metadata objects'; $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, self::METADATA_FIELD_TEST_DATA, $description); continue; } else { foreach ($metadatas as $metadata) { $values = $this->findMetadataValue(array($metadata), self::METADATA_FIELD_TEST_DATA); foreach ($values as $value) { // validate that the field is not empty if (!strlen($value)) { $description = 'field is empty'; $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TEST_DATA, $description); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY); $validationError->setMetadataProfileId($metadata->getMetadataProfileId()); $validationErrors[] = $validationError; continue; } // match the value to the required format $matches = null; $isMatched = preg_match('/' . self::METADATA_FIELD_TEST_DATA_FORMAT . '/', $value, $matches); if (!$isMatched) { $description = 'test data must match the required format'; $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TEST_DATA, $description); $validationError->setValidationErrorType(DistributionValidationErrorType::INVALID_FORMAT); $validationError->setValidationErrorParam(self::METADATA_FIELD_TEST_DATA_FORMAT); $validationError->setMetadataProfileId($metadata->getMetadataProfileId()); $validationErrors[] = $validationError; } $formatNumber = (int) $matches[1]; if ($formatNumber < self::METADATA_FIELD_TEST_DATA_MINIMUM_FORMAT || $formatNumber > self::METADATA_FIELD_TEST_DATA_MAXIMUM_FORMAT) { $description = 'format number must be between ' . self::METADATA_FIELD_TEST_DATA_MINIMUM_FORMAT . ' and ' . self::METADATA_FIELD_TEST_DATA_MAXIMUM_FORMAT; $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, self::METADATA_FIELD_TEST_DATA, $description); $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR); $validationError->setMetadataProfileId($metadata->getMetadataProfileId()); $validationErrors[] = $validationError; } } } } } return $validationErrors; }
public function validateForSubmission(EntryDistribution $entryDistribution, $action) { $validationErrors = parent::validateForSubmission($entryDistribution, $action); $entry = entryPeer::retrieveByPK($entryDistribution->getEntryId()); if (!$entry) { KalturaLog::err("Entry [" . $entryDistribution->getEntryId() . "] not found"); $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'entry', 'entry not found'); return $validationErrors; } // validate entry name minumum length of 1 character if (strlen($entry->getName()) < self::ENTRY_NAME_MINIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, 'Name is too short'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_NAME_MINIMUM_LENGTH); $validationErrors[] = $validationError; } if (strlen($entry->getName()) > self::ENTRY_NAME_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::NAME, 'Name is too long'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_NAME_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } $validateDescription = true; $validateTags = true; $validationErrors = $this->validateMetadataForSubmission($entryDistribution, $action, $validationErrors, $validateDescription, $validateTags); if ($validateDescription) { if (!strlen($entry->getDescription())) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, entryPeer::DESCRIPTION, 'Description is empty'); } elseif (strlen($entry->getDescription()) < self::ENTRY_DESCRIPTION_MINIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::DESCRIPTION, 'Description is too short'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_SHORT); $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MINIMUM_LENGTH); $validationErrors[] = $validationError; } elseif (strlen($entry->getDescription()) > self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::DESCRIPTION, 'Description is too long'); $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_TOO_LONG); $validationError->setValidationErrorParam(self::ENTRY_DESCRIPTION_MAXIMUM_LENGTH); $validationErrors[] = $validationError; } } if ($validateTags) { if (!strlen($entry->getTags())) { $validationErrors[] = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, entryPeer::TAGS, 'Tags is empty'); } else { $tags = explode(',', $entry->getTags()); $tagsStr = implode(' , ', $tags); if (strlen($tagsStr) > self::ENTRY_TAGS_MAXIMUM_LENGTH) { $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, entryPeer::TAGS, 'Entry 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, entryPeer::TAGS, 'Entry tags must contain at least ' . self::ENTRY_TAGS_MINIMUM_COUNT . ' tags'); $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR); $validationError->setValidationErrorParam('Entry 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, entryPeer::TAGS, "Entry tag [{$tag}] must contain at least " . self::ENTRY_TAG_MINIMUM_LENGTH . " characters"); $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR); $validationError->setValidationErrorParam("Entry tag [{$tag}] must contain at least " . self::ENTRY_TAG_MINIMUM_LENGTH . " characters"); $validationErrors[] = $validationError; } } } } return $validationErrors; }