public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $maxLengthFields = array(YouTubeDistributionField::MEDIA_DESCRIPTION => self::MEDIA_DESCRIPTION_MAXIMUM_LENGTH, YouTubeDistributionField::MEDIA_TITLE => self::MEDIA_TITLE_MAXIMUM_LENGTH, YouTubeDistributionField::WEB_METADATA_CUSTOM_ID => self::METADATA_CUSTOM_ID_MAXIMUM_LENGTH, YouTubeDistributionField::MOVIE_METADATA_CUSTOM_ID => self::METADATA_CUSTOM_ID_MAXIMUM_LENGTH, YouTubeDistributionField::TV_METADATA_CUSTOM_ID => self::METADATA_CUSTOM_ID_MAXIMUM_LENGTH, YouTubeDistributionField::TV_METADATA_EPISODE => self::TV_METADATA_EPISODE_MAXIMUM_LENGTH, YouTubeDistributionField::TV_METADATA_EPISODE_TITLE => self::TV_METADATA_EPISODE_TITLE_MAXIMUM_LENGTH, YouTubeDistributionField::TV_METADATA_SEASON => self::TV_METADATA_SEASON_MAXIMUM_LENGTH, YouTubeDistributionField::TV_METADATA_SHOW_TITLE => self::TV_METADATA_SHOW_TITLE_MAXIMUM_LENGTH, YouTubeDistributionField::TV_METADATA_TMS_ID => self::TV_METADATA_TMS_ID_MAXIMUM_LENGTH, YouTubeDistributionField::MOVIE_METADATA_TITLE => self::MOVIE_METADATA_TITLE_MAXIMUM_LENGTH, YouTubeDistributionField::MOVIE_METADATA_TMS_ID => self::MOVIE_METADATA_TMS_ID_MAXIMUM_LENGTH);
     $inListOrNullFields = array(YouTubeDistributionField::MEDIA_RATING => explode(',', self::MEDIA_RATING_VALID_VALUES), YouTubeDistributionField::ALLOW_COMMENTS => explode(',', self::ALLOW_COMMENTS_VALID_VALUES), YouTubeDistributionField::ALLOW_EMBEDDING => explode(',', self::ALLOW_EMBEDDING_VALID_VALUES), YouTubeDistributionField::ALLOW_RATINGS => explode(',', self::ALLOW_RATINGS_VALID_VALUES), YouTubeDistributionField::ALLOW_RESPONSES => explode(',', self::ALLOW_RESPONSES_VALID_VALUES), YouTubeDistributionField::ADVERTISING_INVIDEO => explode(',', self::ADVERTISING_INVIDEO_VALID_VALUES), YouTubeDistributionField::ADVERTISING_ADSENSE_FOR_VIDEO => explode(',', self::ADVERTISING_ADSENSE_FOR_VIDEO_VALUES), YouTubeDistributionField::DISTRIBUTION_RESTRICTION_DISTRIBUTION_RULE => explode(',', self::DISTRIBUTION_RESTRICTION_DISTRIBUTION_RULE_VALUES), YouTubeDistributionField::URGENT_REFERENCE_FILE => explode(',', self::URGENT_REFERENCE_FILE_VALUES), YouTubeDistributionField::KEEP_FINGERPRINT => explode(',', self::KEEP_FINGERPRINT_VALUES));
     $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->validateMaxLength($maxLengthFields, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateInListOrNull($inListOrNullFields, $allFieldValues, $action));
     $fieldName = YouTubeDistributionField::NOTIFICATION_EMAIL;
     $value = $allFieldValues[$fieldName];
     //multiple email support
     $values = explode(' ', $value);
     foreach ($values as $val) {
         if (!is_null($val) && !kString::isEmailString($val)) {
             $errorMsg = $this->getUserFriendlyFieldName($fieldName) . ' value must be an email string [value:' . $val . ']';
             $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, $this->getUserFriendlyFieldName($fieldName));
             $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR);
             $validationError->setValidationErrorParam($errorMsg);
             $validationErrors[] = $validationError;
         }
     }
     //TODO: check if MEDIA_CATEGORY is a valid YouTube category according to YouTube's XML.
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     //validation of flavor format
     $flavorAsset = null;
     $flavorAssets = assetPeer::retrieveByIds(explode(',', $entryDistribution->getFlavorAssetIds()));
     // if we have specific flavor assets for this distribution, grab the first one
     if (count($flavorAssets)) {
         $flavorAsset = reset($flavorAssets);
         $fileExt = $flavorAsset->getFileExt();
         $allowedExts = explode(',', self::FLAVOR_VALID_FORMATS);
         if (!in_array($fileExt, $allowedExts)) {
             KalturaLog::debug('flavor asset id [' . $flavorAsset->getId() . '] does not have a valid extension [' . $fileExt . ']');
             $errorMsg = 'Flavor format must be one of [' . self::FLAVOR_VALID_FORMATS . ']';
             $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA);
             $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR);
             $validationError->setValidationErrorParam($errorMsg);
             $validationError->setDescription($errorMsg);
             $validationErrors[] = $validationError;
         }
     }
     $inListOrNullFields = array(IdeticDistributionField::GENRE => explode(',', self::GENRE_VALID_VALUES));
     $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->validateInListOrNull($inListOrNullFields, $allFieldValues, $action));
     //validating Slot is a whole number
     $validationErrors = array_merge($validationErrors, $this->validateIsWholeNumber(IdeticDistributionField::SLOT, $allFieldValues, $action));
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $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;
     }
     $this->validateReferenceId($entryDistribution, $action, $validationErrors);
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $allFieldValues = $this->getAllFieldValues($entryDistribution);
     if (!is_array($allFieldValues)) {
         $allFieldValues = array();
     }
     $validationErrors = array_merge($validationErrors, $this->validateMaxLength($this->maxLengthValidation, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateInListOrNull($this->inListOrNullValidation, $allFieldValues, $action));
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $maxLengthFields = array(YouTubeApiDistributionField::MEDIA_TITLE => self::MEDIA_TITLE_MAXIMUM_LENGTH, YouTubeApiDistributionField::MEDIA_DESCRIPTION => self::MEDIA_DESCRIPTION_MAXIMUM_LENGTH, YouTubeApiDistributionField::MEDIA_KEYWORDS => self::MEDIA_KEYWORDS_MAXIMUM_LENGTH);
     $inListOrNullFields = array(YouTubeApiDistributionField::ALLOW_COMMENTS => explode(',', self::ALLOW_COMMENTS_VALID_VALUES), YouTubeApiDistributionField::ALLOW_EMBEDDING => explode(',', self::ALLOW_EMBEDDING_VALID_VALUES), YouTubeApiDistributionField::ALLOW_RATINGS => explode(',', self::ALLOW_RATINGS_VALID_VALUES), YouTubeApiDistributionField::ALLOW_RESPONSES => explode(',', self::ALLOW_RESPONSES_VALID_VALUES));
     $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->validateMaxLength($maxLengthFields, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateInListOrNull($inListOrNullFields, $allFieldValues, $action));
     $videoTagsValue = isset($allFieldValues[YouTubeApiDistributionField::MEDIA_KEYWORDS]) ? $allFieldValues[YouTubeApiDistributionField::MEDIA_KEYWORDS] : null;
     $validationErrors = array_merge($validationErrors, $this->validateTags($videoTagsValue, $action));
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $maxLengthFields = array(DailymotionDistributionField::VIDEO_TITLE => self::VIDEO_TITLE_MAXIMUM_LENGTH, DailymotionDistributionField::VIDEO_DESCRIPTION => self::VIDEO_DESCRIPTION_MAXIMUM_LENGTH);
     $inListOrNullFields = array(DailymotionDistributionField::VIDEO_TYPE => explode(',', self::VIDEO_TYPE_ALLOWED_VALUES), DailymotionDistributionField::VIDEO_GEO_BLOCKING_OPERATION => explode(',', self::VIDEO_GEO_BLOCKING_OPERATION_ALLOWED_VALUES));
     $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->validateMaxLength($maxLengthFields, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateInListOrNull($inListOrNullFields, $allFieldValues, $action));
     $videoTagsValue = isset($allFieldValues[DailymotionDistributionField::VIDEO_TAGS]) ? $allFieldValues[DailymotionDistributionField::VIDEO_TAGS] : null;
     $validationErrors = array_merge($validationErrors, $this->validateTags($videoTagsValue, $action));
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $profile = DistributionProfilePeer::retrieveByPK($entryDistribution->getDistributionProfileId());
     if (!$profile) {
         KalturaLog::err("Distribution  profile [" . $entryDistribution->getDistributionProfileId() . "] not found");
         $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'profile', 'distribution profile not found');
         return $validationErrors;
     }
     if (strlen($profile->getFeedTitle()) <= 0) {
         $newError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Feed title');
         $newError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY);
         $validationErrors[] = $newError;
     }
     if (strlen($profile->getFeedLink()) <= 0) {
         $newError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Feed link');
         $newError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY);
         $validationErrors[] = $newError;
     }
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $maxLengthFields = array(YahooDistributionField::VIDEO_DESCRIPTION => self::VIDEO_DESCRIPTION_MAXIMUM_LENGTH, YahooDistributionField::VIDEO_FEEDITEM_ID => self::FEED_ITEM_ID_MAXIMUM_LENGTH);
     $inListOrNullFields = array();
     $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->validateMaxLength($maxLengthFields, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateInListOrNull($inListOrNullFields, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateTwoThumbnailsExist($entryDistribution, $action));
     //$validationErrors = array_merge($validationErrors, $this->validateVideoStreamFormatAndBitrate($entryDistribution, $action));
     //$validationErrors = array_merge($validationErrors, $this->validateThumbnailsDimensions($entryDistribution, $action));
     //TODO: validate only video stream formats and remove bitrate and thumb dimensions
     $emailField = YahooDistributionField::CONTACT_EMAIL;
     $emailValue = $allFieldValues[$emailField];
     if ($emailValue && !kString::isEmailString($emailValue)) {
         $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, $this->getUserFriendlyFieldName($emailField));
         $validationError->setValidationErrorType(DistributionValidationErrorType::INVALID_FORMAT);
         $validationError->setValidationErrorParam('email');
         $validationError->setDescription('Not an email string');
         $validationErrors[] = $validationError;
     }
     //TODO: validate that if contact_email is given, contact_telephone is given
     $telephoneField = YahooDistributionField::CONTACT_TELEPHONE;
     $telephoneValue = $allFieldValues[$telephoneField];
     //if Email is given than telephone must be given too
     if ($emailValue && !$telephoneValue) {
         $validationError = $this->createValidationError($action, DistributionErrorType::MISSING_METADATA, $this->getUserFriendlyFieldName($telephoneField));
         $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR);
         $validationError->setValidationErrorParam('Telephone is missing');
         $validationError->setDescription('Telephone is required');
         $validationErrors[] = $validationError;
     }
     return $validationErrors;
 }
    protected function getDefaultFieldConfigArray()
    {
        $fieldConfigArray = parent::getDefaultFieldConfigArray();
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::PROVIDER_ID);
        $fieldConfig->setUserFriendlyFieldName('Entry id');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(entryId)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::CSID);
        $fieldConfig->setUserFriendlyFieldName('CSID');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/csid" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::SOURCE);
        $fieldConfig->setUserFriendlyFieldName('Source');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/source" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::SOURCE_FRIENDLY_NAME);
        $fieldConfig->setUserFriendlyFieldName('Source friendly name');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/source_friendly_name" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::PAGE_GROUP);
        $fieldConfig->setUserFriendlyFieldName('Page group');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/page_group" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::TITLE);
        $fieldConfig->setUserFriendlyFieldName('Entry name');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::NAME));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::DESCRIPTION);
        $fieldConfig->setUserFriendlyFieldName('Entry description');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::TAGS_PUBLIC);
        $fieldConfig->setUserFriendlyFieldName('Entry tags');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="tags/tag">
						<xsl:if test="position() &gt; 1">
							<xsl:text>,</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::TAGS));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::START_DATE);
        $fieldConfig->setUserFriendlyFieldName('Distribution sunrise');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::ACTIVATE_END_DATE);
        $fieldConfig->setUserFriendlyFieldName('Distribution sunset');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::SEARCHABLE_END_DATE);
        $fieldConfig->setUserFriendlyFieldName('Distribution sunset');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::ARCHIVE_END_DATE);
        $fieldConfig->setUserFriendlyFieldName('Distribution sunset');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::TAGS_MSNVIDEO_CAT);
        $fieldConfig->setUserFriendlyFieldName('MSNVideo_Cat');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/msnvideo_cat" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::TAGS_MSNVIDEO_TOP);
        $fieldConfig->setUserFriendlyFieldName('MSNVideo_Top');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/msnvideo_top" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::TAGS_MSNVIDEO_TOP_CAT);
        $fieldConfig->setUserFriendlyFieldName('MSNVideo_Top_Cat');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/msnvideo_top_cat" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        // placeholders for dynamic fields
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::RELATED_LINK_N_TITLE);
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::RELATED_LINK_N_URL);
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::TAGS_PREMIUM_N_MARKET);
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::TAGS_PREMIUM_N_NAMESPACE);
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(MsnDistributionField::TAGS_PREMIUM_N_VALUE);
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        return $fieldConfigArray;
    }
 /**
  * @return array<kDistributionThumbDimensions>
  */
 public function getRequiredThumbDimensionsObjects()
 {
     $requiredThumbs = parent::getRequiredThumbDimensionsObjects();
     if (!is_null($this->overrideRequiredThumbs)) {
         $requiredThumbs = array();
         $requiredThumbs[] = $this->overrideRequiredThumbs;
     }
     return $requiredThumbs;
 }
 public function preSave(PropelPDO $con = null)
 {
     if ($this->isNew()) {
         $this->setUniqueHashForFeedUrl(md5(time() . rand(0, time())));
     }
     return parent::preSave($con);
 }
 protected function getDefaultFieldConfigArray()
 {
     $fieldConfigArray = parent::getDefaultFieldConfigArray();
     // entry name
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_NAME);
     $fieldConfig->setUserFriendlyFieldName('Name');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::NAME));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry description
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_DESCRIPTION);
     $fieldConfig->setUserFriendlyFieldName('Description');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry user id
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_USER_ID);
     $fieldConfig->setUserFriendlyFieldName('User ID');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(userId)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::PUSER_ID));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry tags
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_TAGS);
     $fieldConfig->setUserFriendlyFieldName('Tags');
     $fieldConfig->setEntryMrssXslt('<xsl:for-each select="tags/tag">
                             			<xsl:if test="position() &gt; 1">
                             				<xsl:text>,</xsl:text>
                             			</xsl:if>
                             			<xsl:value-of select="normalize-space(.)" />
                             		</xsl:for-each>');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::TAGS));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry categories
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_CATEGORIES);
     $fieldConfig->setUserFriendlyFieldName('Categories');
     $fieldConfig->setEntryMrssXslt('<xsl:for-each select="category">
                             			<xsl:if test="position() &gt; 1">
                             				<xsl:text>,</xsl:text>
                             			</xsl:if>
                             			<xsl:value-of select="normalize-space(.)" />
                             		</xsl:for-each>');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::CATEGORIES));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry partner data
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_PARTNER_DATA);
     $fieldConfig->setUserFriendlyFieldName('Entry Partner Data');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(partnerData)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::PARTNER_DATA));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry start date
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_START_DATE);
     $fieldConfig->setUserFriendlyFieldName('Distribution sunrise');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry end date
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_END_DATE);
     $fieldConfig->setUserFriendlyFieldName('Distribution sunset');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry reference id
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_REFERENCE_ID);
     $fieldConfig->setUserFriendlyFieldName('Reference ID');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(referenceID)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // entry license type
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(CrossKalturaDistributionField::BASE_ENTRY_LICENSE_TYPE);
     $fieldConfig->setUserFriendlyFieldName('License type');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(licenseType)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::LICENSE_TYPE));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     return $fieldConfigArray;
 }
    protected function getDefaultFieldConfigArray()
    {
        $fieldConfigArray = parent::getDefaultFieldConfigArray();
        //TODO: implement
        //media fields
        //short title
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::SHORT_TITLE);
        $fieldConfig->setUserFriendlyFieldName('Entry name');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::NAME));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //title
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::TITLE);
        $fieldConfig->setUserFriendlyFieldName('Entry name');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::NAME));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //synopsis
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::SYNOPSIS);
        $fieldConfig->setUserFriendlyFieldName('Entry description');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //tags
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::KEYWORD);
        $fieldConfig->setUserFriendlyFieldName('Entry tags');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="tags/tag">
						<xsl:if test="position() &gt; 1">
							<xsl:text>,</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::TAGS));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //genre
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::GENRE);
        $fieldConfig->setUserFriendlyFieldName('Idetic genre');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/IdeticGenre" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array("/*[local-name()='metadata']/*[local-name()='IdeticGenre']"));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //slot
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::SLOT);
        $fieldConfig->setUserFriendlyFieldName('Idetic slot');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/IdeticSlot" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array("/*[local-name()='metadata']/*[local-name()='IdeticSlot']"));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //folder
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::FOLDER);
        $fieldConfig->setUserFriendlyFieldName('Idetic folder');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/IdeticFolder" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array("/*[local-name()='metadata']/*[local-name()='IdeticFolder']"));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //start of availability
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::START_OF_AVAILABILITY);
        $fieldConfig->setUserFriendlyFieldName('Distribution sunrise');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //end of availability
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(IdeticDistributionField::END_OF_AVAILABILITY);
        $fieldConfig->setUserFriendlyFieldName('Distribution sunset');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        return $fieldConfigArray;
    }
 protected function getDefaultFieldConfigArray()
 {
     $fieldConfigArray = parent::getDefaultFieldConfigArray();
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TITLE);
     $fieldConfig->setUserFriendlyFieldName('Video title');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::NAME));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::DESCRIPTION);
     $fieldConfig->setUserFriendlyFieldName('Video description');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::SCHEDULE_PUBLISHING_TIME);
     $fieldConfig->setUserFriendlyFieldName('Schedule Sunrise Time');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::CALL_TO_ACTION_TYPE);
     $fieldConfig->setUserFriendlyFieldName('Call To Action Type');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/CallToActionType" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::CALL_TO_ACTION_LINK);
     $fieldConfig->setUserFriendlyFieldName('Call To Action Link');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/CallToActionLink" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::CALL_TO_ACTION_LINK_CAPTION);
     $fieldConfig->setUserFriendlyFieldName('Call To Action Link Caption');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/CallToActionLinkCaption" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_COUNTRIES);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingCountries" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_CITIES);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingCities" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_REGIONS);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingRegions" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_ZIP_CODES);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingZipCodes" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_EXCLUDED_COUNTRIES);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingExcludedCountries" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_EXCLUDED_CITIES);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingExcludedCities" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_EXCLUDED_REGIONS);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingExcludedRegions" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_EXCLUDED_ZIPCODES);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingExcludedZipCodes" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_TIMEZONES);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingTimezones" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_AGE_MAX);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingAgeMax" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_AGE_MIN);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingAgeMin" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_GENDERS);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingGenders" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(FacebookDistributionField::TARGETING_LOCALES);
     $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to limit the audience of the video');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/TargetingLocale" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     //	   	$fieldConfig = new DistributionFieldConfig();
     //	    $fieldConfig->setFieldName(FacebookDistributionField::PLACE);
     //	    $fieldConfig->setUserFriendlyFieldName('ID of location to tag in video');
     //	    $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/Place" />');
     //	    $fieldConfigArray[] = $fieldConfig;
     //
     //	    $fieldConfig = new DistributionFieldConfig();
     //	    $fieldConfig->setFieldName(FacebookDistributionField::TAGS);
     //	    $fieldConfig->setUserFriendlyFieldName('IDs (comma separated) of persons to tag in video');
     //	    $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/Tags" />');
     //	    $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     //
     //
     //	   	$fieldConfig = new DistributionFieldConfig();
     //	    $fieldConfig->setFieldName(FacebookDistributionField::FEED_TARGETING);
     //	    $fieldConfig->setUserFriendlyFieldName('Key IDs for ad targeting objects used to promote the video in specific audience feeds');
     //	    $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/FeedTargeting" />');
     //	    $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     return $fieldConfigArray;
 }
 protected function getDefaultFieldConfigArray()
 {
     $fieldConfigArray = parent::getDefaultFieldConfigArray();
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_TITLE);
     $fieldConfig->setUserFriendlyFieldName('Entry name');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_SUMMARY);
     $fieldConfig->setUserFriendlyFieldName('Entry description');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_UPDATED);
     $fieldConfig->setUserFriendlyFieldName('Entry Updated At');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(updatedAt)" />');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_AUTHOR_NAME);
     $fieldConfig->setUserFriendlyFieldName('Feed Author Name');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/feed_author_name" />');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_ASSET_ID);
     $fieldConfig->setUserFriendlyFieldName('Entry ID');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(entryId)" />');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_OFFERING_START);
     $fieldConfig->setUserFriendlyFieldName('Distribution start date');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_OFFERING_END);
     $fieldConfig->setUserFriendlyFieldName('Distribution end date');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_CATEGORY_TERM);
     $fieldConfig->setUserFriendlyFieldName('Synacor HBO Category');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/SynacorHboCategory" />');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_GENRE_TERM);
     $fieldConfig->setUserFriendlyFieldName('Synacor HBO Genre');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/SynacorHboGenre" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_ASSET_TYPE);
     $fieldConfig->setUserFriendlyFieldName('Synacor HBO Asset Type');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/SynacorHboAssetType" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_RATING);
     $fieldConfig->setUserFriendlyFieldName('Synacor HBO Rating');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/SynacorHboRating" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_SERIES_TITLE);
     $fieldConfig->setUserFriendlyFieldName('Synacor HBO Series Title');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/SynacorHboSeriesTitle" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(SynacorHboDistributionField::ENTRY_BRAND);
     $fieldConfig->setUserFriendlyFieldName('Synacor HBO Brand');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/SynacorHboBrand" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     return $fieldConfigArray;
 }
 protected function getDefaultFieldConfigArray()
 {
     $fieldConfigArray = parent::getDefaultFieldConfigArray();
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::MEDIA_TITLE);
     $fieldConfig->setUserFriendlyFieldName('Entry name');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::NAME));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::MEDIA_DESCRIPTION);
     $fieldConfig->setUserFriendlyFieldName(self::METADATA_FIELD_DESCRIPTION . ' / Entry description');
     $fieldConfig->setEntryMrssXslt('
     			<xsl:choose>
                 	<xsl:when test="customData/metadata/' . self::METADATA_FIELD_DESCRIPTION . ' != \'\'">
                 		<xsl:value-of select="customData/metadata/' . self::METADATA_FIELD_DESCRIPTION . '" />
                 	</xsl:when>
                 	<xsl:otherwise>
                 		<xsl:value-of select="string(description)" />
                 	</xsl:otherwise>
                 </xsl:choose>');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION, "/*[local-name()='metadata']/*[local-name()='" . self::METADATA_FIELD_DESCRIPTION . "']"));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::MEDIA_KEYWORDS);
     $fieldConfig->setUserFriendlyFieldName(self::METADATA_FIELD_TAGS . ' / Entry tags');
     $fieldConfig->setEntryMrssXslt('<xsl:choose>
                 	<xsl:when test="customData/metadata/' . self::METADATA_FIELD_TAGS . ' != \'\'">
                 		<xsl:value-of select="normalize-space(customData/metadata/' . self::METADATA_FIELD_TAGS . ')" />
                 	</xsl:when>
                 	<xsl:otherwise>
                 		<xsl:for-each select="tags/tag">
                 			<xsl:if test="position() &gt; 1">
                 				<xsl:text>,</xsl:text>
                 			</xsl:if>
                 			<xsl:value-of select="normalize-space(.)" />
                 		</xsl:for-each>
                 	</xsl:otherwise>
                 </xsl:choose>');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::TAGS, "/*[local-name()='metadata']/*[local-name()='" . self::METADATA_FIELD_TAGS . "']"));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::MEDIA_CATEGORY);
     $fieldConfig->setUserFriendlyFieldName(self::METADATA_FIELD_CATEGORY);
     $fieldConfig->setEntryMrssXslt('
     			<xsl:choose>
                 	<xsl:when test="customData/metadata/' . self::METADATA_FIELD_CATEGORY . ' != \'\'">
                 		<xsl:value-of select="customData/metadata/' . self::METADATA_FIELD_CATEGORY . '" />
                 	</xsl:when>
                 	<xsl:otherwise>
                 		<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/default_category" />
                 	</xsl:otherwise>
                 </xsl:choose>');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array("/*[local-name()='metadata']/*[local-name()='default_category']", "/*[local-name()='metadata']/*[local-name()='" . self::METADATA_FIELD_CATEGORY . "']"));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::MEDIA_PLAYLIST_IDS);
     $fieldConfig->setUserFriendlyFieldName(self::METADATA_FIELD_PLAYLIST_IDS);
     $fieldConfig->setEntryMrssXslt('<xsl:if test="customData/metadata/' . self::METADATA_FIELD_PLAYLIST_IDS . ' != \'\'">' . '<xsl:value-of select="normalize-space(customData/metadata/' . self::METADATA_FIELD_PLAYLIST_IDS . ')" />' . '</xsl:if>');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::START_DATE);
     $fieldConfig->setUserFriendlyFieldName('Distribution sunrise');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::END_DATE);
     $fieldConfig->setUserFriendlyFieldName('Distribution sunset');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::ALLOW_COMMENTS);
     $fieldConfig->setUserFriendlyFieldName('Allow comments');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_comments" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::ALLOW_RESPONSES);
     $fieldConfig->setUserFriendlyFieldName('Allow responses');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_responses" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::ALLOW_RATINGS);
     $fieldConfig->setUserFriendlyFieldName('Allow ratings');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_ratings" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::ALLOW_EMBEDDING);
     $fieldConfig->setUserFriendlyFieldName('Allow embedding');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_embedding" />');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     // The following allows defining an alternative slug header for an uploaded video, which
     // affects the "raw file" field of a YouTube video entry.
     // A typical MRSS XSLT value would be the entry's title (similar to MEDIA_TITLE)
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(YouTubeApiDistributionField::ALT_RAW_FILENAME);
     $fieldConfig->setUserFriendlyFieldName('Alternative Raw File Name ');
     $fieldConfig->setEntryMrssXslt('');
     // Empty by default to indicate that the feature is switched off.
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     return $fieldConfigArray;
 }
 protected function getDefaultFieldConfigArray()
 {
     $fieldConfigArray = parent::getDefaultFieldConfigArray();
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(DailymotionDistributionField::VIDEO_TITLE);
     $fieldConfig->setUserFriendlyFieldName('Entry name');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::NAME));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(DailymotionDistributionField::VIDEO_DESCRIPTION);
     $fieldConfig->setUserFriendlyFieldName(self::METADATA_FIELD_DESCRIPTION . ' / Entry description');
     $fieldConfig->setEntryMrssXslt('
     			<xsl:choose>
                 	<xsl:when test="customData/metadata/' . self::METADATA_FIELD_DESCRIPTION . ' != \'\'">
                 		<xsl:value-of select="customData/metadata/' . self::METADATA_FIELD_DESCRIPTION . '" />
                 	</xsl:when>
                 	<xsl:otherwise>
                 		<xsl:value-of select="string(description)" />
                 	</xsl:otherwise>
                 </xsl:choose>');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION, "/*[local-name()='metadata']/*[local-name()='" . self::METADATA_FIELD_DESCRIPTION . "']"));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(DailymotionDistributionField::VIDEO_TAGS);
     $fieldConfig->setUserFriendlyFieldName(self::METADATA_FIELD_TAGS . ' / Entry tags');
     $fieldConfig->setEntryMrssXslt('<xsl:choose>
                 	<xsl:when test="customData/metadata/' . self::METADATA_FIELD_TAGS . ' != \'\'">
                 		<xsl:value-of select="normalize-space(customData/metadata/' . self::METADATA_FIELD_TAGS . ')" />
                 	</xsl:when>
                 	<xsl:otherwise>
                 		<xsl:for-each select="tags/tag">
                 			<xsl:if test="position() &gt; 1">
                 				<xsl:text>,</xsl:text>
                 			</xsl:if>
                 			<xsl:value-of select="normalize-space(.)" />
                 		</xsl:for-each>
                 	</xsl:otherwise>
                 </xsl:choose>');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::TAGS, "/*[local-name()='metadata']/*[local-name()='" . self::METADATA_FIELD_TAGS . "']"));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(DailymotionDistributionField::VIDEO_CHANNEL);
     $fieldConfig->setUserFriendlyFieldName(self::METADATA_FIELD_CATEGORY);
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/' . self::METADATA_FIELD_CATEGORY . '" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array("/*[local-name()='metadata']/*[local-name()='" . self::METADATA_FIELD_CATEGORY . "']"));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(DailymotionDistributionField::VIDEO_LANGUAGE);
     $fieldConfig->setUserFriendlyFieldName('Video language');
     $fieldConfig->setEntryMrssXslt('<xsl:text>en</xsl:text>');
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(DailymotionDistributionField::VIDEO_TYPE);
     $fieldConfig->setUserFriendlyFieldName(self::METADATA_FIELD_TYPE);
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/' . self::METADATA_FIELD_TYPE . '" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array("/*[local-name()='metadata']/*[local-name()='" . self::METADATA_FIELD_TYPE . "']"));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(DailymotionDistributionField::VIDEO_GEO_BLOCKING_OPERATION);
     $fieldConfig->setUserFriendlyFieldName('Geo blocking allow / deny');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(DailymotionDistributionField::VIDEO_GEO_BLOCKING_COUNTRY_LIST);
     $fieldConfig->setUserFriendlyFieldName('Geo blocking country list');
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     return $fieldConfigArray;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $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->validateMaxLength($this->maxLengthValidation, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateInListOrNull($this->inListOrNullValidation, $allFieldValues, $action));
     if ($this->getDisableEpisodeNumberCustomValidation() !== true) {
         $validationErrors = array_merge($validationErrors, $this->validateEpisodeNumber($allFieldValues, $action));
     }
     $validationErrors = array_merge($validationErrors, $this->validateContentRatingReason($allFieldValues, $action));
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $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->validateMaxLength($this->maxLengthValidation, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateInListOrNull($this->inListOrNullValidation, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateMaxLengthCategoryName($allFieldValues[UverseClickToOrderDistributionField::CATEGORY_ENTRY_ID], $action));
     return $validationErrors;
 }
 protected function getDefaultFieldConfigArray()
 {
     $fieldConfigArray = parent::getDefaultFieldConfigArray();
     // Set the default XSL expression for AUTOMATIC_DISTRIBUTION_CONDITIONS
     $fieldConfig = $fieldConfigArray[ConfigurableDistributionField::AUTOMATIC_DISTRIBUTION_CONDITIONS];
     if ($fieldConfig) {
         $fieldConfig->setEntryMrssXslt('<xsl:if test="customData/metadata/WorkflowStatus = \'Approved\'">Approved For Automatic Distribution</xsl:if>');
     }
     // media fields
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(TvinciDistributionField::METADATA_SCHEMA_ID);
     $fieldConfig->setUserFriendlyFieldName('Schema Id');
     $fieldConfig->setEntryMrssXslt('2');
     // See TvinciDistributionField::METADATA_SCHEMA_ID
     $fieldConfig->setUpdateOnChange(false);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(TvinciDistributionField::MEDIA_TITLE);
     $fieldConfig->setUserFriendlyFieldName('Entry name');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::NAME));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(TvinciDistributionField::MEDIA_DESCRIPTION);
     $fieldConfig->setUserFriendlyFieldName('Entry description');
     $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
     $fieldConfig->setUpdateOnChange(true);
     $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION));
     $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     $activatePublishingXSLT = '<xsl:choose>' . '<xsl:when test="customData/metadata/Activate = \'Yes\'">true</xsl:when>' . '<xsl:otherwise>false</xsl:otherwise>' . '</xsl:choose>';
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::ACTIVATE_PUBLISHING, 'Activate Publishing', 'Activate', false, DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER, $activatePublishingXSLT);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::MEDIA_TYPE, 'Media Type', 'MediaType');
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_SHORT_TITLE, 'Short Title', 'ShortTitle', false);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_DIMENSION, 'Dimension', 'Dimension', false);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_BILLING_TYPE, 'Billing Type', 'BillingType', false);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::GEO_BLOCK_RULE, 'Geo Block Rule', 'GeoBlockRule');
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::WATCH_PERMISSIONS_RULE, 'Watch Permission Rule', 'WatchPermissionRule');
     // Language
     $languageXSLT = '<xsl:choose>' . '<xsl:when test="customData/metadata/Language != \'\'">' . '<xsl:value-of select="customData/metadata/Language"/>' . '</xsl:when>' . '<xsl:otherwise><xsl:text>eng</xsl:text></xsl:otherwise>' . '</xsl:choose>';
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::LANGUAGE, 'Language', 'Language', false, DistributionFieldRequiredStatus::NOT_REQUIRED, $languageXSLT);
     // Dates
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::START_DATE, 'Start Date', 'StartDate', false, DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::END_DATE, 'End Date', 'FinalEndDate', false, DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::CATALOG_START_DATE, 'Catalog Start Date', 'CatalogStartDate', false, DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::CATALOG_END_DATE, 'Catalog End Date', 'CatalogEndDate', false, DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_RUNTIME, 'Runtime', 'Runtime');
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_RELEASE_YEAR, 'Release Year', 'ReleaseYear');
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_RELEASE_DATE, 'Release Date', 'ReleaseDate');
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_GENRE, 'Genre', 'Genre', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_SUB_GENRE, 'Sub Genre', 'SubGenre', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_RATING, 'Rating', 'Rating', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_PARENTAL_RATING, 'Parental Rating', 'ParentalRating', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_COUNTRY, 'Country', 'Country', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_CAST, 'Cast', 'Cast', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_MAIN_CAST, 'Main Cast', 'MainCast', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_DIRECTOR, 'Director', 'Director', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_AUDIO_LANGUAGE, 'Audio Language', 'AudioLanguage', true);
     $this->addMetadataDistributionFieldConfig($fieldConfigArray, TvinciDistributionField::METADATA_STUDIO, 'Studio', 'Studio', true);
     // Video assets configuration (see KalturaTvinciDistributionJobProviderData::initPlayManifestUrls())
     $fieldConfig = new DistributionFieldConfig();
     $fieldConfig->setFieldName(TvinciDistributionField::VIDEO_ASSETS_CONFIGURATION);
     $fieldConfig->setUserFriendlyFieldName('Video assets configuration');
     $fieldConfig->setEntryMrssXslt('');
     $fieldConfig->setUpdateOnChange(false);
     $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
     return $fieldConfigArray;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $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->validateMaxLength($this->maxLengthValidation, $allFieldValues, $action));
     //validate required channel fields
     $channelTitleValue = $this->getChannelTitle();
     if (empty($channelTitleValue)) {
         $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Channel title profile configuration');
         $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY);
         $validationErrors[] = $validationError;
     }
     $channelLinkValue = $this->getChannelLink();
     if (empty($channelLinkValue)) {
         $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Channel link profile configuration');
         $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY);
         $validationErrors[] = $validationError;
     }
     $channelDescriptionValue = $this->getChannelDescription();
     if (empty($channelDescriptionValue)) {
         $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Channel description profile configuration');
         $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY);
         $validationErrors[] = $validationError;
     }
     //verify channel image title exist if channel image url exists and vice versa
     $channelImageTitleValue = $this->getChannelImageTitle();
     $channelImageUrlValue = $this->getChannelImageUrl();
     if (!empty($channelImageTitleValue) && empty($channelImageUrlValue)) {
         $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Channel image url profile configuration');
         $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY);
         $validationErrors[] = $validationError;
     }
     if (!empty($channelImageUrlValue) && empty($channelImageTitleValue)) {
         $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'Channel image title profile configuration');
         $validationError->setValidationErrorType(DistributionValidationErrorType::STRING_EMPTY);
         $validationErrors[] = $validationError;
     }
     // validate thumbnail assets
     $requiredThumbAssetDim = $this->getRequiredThumbDimensions();
     if (empty($requiredThumbAssetDim)) {
         $errorMsg = 'no thumbnail was configured';
         $validationError = $this->createValidationError($action, DistributionErrorType::INVALID_DATA);
         $validationError->setValidationErrorType(DistributionValidationErrorType::CUSTOM_ERROR);
         $validationError->setValidationErrorParam($errorMsg);
         $validationError->setDescription($errorMsg);
         $validationErrors[] = $validationError;
     }
     return $validationErrors;
 }
    protected function getDefaultFieldConfigArray()
    {
        $fieldConfigArray = parent::getDefaultFieldConfigArray();
        // media fields
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MEDIA_TITLE);
        $fieldConfig->setUserFriendlyFieldName('Entry name');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::NAME));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MEDIA_DESCRIPTION);
        $fieldConfig->setUserFriendlyFieldName('Entry description');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MEDIA_KEYWORDS);
        $fieldConfig->setUserFriendlyFieldName('Entry tags');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="tags/tag">
						<xsl:if test="position() &gt; 1">
							<xsl:text>,</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::TAGS));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MEDIA_RATING);
        $fieldConfig->setUserFriendlyFieldName('Media rating');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MEDIA_CATEGORY);
        $fieldConfig->setUserFriendlyFieldName('Media category');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/default_category" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::WEB_METADATA_CUSTOM_ID);
        $fieldConfig->setUserFriendlyFieldName('Entry ID');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(entryId)" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::WEB_METADATA_NOTES);
        $fieldConfig->setUserFriendlyFieldName('Web metadata notes');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MOVIE_METADATA_CUSTOM_ID);
        $fieldConfig->setUserFriendlyFieldName('Movie metadata custom ID');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MOVIE_METADATA_DIRECTOR);
        $fieldConfig->setUserFriendlyFieldName('Movie metadata director');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MOVIE_METADATA_NOTES);
        $fieldConfig->setUserFriendlyFieldName('Movie metadata notes');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MOVIE_METADATA_TITLE);
        $fieldConfig->setUserFriendlyFieldName('Movie metadata title');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::MOVIE_METADATA_TMS_ID);
        $fieldConfig->setUserFriendlyFieldName('Movie metadata TMS ID');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::DATE_RECORDED);
        $fieldConfig->setUserFriendlyFieldName('Date recorded');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::START_TIME);
        $fieldConfig->setUserFriendlyFieldName('Distribution sunrise');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::END_TIME);
        $fieldConfig->setUserFriendlyFieldName('Distribution sunset');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::URGENT_REFERENCE_FILE);
        $fieldConfig->setUserFriendlyFieldName('Urgent reference file');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::KEEP_FINGERPRINT);
        $fieldConfig->setUserFriendlyFieldName('Keep fingerprint');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        // community fields
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ALLOW_COMMENTS);
        $fieldConfig->setUserFriendlyFieldName('Allow comments');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_comments" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ALLOW_RESPONSES);
        $fieldConfig->setUserFriendlyFieldName('Allow responses');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_responses" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ALLOW_RATINGS);
        $fieldConfig->setUserFriendlyFieldName('Allow ratings');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_ratings" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ALLOW_EMBEDDING);
        $fieldConfig->setUserFriendlyFieldName('Allow embedding');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_embedding" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        // youtube extra data
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::POLICY_COMMERCIAL);
        $fieldConfig->setUserFriendlyFieldName('Commercial policy');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/commerical_policy" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::POLICY_UGC);
        $fieldConfig->setUserFriendlyFieldName('UGC policy');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/ugc_policy" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::NOTIFICATION_EMAIL);
        $fieldConfig->setUserFriendlyFieldName('Notification Email');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/notification_email" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ACCOUNT_USERNAME);
        $fieldConfig->setUserFriendlyFieldName('Account username');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/account_username" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ACCOUNT_PASSWORD);
        $fieldConfig->setUserFriendlyFieldName('Account password');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        // the password should not be added in contributeMRSS
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::OWNER_NAME);
        $fieldConfig->setUserFriendlyFieldName('Account username');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/account_username" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::TARGET);
        $fieldConfig->setUserFriendlyFieldName('YouTube target');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/target" />');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::LANGUAGE);
        $fieldConfig->setUserFriendlyFieldName('YouTube language');
        $fieldConfig->setEntryMrssXslt('<xsl:text>en</xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::TV_METADATA_CUSTOM_ID);
        $fieldConfig->setUserFriendlyFieldName('TV metadata custom id');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::TV_METADATA_EPISODE);
        $fieldConfig->setUserFriendlyFieldName('TV metadata episode');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::TV_METADATA_EPISODE_TITLE);
        $fieldConfig->setUserFriendlyFieldName('TV metadata episode title');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::TV_METADATA_SHOW_TITLE);
        $fieldConfig->setUserFriendlyFieldName('TV metadata show title');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::TV_METADATA_SEASON);
        $fieldConfig->setUserFriendlyFieldName('TV metadata season');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::TV_METADATA_NOTES);
        $fieldConfig->setUserFriendlyFieldName('TV metadata notes');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::TV_METADATA_TMS_ID);
        $fieldConfig->setUserFriendlyFieldName('TV metadata TMS ID');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::PLAYLISTS);
        $fieldConfig->setUserFriendlyFieldName('YouTube playlists');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/YouTubePlaylist" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array("/*[local-name()='metadata']/*[local-name()='YouTubePlaylist']"));
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ADVERTISING_ADSENSE_FOR_VIDEO);
        $fieldConfig->setUserFriendlyFieldName('Advertising adsense for video');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ADVERTISING_INVIDEO);
        $fieldConfig->setUserFriendlyFieldName('Advertising in video');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::THIRD_PARTY_AD_SERVER_AD_TYPE);
        $fieldConfig->setUserFriendlyFieldName('Third party ad server ad type');
        $fieldConfig->setEntryMrssXslt('<xsl:text>1</xsl:text>');
        $fieldConfig->setUpdateOnChange(false);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::THIRD_PARTY_AD_SERVER_PARTNER_ID);
        $fieldConfig->setUserFriendlyFieldName('Third party ad server partner ID');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/ad_server_partner_id" />');
        $fieldConfig->setUpdateOnChange(false);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::THIRD_PARTY_AD_SERVER_VIDEO_ID);
        $fieldConfig->setUserFriendlyFieldName('Entry ID');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(entryId)" />');
        $fieldConfig->setUpdateOnChange(false);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ADVERTISING_ALLOW_PRE_ROLL_ADS);
        $fieldConfig->setUserFriendlyFieldName('Allow Pre Roll Ads');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_pre_roll_ads" />');
        $fieldConfig->setUpdateOnChange(false);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ADVERTISING_ALLOW_MID_ROLL_ADS);
        $fieldConfig->setUserFriendlyFieldName('Allow Mid Roll Ads');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_mid_roll_ads" />');
        $fieldConfig->setUpdateOnChange(false);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::ADVERTISING_ALLOW_POST_ROLL_ADS);
        $fieldConfig->setUserFriendlyFieldName('Allow Post Roll Ads');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/allow_post_roll_ads" />');
        $fieldConfig->setUpdateOnChange(false);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::LOCATION_COUNTRY);
        $fieldConfig->setUserFriendlyFieldName('Location country');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::LOCATION_LOCATION_TEXT);
        $fieldConfig->setUserFriendlyFieldName('Location text');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::LOCATION_ZIP_CODE);
        $fieldConfig->setUserFriendlyFieldName('Location zip code');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YouTubeDistributionField::DISTRIBUTION_RESTRICTION_DISTRIBUTION_RULE);
        $fieldConfig->setUserFriendlyFieldName('Distribution restriction rule');
        $fieldConfig->setEntryMrssXslt('<xsl:text></xsl:text>');
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_ACTOR, 'Asset actor', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_BROADCASTER, 'Asset broadcaster', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_CONTENT_TYPE, 'Asset content type', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_CUSTOM_ID, 'Asset custom id', '<xsl:value-of select="string(entryId)" />');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_DESCRIPTION, 'Asset description', '<xsl:value-of select="string(description)" />');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_DIRECTOR, 'Asset director', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_EIDR, 'Asset EIDR', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_END_YEAR, 'Asset end year', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_EPISODE, 'Asset episode', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_GENRE, 'Asset genre', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_GRID, 'Asset GRid', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_ISAN, 'Asset ISAN', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_KEYWORDS, 'Asset keywords', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_NOTES, 'Asset notes', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_ORIGINAL_RELEASE_DATE, 'Asset original release date', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_ORIGINAL_RELEASE_MEDIUM, 'Asset original medium', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_PRODUCER, 'Asset producer', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_RATING_SYSTEM, 'Asset rating system', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_RATING_VALUE, 'Asset rating value', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_SEASON, 'Asset season', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_SHOW_AND_MOVIE_PROGRAMMING, 'Asset show and movie programming', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_SHOW_TITLE, 'Asset show title', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_SPOKEN_LANGUAGE, 'Asset spoken language', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_START_YEAR, 'Asset start year', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_SUBTITLED_LANGUAGE, 'Asset subtitles language', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_TITLE, 'Asset title', '<xsl:value-of select="string(title)" />');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_TYPE, 'Asset type', '<xsl:text>web</xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_TMS_ID, 'Asset TMS ID', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_UPC, 'Asset UPC', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_URL, 'Asset URL', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ASSET_WRITER, 'Asset Writer', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_ALLOW_COMMENT_RATINGS, 'Video allow comment ratings', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_ALLOW_SYNDICATION, 'Video allow syndication', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_CHANNEL, 'Video channel', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_HIDE_VIEW_COUNT, 'Video hide view count', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_DOMAIN_BLACK_LIST, 'Video domain black list', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_DOMAIN_WHITE_LIST, 'Video domain white list', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_NOTIFY_SUBSCRIBERS, 'Video notify subscribers', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_PUBLIC, 'Video public', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::VIDEO_CHANNEL, 'Video channel', '<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/account_username" />');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::CLAIM_TYPE, 'Claim type', '<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/claim_type" />');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::CLAIM_BLOCK_OUTSIDE_OWNERSHIP, 'Video block outside ownership', '<xsl:text></xsl:text>');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::ADVERTISING_INSTREAM_STANDARD, 'Instream standard', '<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/instream_standard" />');
        $this->addDistributionFieldConfig($fieldConfigArray, YouTubeDistributionField::DISABLE_FINGERPRINTING, 'Disable fingerprinting/claiming', '<xsl:text></xsl:text>');
        if ($this->getFeedSpecVersion() == YouTubeDistributionFeedSpecVersion::VERSION_2) {
            $this->removeDistributionFieldConfigs($fieldConfigArray, $this->specV1OnlyFields);
        } else {
            $this->removeDistributionFieldConfigs($fieldConfigArray, $this->specV2OnlyFields);
        }
        return $fieldConfigArray;
    }
    protected function getDefaultFieldConfigArray()
    {
        $fieldConfigArray = parent::getDefaultFieldConfigArray();
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::CHANNEL_TITLE);
        $fieldConfig->setUserFriendlyFieldName('Channel title');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/channel_title" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_ENTRY_ID);
        $fieldConfig->setUserFriendlyFieldName('item entry id');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(entryId)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_CREATED_AT);
        $fieldConfig->setUserFriendlyFieldName('item created at');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(createdAt)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_UPDATED_AT);
        $fieldConfig->setUserFriendlyFieldName('item updated at');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(updatedAt)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_START_DATE);
        $fieldConfig->setUserFriendlyFieldName('entry valid time');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_END_DATE);
        $fieldConfig->setUserFriendlyFieldName('entry expiration time');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_TITLE);
        $fieldConfig->setUserFriendlyFieldName('item title');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_DESCRIPTION);
        $fieldConfig->setUserFriendlyFieldName('item description');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //tags
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_TAGS);
        $fieldConfig->setUserFriendlyFieldName('Entry tags');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="tags/tag">
						<xsl:if test="position() &gt; 1">
							<xsl:text>,</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::TAGS));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //categories
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_CATEGORIES);
        $fieldConfig->setUserFriendlyFieldName('Entry categories');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="category">
						<xsl:if test="position() &gt; 1">
							<xsl:text>,</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_METADATA_SHORT_TITLE);
        $fieldConfig->setUserFriendlyFieldName('metadata short title');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/AttUverseShortTitle" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_METADATA_TUNEIN);
        $fieldConfig->setUserFriendlyFieldName('metadata tunein');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/AttUverseTunein" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_METADATA_CONTENT_RATING);
        $fieldConfig->setUserFriendlyFieldName('metadata content rating');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/AttUverseContentRating" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_METADATA_LEGAL_DISCLAIMER);
        $fieldConfig->setUserFriendlyFieldName('metadata legal disclaimer');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/AttUverseLegalDisclaimer" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(AttUverseDistributionField::ITEM_METADATA_GENRE);
        $fieldConfig->setUserFriendlyFieldName('metadata genre');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="customData/metadata/AttUverseGenre" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        return $fieldConfigArray;
    }
    protected function getDefaultFieldConfigArray()
    {
        $fieldConfigArray = parent::getDefaultFieldConfigArray();
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::CONTACT_TELEPHONE);
        $fieldConfig->setUserFriendlyFieldName('Contact telephone');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/contact_telephone" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::CONTACT_EMAIL);
        $fieldConfig->setUserFriendlyFieldName('Contact email');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/contact_email" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_MODIFIED_DATE);
        $fieldConfig->setUserFriendlyFieldName('Video modified date');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(updatedAt)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_FEEDITEM_ID);
        $fieldConfig->setUserFriendlyFieldName('feed item id');
        //TODO: insert /, Category, /, and then entryId, for example: ID="/nat/041405flagirl
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(entryId)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_TITLE);
        $fieldConfig->setUserFriendlyFieldName('Entry name');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(title)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::NAME));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_DESCRIPTION);
        $fieldConfig->setUserFriendlyFieldName('Entry description');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(description)" />');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::DESCRIPTION));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_ROUTING);
        $fieldConfig->setUserFriendlyFieldName('Entry categories');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="category">
						<xsl:if test="position() &gt; 1">
							<xsl:text>,</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::CATEGORIES));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_KEYWORDS);
        $fieldConfig->setUserFriendlyFieldName('Entry tags');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="tags/tag">
						<xsl:if test="position() &gt; 1">
							<xsl:text>,</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setUpdateParams(array(entryPeer::TAGS));
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_VALID_TIME);
        $fieldConfig->setUserFriendlyFieldName('entry valid time');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunrise" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_EXPIRATION_TIME);
        $fieldConfig->setUserFriendlyFieldName('entry expiration time');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="distribution[@entryDistributionId=$entryDistributionId]/sunset" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //link title
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_LINK_TITLE);
        $fieldConfig->setUserFriendlyFieldName('video link title');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="customData/metadata/YahooLinkTitle">
						<xsl:if test="position() &gt; 1">
							<xsl:text>;</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        //link url
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_LINK_URL);
        $fieldConfig->setUserFriendlyFieldName('video link url');
        $fieldConfig->setEntryMrssXslt('<xsl:for-each select="customData/metadata/YahooLinkUrl">
						<xsl:if test="position() &gt; 1">
							<xsl:text>;</xsl:text>
						</xsl:if>
						<xsl:value-of select="." />
					</xsl:for-each>');
        $fieldConfig->setUpdateOnChange(true);
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::REQUIRED_BY_PROVIDER);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        $fieldConfig = new DistributionFieldConfig();
        $fieldConfig->setFieldName(YahooDistributionField::VIDEO_DURATION);
        $fieldConfig->setUserFriendlyFieldName('video duration');
        $fieldConfig->setEntryMrssXslt('<xsl:value-of select="string(media/duration)" />');
        $fieldConfig->setIsRequired(DistributionFieldRequiredStatus::NOT_REQUIRED);
        $fieldConfigArray[$fieldConfig->getFieldName()] = $fieldConfig;
        return $fieldConfigArray;
    }
 public function getOptionalAssetDistributionRules()
 {
     $ret = parent::getOptionalAssetDistributionRules();
     if (!class_exists('CaptionPlugin') || !CaptionPlugin::isAllowedPartner($this->getPartnerId())) {
         return $ret;
     }
     $isCaptionCondition = new kAssetDistributionPropertyCondition();
     $isCaptionCondition->setPropertyName(assetPeer::translateFieldName(assetPeer::TYPE, BasePeer::TYPE_COLNAME, BasePeer::TYPE_PHPNAME));
     $isCaptionCondition->setPropertyValue(CaptionPlugin::getAssetTypeCoreValue(CaptionAssetType::CAPTION));
     $captionDistributionRule = new kAssetDistributionRule();
     $captionDistributionRule->setAssetDistributionConditions(array($isCaptionCondition));
     $ret[] = $captionDistributionRule;
     return $ret;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     $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->validateMaxLength($this->maxLengthValidation, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateInListOrNull($this->inListOrNullValidation, $allFieldValues, $action));
     $validationErrors = array_merge($validationErrors, $this->validateEndDateNotPrecedesStartDatet($allFieldValues, $entryDistribution, $action));
     return $validationErrors;
 }
 public function validateForSubmission(EntryDistribution $entryDistribution, $action)
 {
     $validationErrors = parent::validateForSubmission($entryDistribution, $action);
     // make sure that all flavor assets marked for distribution have a flavor params id assigned to them
     $flavorAssetIds = explode(',', $entryDistribution->getFlavorAssetIds());
     if (count($flavorAssetIds)) {
         $c = new Criteria();
         $c->addAnd(assetPeer::ID, $flavorAssetIds, Criteria::IN);
         $flavorTypes = KalturaPluginManager::getExtendedTypes(assetPeer::OM_CLASS, assetType::FLAVOR);
         $c->add(assetPeer::TYPE, $flavorTypes, Criteria::IN);
         $flavorAssets = assetPeer::doSelect($c);
         foreach ($flavorAssets as $asset) {
             /* @var $asset flavorAsset */
             if (strlen($asset->getFlavorParamsId()) <= 0) {
                 $validationErrors[] = $this->createValidationError($action, DistributionErrorType::INVALID_DATA, 'flavor asset', 'flavor asset must be assigned to a flavor params id');
             }
         }
     }
     return $validationErrors;
 }