/** * Action goes over all tags with instanceCount==0 and checks whether they need to be removed from the DB. Returns number of removed tags. * @action deletePending * @return int */ public function deletePendingAction() { TagPeer::setUseCriteriaFilter(false); $c = KalturaCriteria::create(TagPeer::OM_CLASS); $filter = new TagFilter(); $filter->set('_eq_instance_count', 0); $filter->attachToCriteria($c); $c->applyFilters(); $count = $c->getRecordsCount(); if (!$count) { KalturaLog::info('No tags pending for deletion.'); return 0; } $deletedTags = 0; $tagsForDelete = TagPeer::doSelect($c); TagPeer::setUseCriteriaFilter(true); foreach ($tagsForDelete as $tag) { /* @var $tag Tag */ switch ($tag->getObjectType()) { case taggedObjectType::ENTRY: $deletedTags += $this->resolveEntryTag($tag); break; case taggedObjectType::CATEGORY: $deletedTags += $this->resolveCategoryTag($tag); break; } } return $deletedTags; }
<?php chdir(dirname(__FILE__)); require_once __DIR__ . '/../../bootstrap.php'; $c = KalturaCriteria::create(TagPeer::OM_CLASS); $filter = new TagFilter(); $filter->set('_eq_instance_count', 0); $filter->attachToCriteria($c); $count = $c->getRecordsCount(); if (!$count) { die('No tags pending for deletion.'); } TagPeer::setUseCriteriaFilter(false); $tagsForDelete = TagPeer::doSelect($c); TagPeer::setUseCriteriaFilter(true); foreach ($tagsForDelete as $tag) { /* @var $tag Tag */ switch ($tag->getObjectType()) { case taggedObjectType::ENTRY: resolveEntryTag($tag); break; case taggedObjectType::CATEGORY: resolveCategoryTag($tag); break; } } function resolveEntryTag(Tag $tag) { $c = KalturaCriteria::create(entryPeer::OM_CLASS); $c->add(entryPeer::PARTNER_ID, $tag->getPartnerId()); if ($tag->getPrivacyContext() != kTagFlowManager::NULL_PC) {