/** * Delete an existing metadata profile * * @action delete * @param int $id * @throws MetadataErrors::METADATA_PROFILE_NOT_FOUND */ function deleteAction($id) { $dbMetadataProfile = MetadataProfilePeer::retrieveByPK($id); if (!$dbMetadataProfile) { throw new KalturaAPIException(MetadataErrors::METADATA_PROFILE_NOT_FOUND, $id); } // if this profile is a dynamic object, check for references in other profiles if ($dbMetadataProfile->getObjectType() == MetadataObjectType::DYNAMIC_OBJECT) { $referencedFields = MetadataProfileFieldPeer::retrieveByPartnerAndRelatedMetadataProfileId(kCurrentContext::getCurrentPartnerId(), $dbMetadataProfile->getId()); if (count($referencedFields)) { /** @var MetadataProfileField $referencedField */ $referencedField = $referencedFields[0]; throw new KalturaAPIException(MetadataErrors::METADATA_PROFILE_REFERENCE_EXISTS, $referencedField->getMetadataProfileId(), $referencedField->getKey()); } } $dbMetadataProfile->setStatus(KalturaMetadataProfileStatus::DEPRECATED); $dbMetadataProfile->save(); $c = new Criteria(); $c->add(MetadataProfileFieldPeer::METADATA_PROFILE_ID, $id); $c->add(MetadataProfileFieldPeer::STATUS, MetadataProfileField::STATUS_DEPRECATED, Criteria::NOT_EQUAL); $MetadataProfileFields = MetadataProfileFieldPeer::doSelect($c); foreach ($MetadataProfileFields as $MetadataProfileField) { $MetadataProfileField->setStatus(MetadataProfileField::STATUS_DEPRECATED); $MetadataProfileField->save(); } $c = new Criteria(); $c->add(MetadataPeer::METADATA_PROFILE_ID, $id); $c->add(MetadataPeer::STATUS, KalturaMetadataStatus::DELETED, Criteria::NOT_EQUAL); $peer = null; MetadataPeer::setUseCriteriaFilter(false); $metadatas = MetadataPeer::doSelect($c); foreach ($metadatas as $metadata) { kEventsManager::raiseEvent(new kObjectDeletedEvent($metadata)); } $update = new Criteria(); $update->add(MetadataPeer::STATUS, KalturaMetadataStatus::DELETED); $con = Propel::getConnection(MetadataPeer::DATABASE_NAME); BasePeer::doUpdate($c, $update, $con); }
public function objectDataChanged(BaseObject $object, $previousVersion = null, BatchJob $raisedJob = null) { // updated in the indexing server (sphinx) $relatedObject = kMetadataManager::getObjectFromPeer($object); if ($relatedObject && $relatedObject instanceof IIndexable) { $relatedObject->setUpdatedAt(time()); $relatedObject->save(); $relatedObject->indexToSearchIndex(); } /** @var Metadata $object */ if ($object->getObjectType() == MetadataObjectType::DYNAMIC_OBJECT && !$object->isLikeNew()) { /** * when dynamic object is modified, we need to reindex the metadata and the objects (users, entries) * that are referencing it */ $profileFields = MetadataProfileFieldPeer::retrieveByPartnerAndRelatedMetadataProfileId($object->getPartnerId(), $object->getMetadataProfileId()); $relatedMetadataProfiles = array(); foreach ($profileFields as $profileField) { /** @var MetadataProfileField $profileField */ if (in_array($profileField->getMetadataProfileId(), $relatedMetadataProfiles)) { continue; } $filter = new MetadataFilter(); $filter->set('_eq_metadata_profile_id', $profileField->getMetadataProfileId()); $indexObjectType = kPluginableEnumsManager::apiToCore('IndexObjectType', MetadataPlugin::getApiValue(MetadataIndexObjectType::METADATA)); kJobsManager::addIndexJob($object->getPartnerId(), $indexObjectType, $filter, true); $relatedMetadataProfiles[] = $profileField->getMetadataProfileId(); } } if ($relatedObject instanceof entry) { kStorageExporter::reExportEntry($relatedObject); } return true; }