/** * Allows you to add a new DrmPolicy object * * @action add * @param KalturaDrmPolicy $drmPolicy * @return KalturaDrmPolicy * * @throws KalturaErrors::PROPERTY_VALIDATION_CANNOT_BE_NULL */ public function addAction(KalturaDrmPolicy $drmPolicy) { // check for required parameters $drmPolicy->validatePropertyNotNull('name'); $drmPolicy->validatePropertyNotNull('status'); $drmPolicy->validatePropertyNotNull('provider'); $drmPolicy->validatePropertyNotNull('systemName'); $drmPolicy->validatePropertyNotNull('scenario'); $drmPolicy->validatePropertyNotNull('partnerId'); // validate values $drmPolicy->validatePolicy(); if (!PartnerPeer::retrieveByPK($drmPolicy->partnerId)) { throw new KalturaAPIException(KalturaErrors::INVALID_PARTNER_ID, $drmPolicy->partnerId); } if (!DrmPlugin::isAllowedPartner($drmPolicy->partnerId)) { throw new KalturaAPIException(KalturaErrors::PLUGIN_NOT_AVAILABLE_FOR_PARTNER, DrmPlugin::getPluginName(), $drmPolicy->partnerId); } if (DrmPolicyPeer::retrieveBySystemName($drmPolicy->systemName)) { throw new KalturaAPIException(DrmErrors::DRM_POLICY_DUPLICATE_SYSTEM_NAME, $drmPolicy->systemName); } // save in database $dbDrmPolicy = $drmPolicy->toInsertableObject(); $dbDrmPolicy->save(); // return the saved object $drmPolicy = KalturaDrmPolicy::getInstanceByType($dbDrmPolicy->getProvider()); $drmPolicy->fromObject($dbDrmPolicy, $this->getResponseProfile()); return $drmPolicy; }