/**
  * 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);
 }
Beispiel #2
0
 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;
 }