/** * Prepares the environment before running a test. */ protected function setUp() { parent::setUp(); $this->UserLoginData = new UserLoginData(); $this->dummyPartner = new Partner(); $this->dummyPartner->setName('TEST ONLY PARTNER!'); $this->dummyPartner->save(); $this->UserLoginData->setConfigPartnerId($this->dummyPartner->getId()); }
/** * @param Partner $fromPartner * @param Partner $toPartner */ protected function copyEventNotificationTemplates(Partner $fromPartner, Partner $toPartner, $permissionRequiredOnly = false) { $fromPartnerId = $fromPartner->getId(); $toPartnerId = $toPartner->getId(); KalturaLog::debug("Copy event-notification templates from [{$fromPartnerId}] to [{$toPartnerId}]"); $c = new Criteria(); $c->add(EventNotificationTemplatePeer::PARTNER_ID, $fromPartnerId); $systemNameCriteria = new Criteria(); $systemNameCriteria->add(EventNotificationTemplatePeer::PARTNER_ID, $toPartnerId); $systemNameCriteria->add(EventNotificationTemplatePeer::STATUS, EventNotificationTemplateStatus::ACTIVE); $eventNotificationTemplates = EventNotificationTemplatePeer::doSelect($c); foreach ($eventNotificationTemplates as $eventNotificationTemplate) { /* @var $eventNotificationTemplate EventNotificationTemplate */ if ($permissionRequiredOnly && !count($eventNotificationTemplate->getRequiredCopyTemplatePermissions())) { continue; } if (!myPartnerUtils::isPartnerPermittedForCopy($toPartner, $eventNotificationTemplate->getRequiredCopyTemplatePermissions())) { continue; } if ($eventNotificationTemplate->getSystemName()) { $c = clone $systemNameCriteria; $c->add(EventNotificationTemplatePeer::SYSTEM_NAME, $eventNotificationTemplate->getSystemName()); if (EventNotificationTemplatePeer::doCount($c)) { continue; } } $newEventNotificationTemplate = $eventNotificationTemplate->copy(); $newEventNotificationTemplate->setPartnerId($toPartnerId); $newEventNotificationTemplate->save(); } }
public function getPartnerId() { if ($this->partner) { return $this->partner->getId(); } return null; }
/** * Tests user->add with adminLoginUsersQuota partner parameter */ public function testAdminLoginUsersQuota() { // check test prerequisites $c = new Criteria(); $c->addAnd(kuserPeer::PARTNER_ID, $this->dummyPartner->getId()); $c->addAnd(kuserPeer::LOGIN_DATA_ID, NULL, Criteria::NOT_EQUAL); $loginUsersNum = kuserPeer::doCount($c); if ($loginUsersNum != 1) { $this->fail('Partner [' . $this->dummyPartner->getId() . '] does not have only 1 user - test cannot proceed'); return; } $this->startSession(KalturaSessionType::ADMIN, null); $newUser = $this->createUser(true, false, __FUNCTION__); $newUser2 = $this->createUser(true, true, __FUNCTION__); $newUser3 = $this->createUser(true, false, __FUNCTION__); $newUser4 = $this->createUser(true, true, __FUNCTION__); $newUser5 = $this->createUser(true, true, __FUNCTION__); // check that a negative number means no new users possible $this->dummyPartner->setAdminLoginUsersQuota(rand(-30, -2)); $this->dummyPartner->save(); $exceptionThrown = false; try { $this->addUser($newUser2); } catch (Exception $e) { $exceptionThrown = $e; } $this->checkException($exceptionThrown, 'ADMIN_LOGIN_USERS_QUOTA_EXCEEDED'); // check that null means no new users possible $this->dummyPartner->setAdminLoginUsersQuota(null); $this->dummyPartner->save(); $exceptionThrown = false; try { $this->addUser($newUser2); } catch (Exception $e) { $exceptionThrown = $e; } $this->checkException($exceptionThrown, 'ADMIN_LOGIN_USERS_QUOTA_EXCEEDED'); // try to add more users than the partner's quota $this->dummyPartner->setAdminLoginUsersQuota(3); $this->dummyPartner->save(); $this->assertType('KalturaUser', $this->addUser($newUser)); $this->assertType('KalturaUser', $this->addUser($newUser2)); $this->assertType('KalturaUser', $this->addUser($newUser5)); $exceptionThrown = false; try { $this->addUser($newUser4); } catch (Exception $e) { $exceptionThrown = $e; } $this->checkException($exceptionThrown, 'ADMIN_LOGIN_USERS_QUOTA_EXCEEDED'); $this->assertType('KalturaUser', $this->addUser($newUser3)); $this->dummyPartner->setAdminLoginUsersQuota(4); $this->dummyPartner->save(); $this->assertType('KalturaUser', $this->addUser($newUser4)); }
public static function redirectPartnerToCorrectKmc(Partner $partner, $ks, $uid, $screenName, $email, $validatingKmc) { if ($validatingKmc == $partner->getKmcVersion()) { return true; } $subpId = $partner->getId() * 100; switch ($partner->getKmcVersion()) { case 1: $kmc1 = "/index.php/kmc/kmc1?partner_id=" . $partner->getId() . "&subp_id=" . $subpId . "&ks=" . $ks . "&uid=" . $uid . "&screen_name=" . $screenName . "&email=" . $email; header("Location: " . $kmc1); die; break; case 2: case 3: case 4: default: $ver = $partner->getKmcVersion(); $kmc_url = "/index.php/kmc/kmc{$ver}"; header("Location: " . $kmc_url); die; break; } }
/** * @param Partner $fromPartner * @param Partner $toPartner */ protected function copyMetadataProfiles(Partner $fromPartner, Partner $toPartner, $permissionRequiredOnly = false) { $fromPartnerId = $fromPartner->getId(); $toPartnerId = $toPartner->getId(); $c = new Criteria(); $c->add(MetadataProfilePeer::PARTNER_ID, $fromPartnerId); $systemNameCriteria = new Criteria(); $systemNameCriteria->add(MetadataProfilePeer::PARTNER_ID, $toPartnerId); $systemNameCriteria->add(MetadataProfilePeer::STATUS, MetadataProfile::STATUS_ACTIVE); $metadataProfiles = MetadataProfilePeer::doSelect($c); foreach ($metadataProfiles as $metadataProfile) { /* @var $metadataProfile MetadataProfile */ if ($permissionRequiredOnly && !count($metadataProfile->getRequiredCopyTemplatePermissions())) { continue; } if (!myPartnerUtils::isPartnerPermittedForCopy($toPartner, $metadataProfile->getRequiredCopyTemplatePermissions())) { continue; } if ($metadataProfile->getSystemName()) { $c = clone $systemNameCriteria; $c->add(MetadataProfilePeer::SYSTEM_NAME, $metadataProfile->getSystemName()); if (MetadataProfilePeer::doCount($c)) { continue; } } $newMetadataProfile = $metadataProfile->copy(); $newMetadataProfile->setPartnerId($toPartnerId); $newMetadataProfile->save(); kFileSyncUtils::createSyncFileLinkForKey($newMetadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_DEFINITION), $metadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_DEFINITION)); kFileSyncUtils::createSyncFileLinkForKey($newMetadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_VIEWS), $metadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_VIEWS)); kFileSyncUtils::createSyncFileLinkForKey($newMetadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_XSLT), $metadataProfile->getSyncKey(MetadataProfile::FILE_SYNC_METADATA_XSLT)); $metadataProfileFields = MetadataProfileFieldPeer::retrieveByMetadataProfileId($metadataProfile->getId()); foreach ($metadataProfileFields as $metadataProfileField) { $newMetadataProfileField = $metadataProfileField->copy(); $newMetadataProfileField->setMetadataProfileId($newMetadataProfile->getId()); $newMetadataProfileField->setPartnerId($toPartnerId); $newMetadataProfileField->save(); } } }
public function fromPartner(Partner $partner) { //$item = new KalturaVarPartnerUsageItem(); if ($partner) { $this->partnerStatus = $partner->getStatus(); $this->partnerId = $partner->getId(); $this->partnerName = $partner->getPartnerName(); $this->partnerCreatedAt = $partner->getCreatedAt(null); $this->partnerPackage = $partner->getPartnerPackage(); } //return $item; }
/** * Adds an object to the instance pool. * * Propel keeps cached copies of objects in an instance pool when they are retrieved * from the database. In some cases -- especially when you override doSelect*() * methods in your stub classes -- you may need to explicitly add objects * to the cache in order to ensure that the same objects are always returned by doSelect*() * and retrieveByPK*() calls. * * @param Partner $value A Partner object. * @param string $key (optional) key to use for instance map (for performance boost if key was already calculated externally). */ public static function addInstanceToPool(Partner $obj, $key = null) { if (Propel::isInstancePoolingEnabled()) { if ($key === null) { $key = (string) $obj->getId(); } // if key === null self::$instances[$key] = $obj; } }
/** * Declares an association between this object and a Partner object. * * @param Partner $v * @return LiveChannelSegment The current object (for fluent API support) * @throws PropelException */ public function setPartner(Partner $v = null) { if ($v === null) { $this->setPartnerId(NULL); } else { $this->setPartnerId($v->getId()); } $this->aPartner = $v; // Add binding for other direction of this n:n relationship. // If this object has already been added to the Partner object, it will not be re-added. if ($v !== null) { $v->addLiveChannelSegment($this); } return $this; }
/** * Adds an object to the instance pool. * * Propel keeps cached copies of objects in an instance pool when they are retrieved * from the database. In some cases -- especially when you override doSelect*() * methods in your stub classes -- you may need to explicitly add objects * to the cache in order to ensure that the same objects are always returned by doSelect*() * and retrieveByPK*() calls. * * @param Partner $value A Partner object. * @param string $key (optional) key to use for instance map (for performance boost if key was already calculated externally). */ public static function addInstanceToPool(Partner $obj, $key = null) { if (Propel::isInstancePoolingEnabled()) { if ($key === null) { $key = (string) $obj->getId(); } if (isset(self::$instances[$key]) || count(self::$instances) < kConf::get('max_num_instances_in_pool')) { self::$instances[$key] = $obj; kMemoryManager::registerPeer('PartnerPeer'); } } }
/** * Validate the amount of core and plugin objects found on the template partner. * @param Partner $templatePartner */ private function validateTemplatePartner(Partner $templatePartner) { //access control profiles $c = new Criteria(); $c->add(accessControlPeer::PARTNER_ID, $templatePartner->getId()); $count = accessControlPeer::doCount($c); if ($count > kConf::get('copy_partner_limit_ac_profiles')) { throw new kCoreException("Template partner's number of [accessControlProfiles] objects exceed allowed limit", kCoreException::TEMPLATE_PARTNER_COPY_LIMIT_EXCEEDED); } //categories categoryPeer::setUseCriteriaFilter(false); $c = new Criteria(); $c->addAnd(categoryPeer::PARTNER_ID, $templatePartner->getId()); $c->addAnd(categoryPeer::STATUS, CategoryStatus::ACTIVE); $count = categoryPeer::doCount($c); if ($count > kConf::get('copy_partner_limit_categories')) { throw new kCoreException("Template partner's number of [category] objects exceed allowed limit", kCoreException::TEMPLATE_PARTNER_COPY_LIMIT_EXCEEDED); } categoryPeer::setUseCriteriaFilter(true); //conversion profiles $c = new Criteria(); $c->add(conversionProfile2Peer::PARTNER_ID, $templatePartner->getId()); $count = conversionProfile2Peer::doCount($c); if ($count > kConf::get('copy_partner_limit_conversion_profiles')) { throw new kCoreException("Template partner's number of [conversionProfile] objects exceeds allowed limit", kCoreException::TEMPLATE_PARTNER_COPY_LIMIT_EXCEEDED); } //entries entryPeer::setUseCriteriaFilter(false); $c = new Criteria(); $c->addAnd(entryPeer::PARTNER_ID, $templatePartner->getId()); $c->addAnd(entryPeer::TYPE, entryType::MEDIA_CLIP); $c->addAnd(entryPeer::STATUS, entryStatus::READY); $count = entryPeer::doCount($c); if ($count > kConf::get('copy_partner_limit_entries')) { throw new kCoreException("Template partner's number of MEDIA_CLIP objects exceed allowed limit", kCoreException::TEMPLATE_PARTNER_COPY_LIMIT_EXCEEDED); } entryPeer::setUseCriteriaFilter(true); //playlists entryPeer::setUseCriteriaFilter(false); $c = new Criteria(); $c->addAnd(entryPeer::PARTNER_ID, $templatePartner->getId()); $c->addAnd(entryPeer::TYPE, entryType::PLAYLIST); $c->addAnd(entryPeer::STATUS, entryStatus::READY); $count = entryPeer::doCount($c); if ($count > kConf::get('copy_partner_limit_playlists')) { throw new kCoreException("Template partner's number of PLAYLIST objects exceed allowed limit", kCoreException::TEMPLATE_PARTNER_COPY_LIMIT_EXCEEDED); } entryPeer::setUseCriteriaFilter(true); //flavor params $c = new Criteria(); $c->add(assetParamsPeer::PARTNER_ID, $templatePartner->getId()); $count = assetParamsPeer::doCount($c); if ($count > kConf::get('copy_partner_limit_flavor_params')) { throw new kCoreException("Template partner's number of [flavorParams] objects exceeds allowed limit", kCoreException::TEMPLATE_PARTNER_COPY_LIMIT_EXCEEDED); } //uiconfs uiConfPeer::setUseCriteriaFilter(false); $c = new Criteria(); $c->addAnd(uiConfPeer::PARTNER_ID, $templatePartner->getId()); $c->addAnd(uiConfPeer::OBJ_TYPE, array(uiConf::UI_CONF_TYPE_KDP3, uiConf::UI_CONF_TYPE_WIDGET), Criteria::IN); $c->addAnd(uiConfPeer::STATUS, uiConf::UI_CONF_STATUS_READY); $count = uiConfPeer::doCount($c); if ($count > kConf::get('copy_partner_limit_ui_confs')) { throw new kCoreException("Template partner's number of [uiconf] objects exceeds allowed limit", kCoreException::TEMPLATE_PARTNER_COPY_LIMIT_EXCEEDED); } uiConfPeer::setUseCriteriaFilter(true); //user roles UserRolePeer::setUseCriteriaFilter(false); $c = new Criteria(); $c->addAnd(UserRolePeer::PARTNER_ID, $templatePartner->getId(), Criteria::EQUAL); $c->addAnd(UserRolePeer::STATUS, UserRoleStatus::ACTIVE, Criteria::EQUAL); $count = UserRolePeer::doCount($c); if ($count > kConf::get('copy_partner_limit_user_roles')) { throw new kCoreException("Template partner's number of [userRole] objects exceed allowed limit", kCoreException::TEMPLATE_PARTNER_COPY_LIMIT_EXCEEDED); } UserRolePeer::setUseCriteriaFilter(true); $validatorPlugins = KalturaPluginManager::getPluginInstances('IKalturaObjectValidator'); foreach ($validatorPlugins as $validatorPlugins) { $validatorPlugins->validateObject($templatePartner, IKalturaObjectValidator::OPERATION_COPY); } }
public static function copyEntry(entry $entry, Partner $toPartner = null, $dontCopyUsers = false) { KalturaLog::log("copyEntry - Copying entry [" . $entry->getId() . "] to partner [" . $toPartner->getId() . "]"); $newEntry = $entry->copy(); $newEntry->setIntId(null); $newEntry->setCategories(null); $newEntry->setCategoriesIds(null); if ($toPartner instanceof Partner) { $newEntry->setPartnerId($toPartner->getId()); $newEntry->setSubpId($toPartner->getId() * 100); $newEntry->setAccessControlId($toPartner->getDefaultAccessControlId()); } $newKuser = null; if (!$dontCopyUsers) { // copy the kuser (if the same puser id exists its kuser will be used) kuserPeer::setUseCriteriaFilter(false); $kuser = $entry->getKuser(); $newKuser = kuserPeer::createKuserForPartner($newEntry->getPartnerId(), $kuser->getPuserId()); $newEntry->setKuserId($newKuser->getId()); $newEntry->setCreatorKuserId($newKuser->getId()); kuserPeer::setUseCriteriaFilter(true); } // copy the kshow kshowPeer::setUseCriteriaFilter(false); $kshow = $entry->getKshow(); if ($kshow) { $newKshow = $kshow->copy(); $newKshow->setIntId(null); $newKshow->setPartnerId($toPartner->getId()); $newKshow->setSubpId($toPartner->getId() * 100); if ($newKuser) { $newKshow->setProducerId($newKuser->getId()); } $newKshow->save(); $newEntry->setKshowId($newKshow->getId()); } kshowPeer::setUseCriteriaFilter(true); // reset the statistics myEntryUtils::resetEntryStatistics($newEntry); // set the new partner id into the default category criteria filter $defaultCategoryFilter = categoryPeer::getCriteriaFilter()->getFilter(); $oldPartnerId = $defaultCategoryFilter->get(categoryPeer::PARTNER_ID); $defaultCategoryFilter->remove(categoryPeer::PARTNER_ID); $defaultCategoryFilter->addAnd(categoryPeer::PARTNER_ID, $newEntry->getPartnerId()); // save the entry $newEntry->save(); // restore the original partner id in the default category criteria filter $defaultCategoryFilter->remove(categoryPeer::PARTNER_ID); $defaultCategoryFilter->addAnd(categoryPeer::PARTNER_ID, $oldPartnerId); KalturaLog::log("copyEntry - New entry [" . $newEntry->getId() . "] was created"); // for any type that does not require assets: $shouldCopyDataForNonClip = true; if ($entry->getType() == entryType::MEDIA_CLIP) { $shouldCopyDataForNonClip = false; } if ($entry->getType() == entryType::PLAYLIST) { $shouldCopyDataForNonClip = false; } $shouldCopyDataForClip = false; // only images get their data copied if ($entry->getType() == entryType::MEDIA_CLIP) { if ($entry->getMediaType() != entry::ENTRY_MEDIA_TYPE_VIDEO && $entry->getMediaType() != entry::ENTRY_MEDIA_TYPE_AUDIO) { $shouldCopyDataForClip = true; } } //if entry is a static playlist, link between it and its new child entries if ($entry->getType() == entryType::PLAYLIST) { switch ($entry->getMediaType()) { case entry::ENTRY_MEDIA_TYPE_TEXT: $from = $entry->getDataContent(); KalturaLog::debug("Entries to copy from source static playlist: [{$from}]"); $fromEntryIds = explode(",", $from); $toEntryIds = array(); foreach ($fromEntryIds as $fromEntryId) { $toEntryIds[] = kObjectCopyHandler::getMappedId(entryPeer::OM_CLASS, $fromEntryId); } $newEntry->setDataContent(implode(",", $toEntryIds)); break; case entry::ENTRY_MEDIA_TYPE_XML: list($totalResults, $fromFiltersList) = myPlaylistUtils::getPlaylistFilterListStruct($entry->getDataContent()); $toPlaylistXml = new SimpleXMLElement("<playlist/>"); $toPlaylistXml->addChild("total_results", $totalResults); $toFiltersXml = $toPlaylistXml->addChild("filters"); foreach ($fromFiltersList as $filterXML) { $entryFilter = new entryFilter(); $entryFilter->fillObjectFromXml($filterXML, "_"); if (isset($entryFilter->fields["_matchand_categories_ids"])) { $categoriesIds = explode(",", $entryFilter->fields["_matchand_categories_ids"]); $newCategoriesIds = array(); foreach ($categoriesIds as $categoryId) { $newCategoriesIds[] = kObjectCopyHandler::getMappedId(categoryPeer::OM_CLASS, $categoryId); } $entryFilter->fields["_matchand_categories_ids"] = implode(",", $newCategoriesIds); } if (isset($entryFilter->fields["_matchor_categories_ids"])) { $categoriesIds = explode(",", $entryFilter->fields["_matchor_categories_ids"]); $newCategoriesIds = array(); foreach ($categoriesIds as $categoryId) { $newCategoriesIds[] = kObjectCopyHandler::getMappedId(categoryPeer::OM_CLASS, $categoryId); } $entryFilter->fields["_matchor_categories_ids"] = implode(",", $newCategoriesIds); } if (isset($entryFilter->fields["_in_category_ancestor_id"])) { $categoriesIds = explode(",", $entryFilter->fields["_in_category_ancestor_id"]); $newCategoriesIds = array(); foreach ($categoriesIds as $categoryId) { $newCategoriesIds[] = kObjectCopyHandler::getMappedId(categoryPeer::OM_CLASS, $categoryId); } $entryFilter->fields["_in_category_ancestor_id"] = implode(",", $newCategoriesIds); } $toEntryFilterXML = $toFiltersXml->addChild("filter"); $toEntryFilterXML = $entryFilter->toXml($toEntryFilterXML); } $newEntry->setDataContent($toPlaylistXml->asXML()); break; } } if ($shouldCopyDataForNonClip || $shouldCopyDataForClip) { // copy the data $from = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA); // replaced__getDataPath $to = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA); // replaced__getDataPath KalturaLog::log("copyEntriesByType - copying entry data [" . $from . "] to [" . $to . "]"); kFileSyncUtils::softCopy($from, $to); } $ismFrom = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISM); if (kFileSyncUtils::fileSync_exists($ismFrom)) { $ismTo = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISM); KalturaLog::log("copying entry ism [" . $ismFrom . "] to [" . $ismTo . "]"); kFileSyncUtils::softCopy($ismFrom, $ismTo); } $ismcFrom = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISMC); if (kFileSyncUtils::fileSync_exists($ismcFrom)) { $ismcTo = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISMC); KalturaLog::log("copying entry ism [" . $ismcFrom . "] to [" . $ismcTo . "]"); kFileSyncUtils::softCopy($ismcFrom, $ismcTo); } $from = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_THUMB); // replaced__getThumbnailPath $considerCopyThumb = true; // if entry is image - data is thumbnail, and it was copied if ($entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_IMAGE) { $considerCopyThumb = false; } // if entry is not clip, and there is no file in both DCs - nothing to copy if ($entry->getType() != entryType::MEDIA_CLIP && !kFileSyncUtils::file_exists($from, true)) { $considerCopyThumb = false; } if ($considerCopyThumb) { $skipThumb = false; // don't attempt to copy a thumbnail for images - it's the same as the data which was just created if ($entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_AUDIO) { // check if audio entry has real thumb, if not - don't copy thumb. $originalFileSync = kFileSyncUtils::getOriginFileSyncForKey($from, false); if (!$originalFileSync) { $skipThumb = true; } } if (!$skipThumb) { $to = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_THUMB); // replaced__getThumbnailPath KalturaLog::log("copyEntriesByType - copying entry thumbnail [" . $from . "] to [" . $to . "]"); kFileSyncUtils::softCopy($from, $to); } } // added by Tan-Tan 12/01/2010 to support falvors copy $sourceAssets = assetPeer::retrieveByEntryId($entry->getId()); foreach ($sourceAssets as $sourceAsset) { $sourceAsset->copyToEntry($newEntry->getId(), $newEntry->getPartnerId()); } // copy relationships to categories KalturaLog::debug('Copy relationships to categories from entry [' . $entry->getId() . '] to entry [' . $newEntry->getId() . ']'); $c = KalturaCriteria::create(categoryEntryPeer::OM_CLASS); $c->addAnd(categoryEntryPeer::ENTRY_ID, $entry->getId()); $c->addAnd(categoryEntryPeer::STATUS, CategoryEntryStatus::ACTIVE, Criteria::EQUAL); $c->addAnd(categoryEntryPeer::PARTNER_ID, $entry->getPartnerId()); categoryEntryPeer::setUseCriteriaFilter(false); $categoryEntries = categoryEntryPeer::doSelect($c); categoryEntryPeer::setUseCriteriaFilter(true); // Create srcCategoryIdToDstCategoryIdMap - a map of source partner category ids -> dst. partner category ids // // Build src category IDs set $srcCategoryIdSet = array(); foreach ($categoryEntries as $categoryEntry) { $srcCategoryIdSet[] = $categoryEntry->getCategoryId(); } $illegalCategoryStatus = array(CategoryStatus::DELETED, CategoryStatus::PURGED); // Get src category objects $c = KalturaCriteria::create(categoryPeer::OM_CLASS); $c->add(categoryPeer::ID, $srcCategoryIdSet, Criteria::IN); $c->addAnd(categoryPeer::PARTNER_ID, $entry->getPartnerId()); $c->addAnd(categoryPeer::STATUS, $illegalCategoryStatus, Criteria::NOT_IN); categoryPeer::setUseCriteriaFilter(false); $srcCategories = categoryPeer::doSelect($c); categoryPeer::setUseCriteriaFilter(true); // Map the category names to their IDs $fullNamesToSrcCategoryIdMap = array(); foreach ($srcCategories as $category) { $fullNamesToSrcCategoryIdMap[$category->getFullName()] = $category->getId(); } // Get dst. partner categories based on src. category full-names $c = KalturaCriteria::create(categoryPeer::OM_CLASS); $c->add(categoryPeer::FULL_NAME, array_keys($fullNamesToSrcCategoryIdMap), KalturaCriteria::IN); $c->addAnd(categoryPeer::PARTNER_ID, $newEntry->getPartnerId()); $c->addAnd(categoryPeer::STATUS, $illegalCategoryStatus, Criteria::NOT_IN); categoryPeer::setUseCriteriaFilter(false); $dstCategories = categoryPeer::doSelect($c); categoryPeer::setUseCriteriaFilter(true); $srcCategoryIdToDstCategoryIdMap = array(); foreach ($dstCategories as $dstCategory) { $fullName = $dstCategory->getFullName(); if (array_key_exists($fullName, $fullNamesToSrcCategoryIdMap)) { $srcCategoryId = $fullNamesToSrcCategoryIdMap[$fullName]; $srcCategoryIdToDstCategoryIdMap[$srcCategoryId] = $dstCategory->getId(); } } foreach ($categoryEntries as $categoryEntry) { /* @var $categoryEntry categoryEntry */ $newCategoryEntry = $categoryEntry->copy(); $newCategoryEntry->setPartnerId($newEntry->getPartnerId()); $newCategoryEntry->setEntryId($newEntry->getId()); $srcCategoryId = $categoryEntry->getCategoryId(); if (!array_key_exists($srcCategoryId, $srcCategoryIdToDstCategoryIdMap)) { continue; // Skip the category_entry's creation } $dstCategoryId = $srcCategoryIdToDstCategoryIdMap[$srcCategoryId]; $newCategoryEntry->setCategoryId($dstCategoryId); categoryPeer::setUseCriteriaFilter(false); entryPeer::setUseCriteriaFilter(false); $newCategoryEntry->save(); entryPeer::setUseCriteriaFilter(true); categoryPeer::setUseCriteriaFilter(true); } return $newEntry; }
/** * Function adds bulk upload job to the queue * @param Partner $partner * @param kBulkUploadJobData $jobData * @param string $bulkUploadType * @throws APIException * @return BatchJob */ public static function addBulkUploadJob(Partner $partner, kBulkUploadJobData $jobData, $bulkUploadType = null, $objectId = null, $objectType = null) { KalturaLog::debug("adding BulkUpload job"); $job = new BatchJob(); $job->setPartnerId($partner->getId()); $job->setJobType(BatchJobType::BULKUPLOAD); $job->setJobSubType($bulkUploadType); if (!is_null($objectId) && !is_null($objectType)) { $job->setObjectId($objectId); $job->setObjectType($objectType); } if (is_null($jobData)) { throw new APIException(APIErrors::BULK_UPLOAD_BULK_UPLOAD_TYPE_NOT_VALID, $bulkUploadType); } $job->setStatus(BatchJob::BATCHJOB_STATUS_DONT_PROCESS); $job = kJobsManager::addJob($job, $jobData, BatchJobType::BULKUPLOAD, $bulkUploadType); if (!is_null($jobData->getFilePath())) { $syncKey = $job->getSyncKey(BatchJob::FILE_SYNC_BATCHJOB_SUB_TYPE_BULKUPLOAD); // kFileSyncUtils::file_put_contents($syncKey, file_get_contents($csvFileData["tmp_name"])); try { kFileSyncUtils::moveFromFile($jobData->getFilePath(), $syncKey, true); } catch (Exception $e) { KalturaLog::err($e); throw new APIException(APIErrors::BULK_UPLOAD_CREATE_CSV_FILE_SYNC_ERROR); } $filePath = kFileSyncUtils::getLocalFilePathForKey($syncKey); $jobData->setFilePath($filePath); } if (!$jobData->getBulkUploadObjectType()) { $jobData->setBulkUploadObjectType(BulkUploadObjectType::ENTRY); } if ($jobData->getBulkUploadObjectType() == BulkUploadObjectType::ENTRY && !$jobData->getObjectData()->getConversionProfileId()) { $jobData->setConversionProfileId($partner->getDefaultConversionProfileId()); $kmcVersion = $partner->getKmcVersion(); $check = null; if ($kmcVersion < 2) { $check = ConversionProfilePeer::retrieveByPK($jobData->getConversionProfileId()); } else { $check = conversionProfile2Peer::retrieveByPK($jobData->getConversionProfileId()); } if (!$check) { throw new APIException(APIErrors::CONVERSION_PROFILE_ID_NOT_FOUND, $jobData->getConversionProfileId()); } } $job->setData($jobData); return kJobsManager::updateBatchJob($job, BatchJob::BATCHJOB_STATUS_PENDING); }
public static function copyEntry(entry $entry, Partner $toPartner = null, $dontCopyUsers = false) { KalturaLog::log("copyEntry - Copying entry [" . $entry->getId() . "] to partner [" . $toPartner->getId() . "]"); $newEntry = $entry->copy(); $newEntry->setIntId(null); $newEntry->setCategories(null); $newEntry->setCategoriesIds(null); if ($toPartner instanceof Partner) { $newEntry->setPartnerId($toPartner->getId()); $newEntry->setSubpId($toPartner->getId() * 100); $newEntry->setAccessControlId($toPartner->getDefaultAccessControlId()); } $newKuser = null; if (!$dontCopyUsers) { // copy the kuser (if the same puser id exists its kuser will be used) kuserPeer::setUseCriteriaFilter(false); $kuser = $entry->getKuser(); $newKuser = kuserPeer::createKuserForPartner($newEntry->getPartnerId(), $kuser->getPuserId()); $newEntry->setKuserId($newKuser->getId()); $newEntry->setCreatorKuserId($newKuser->getId()); kuserPeer::setUseCriteriaFilter(true); } // copy the kshow kshowPeer::setUseCriteriaFilter(false); $kshow = $entry->getKshow(); if ($kshow) { $newKshow = $kshow->copy(); $newKshow->setIntId(null); $newKshow->setPartnerId($toPartner->getId()); $newKshow->setSubpId($toPartner->getId() * 100); if ($newKuser) { $newKshow->setProducerId($newKuser->getId()); } $newKshow->save(); $newEntry->setKshowId($newKshow->getId()); } kshowPeer::setUseCriteriaFilter(true); // reset the statistics myEntryUtils::resetEntryStatistics($newEntry); // set the new partner id into the default category criteria filter $defaultCategoryFilter = categoryPeer::getCriteriaFilter()->getFilter(); $oldPartnerId = $defaultCategoryFilter->get(categoryPeer::PARTNER_ID); $defaultCategoryFilter->remove(categoryPeer::PARTNER_ID); $defaultCategoryFilter->addAnd(categoryPeer::PARTNER_ID, $newEntry->getPartnerId()); // save the entry $newEntry->save(); // restore the original partner id in the default category criteria filter $defaultCategoryFilter->remove(categoryPeer::PARTNER_ID); $defaultCategoryFilter->addAnd(categoryPeer::PARTNER_ID, $oldPartnerId); KalturaLog::log("copyEntry - New entry [" . $newEntry->getId() . "] was created"); if ($entry->getStatus() != entryStatus::READY) { $clonePendingEntries = $entry->getClonePendingEntries(); $clonePendingEntries[] = $newEntry->getId(); $entry->setClonePendingEntries($clonePendingEntries); $entry->save(); } else { self::copyEntryData($entry, $newEntry); } //if entry is a static playlist, link between it and its new child entries if ($entry->getType() == entryType::PLAYLIST) { switch ($entry->getMediaType()) { case entry::ENTRY_MEDIA_TYPE_TEXT: $from = $entry->getDataContent(); KalturaLog::debug("Entries to copy from source static playlist: [{$from}]"); $fromEntryIds = explode(",", $from); $toEntryIds = array(); foreach ($fromEntryIds as $fromEntryId) { $toEntryIds[] = kObjectCopyHandler::getMappedId(entryPeer::OM_CLASS, $fromEntryId); } $newEntry->setDataContent(implode(",", $toEntryIds)); break; case entry::ENTRY_MEDIA_TYPE_XML: list($totalResults, $fromFiltersList) = myPlaylistUtils::getPlaylistFilterListStruct($entry->getDataContent()); $toPlaylistXml = new SimpleXMLElement("<playlist/>"); $toPlaylistXml->addChild("total_results", $totalResults); $toFiltersXml = $toPlaylistXml->addChild("filters"); foreach ($fromFiltersList as $filterXML) { $entryFilter = new entryFilter(); $entryFilter->fillObjectFromXml($filterXML, "_"); if (isset($entryFilter->fields["_matchand_categories_ids"])) { $categoriesIds = explode(",", $entryFilter->fields["_matchand_categories_ids"]); $newCategoriesIds = array(); foreach ($categoriesIds as $categoryId) { $newCategoriesIds[] = kObjectCopyHandler::getMappedId(categoryPeer::OM_CLASS, $categoryId); } $entryFilter->fields["_matchand_categories_ids"] = implode(",", $newCategoriesIds); } if (isset($entryFilter->fields["_matchor_categories_ids"])) { $categoriesIds = explode(",", $entryFilter->fields["_matchor_categories_ids"]); $newCategoriesIds = array(); foreach ($categoriesIds as $categoryId) { $newCategoriesIds[] = kObjectCopyHandler::getMappedId(categoryPeer::OM_CLASS, $categoryId); } $entryFilter->fields["_matchor_categories_ids"] = implode(",", $newCategoriesIds); } if (isset($entryFilter->fields["_in_category_ancestor_id"])) { $categoriesIds = explode(",", $entryFilter->fields["_in_category_ancestor_id"]); $newCategoriesIds = array(); foreach ($categoriesIds as $categoryId) { $newCategoriesIds[] = kObjectCopyHandler::getMappedId(categoryPeer::OM_CLASS, $categoryId); } $entryFilter->fields["_in_category_ancestor_id"] = implode(",", $newCategoriesIds); } $toEntryFilterXML = $toFiltersXml->addChild("filter"); $toEntryFilterXML = $entryFilter->toXml($toEntryFilterXML); } $newEntry->setDataContent($toPlaylistXml->asXML()); break; } } // copy relationships to categories KalturaLog::debug('Copy relationships to categories from entry [' . $entry->getId() . '] to entry [' . $newEntry->getId() . ']'); $c = KalturaCriteria::create(categoryEntryPeer::OM_CLASS); $c->addAnd(categoryEntryPeer::ENTRY_ID, $entry->getId()); $c->addAnd(categoryEntryPeer::STATUS, CategoryEntryStatus::ACTIVE, Criteria::EQUAL); $c->addAnd(categoryEntryPeer::PARTNER_ID, $entry->getPartnerId()); categoryEntryPeer::setUseCriteriaFilter(false); $categoryEntries = categoryEntryPeer::doSelect($c); categoryEntryPeer::setUseCriteriaFilter(true); // Create srcCategoryIdToDstCategoryIdMap - a map of source partner category ids -> dst. partner category ids // // Build src category IDs set $srcCategoryIdSet = array(); foreach ($categoryEntries as $categoryEntry) { $srcCategoryIdSet[] = $categoryEntry->getCategoryId(); } $illegalCategoryStatus = array(CategoryStatus::DELETED, CategoryStatus::PURGED); // Get src category objects $c = KalturaCriteria::create(categoryPeer::OM_CLASS); $c->add(categoryPeer::ID, $srcCategoryIdSet, Criteria::IN); $c->addAnd(categoryPeer::PARTNER_ID, $entry->getPartnerId()); $c->addAnd(categoryPeer::STATUS, $illegalCategoryStatus, Criteria::NOT_IN); categoryPeer::setUseCriteriaFilter(false); $srcCategories = categoryPeer::doSelect($c); categoryPeer::setUseCriteriaFilter(true); // Map the category names to their IDs $fullNamesToSrcCategoryIdMap = array(); foreach ($srcCategories as $category) { $fullNamesToSrcCategoryIdMap[$category->getFullName()] = $category->getId(); } // Get dst. partner categories based on src. category full-names $c = KalturaCriteria::create(categoryPeer::OM_CLASS); $c->add(categoryPeer::FULL_NAME, array_keys($fullNamesToSrcCategoryIdMap), KalturaCriteria::IN); $c->addAnd(categoryPeer::PARTNER_ID, $newEntry->getPartnerId()); $c->addAnd(categoryPeer::STATUS, $illegalCategoryStatus, Criteria::NOT_IN); categoryPeer::setUseCriteriaFilter(false); $dstCategories = categoryPeer::doSelect($c); categoryPeer::setUseCriteriaFilter(true); $srcCategoryIdToDstCategoryIdMap = array(); foreach ($dstCategories as $dstCategory) { $fullName = $dstCategory->getFullName(); if (array_key_exists($fullName, $fullNamesToSrcCategoryIdMap)) { $srcCategoryId = $fullNamesToSrcCategoryIdMap[$fullName]; $srcCategoryIdToDstCategoryIdMap[$srcCategoryId] = $dstCategory->getId(); } } foreach ($categoryEntries as $categoryEntry) { /* @var $categoryEntry categoryEntry */ $newCategoryEntry = $categoryEntry->copy(); $newCategoryEntry->setPartnerId($newEntry->getPartnerId()); $newCategoryEntry->setEntryId($newEntry->getId()); $srcCategoryId = $categoryEntry->getCategoryId(); if (!array_key_exists($srcCategoryId, $srcCategoryIdToDstCategoryIdMap)) { continue; // Skip the category_entry's creation } $dstCategoryId = $srcCategoryIdToDstCategoryIdMap[$srcCategoryId]; $newCategoryEntry->setCategoryId($dstCategoryId); categoryPeer::setUseCriteriaFilter(false); entryPeer::setUseCriteriaFilter(false); $newCategoryEntry->save(); entryPeer::setUseCriteriaFilter(true); categoryPeer::setUseCriteriaFilter(true); } return $newEntry; }
public static function getWhitelabelData(Partner $partner, $param = null) { // no param, return null if (!$param) { return null; } if (kConf::hasMap("whitelabel")) { $whitelabel = kConf::getMap("whitelabel"); $params = array(); // Search for partner Id if (array_key_exists($partner->getId(), $whitelabel)) { $params = $whitelabel[$partner->getId()]; } else { if (array_key_exists($partner->getPartnerParentId(), $whitelabel)) { $params = $whitelabel[$partner->getPartnerParentId()]; } } // If we have params, find out param if (is_array($params) && array_key_exists($param, $params)) { return $params[$param]; } return null; } return null; }
public static function fromPartner(Partner $partner) { $item = new KalturaSystemPartnerUsageItem(); if ($partner) { $item->partnerStatus = $partner->getStatus(); $item->partnerId = $partner->getId(); $item->partnerName = $partner->getPartnerName(); $item->partnerCreatedAt = $partner->getCreatedAt(null); $item->partnerPackage = $partner->getPartnerPackage(); } return $item; }
private static function isMemberOfCategory($allCategoriesEntry, entry $entry, Partner $partner, $kuserId = null, $ks = null, $ksPrivacyContexts = null) { $categories = array(); foreach ($allCategoriesEntry as $categoryEntry) { $categories[] = $categoryEntry->getCategoryId(); } //if entry doesn't belong to any category. $categories[] = category::CATEGORY_ID_THAT_DOES_NOT_EXIST; $c = KalturaCriteria::create(categoryPeer::OM_CLASS); $c->add(categoryPeer::ID, $categories, Criteria::IN); $privacy = array(category::formatPrivacy(PrivacyType::ALL, $partner->getId())); if ($ks && !$ks->isAnonymousSession()) { $privacy[] = category::formatPrivacy(PrivacyType::AUTHENTICATED_USERS, $partner->getId()); } $crit = $c->getNewCriterion(categoryPeer::PRIVACY, $privacy, Criteria::IN); if ($ks) { if (!$ksPrivacyContexts || trim($ksPrivacyContexts) == '') { $ksPrivacyContexts = self::DEFAULT_CONTEXT . $partner->getId(); } $c->add(categoryPeer::PRIVACY_CONTEXTS, $ksPrivacyContexts, KalturaCriteria::IN_LIKE); // kuser is set on the category as member // this ugly code is temporery - since we have a bug in sphinxCriteria::getAllCriterionFields if ($kuserId) { // get the groups that the user belongs to in case she is not associated to the category directly $kgroupIds = KuserKgroupPeer::retrieveKgroupIdsByKuserId($kuserId); $kgroupIds[] = $kuserId; $membersCrit = $c->getNewCriterion(categoryPeer::MEMBERS, $kgroupIds, KalturaCriteria::IN_LIKE); $membersCrit->addOr($crit); $crit = $membersCrit; } } else { //no ks = set privacy context to default. $c->add(categoryPeer::PRIVACY_CONTEXTS, array(self::DEFAULT_CONTEXT . $partner->getId()), KalturaCriteria::IN_LIKE); } $c->addAnd($crit); //remove default FORCED criteria since categories that has display in search = public - doesn't mean that all of their entries are public KalturaCriterion::disableTag(KalturaCriterion::TAG_ENTITLEMENT_CATEGORY); $category = categoryPeer::doSelectOne($c); KalturaCriterion::restoreTag(KalturaCriterion::TAG_ENTITLEMENT_CATEGORY); if ($category) { KalturaLog::debug('Entry [' . print_r($entry->getId(), true) . '] entitled: ks user is a member of this category or category privacy is set to public of authenticated'); return true; } KalturaLog::debug('Entry [' . print_r($entry->getId(), true) . '] not entitled'); return false; }
/** * This function returns the matching delivery object for a given partner and delivery protocol * @param Partner $partner The partner * @param PlaybackProtocol $streamerType - The protocol * @param DeliveryProfileDynamicAttributes $deliveryAttributes - constraints on delivery such as media protocol, flv support, etc.. * @param string $cdnHost - The requesting CdnHost if known / preffered. * @param boolean $isSecured whether we're interested in secured delivery profile */ public static function getDeliveryByPartner(Partner $partner, $streamerType, DeliveryProfileDynamicAttributes $deliveryAttributes, $cdnHost = null, $isSecured = false) { $partnerId = $partner->getId(); $deliveryIds = $partner->getDeliveryProfileIds(); // if the partner has an override for the required format on the partner object - use that if (array_key_exists($streamerType, $deliveryIds)) { $deliveryIds = $deliveryIds[$streamerType]; self::filterDeliveryProfilesArray($deliveryIds, $deliveryAttributes); $deliveries = DeliveryProfilePeer::retrieveByPKs($deliveryIds); $cmp = new DeliveryProfileComparator($isSecured, $cdnHost); array_walk($deliveries, "DeliveryProfileComparator::decorateWithUserOrder", $deliveryIds); uasort($deliveries, array($cmp, "compare")); } else { $c = new Criteria(); $c->add(DeliveryProfilePeer::PARTNER_ID, PartnerPeer::GLOBAL_PARTNER); $c->add(DeliveryProfilePeer::IS_DEFAULT, true); $c->add(DeliveryProfilePeer::STREAMER_TYPE, $streamerType); $c->add(DeliveryProfilePeer::TYPE, self::getAllLiveDeliveryProfileTypes(), Criteria::NOT_IN); if ($isSecured) { $c->addDescendingOrderByColumn('(' . DeliveryProfilePeer::TOKENIZER . ' is not null)'); } else { $c->addDescendingOrderByColumn('(' . DeliveryProfilePeer::TOKENIZER . ' is null)'); } self::filterDeliveryProfilesCriteria($c, $deliveryAttributes); $orderBy = "(" . DeliveryProfilePeer::PARTNER_ID . "<>{$partnerId})"; $c->addAscendingOrderByColumn($orderBy); $c->addAscendingOrderByColumn(DeliveryProfilePeer::PRIORITY); $deliveries = self::doSelect($c); } $delivery = self::selectByDeliveryAttributes($deliveries, $deliveryAttributes); if ($delivery) { KalturaLog::info("Delivery ID for partnerId [{$partnerId}] and streamer type [{$streamerType}] is " . $delivery->getId()); } else { $mediaProtocol = $deliveryAttributes ? $deliveryAttributes->getMediaProtocol() : null; KalturaLog::err("Delivery ID can't be determined for partnerId [{$partnerId}] streamer type [{$streamerType}] and media protocol [{$mediaProtocol}]"); } return $delivery; }
/** * * add ps2 permission for given partner * @param Partner $partner */ public static function sePermissionForPartner(Partner $partner, $permission) { $ps2Permission = new Permission(); $ps2Permission->setName($permission); $ps2Permission->setPartnerId($partner->getId()); $ps2Permission->setStatus(PermissionStatus::ACTIVE); $ps2Permission->setType(PermissionType::SPECIAL_FEATURE); $ps2Permission->save(); }
function handleFlvSrcAssetsWithMbrTag(Partner $partner, $should_do_flavors_to_web = NULL, $force_upgrade = NULL) { $c = new Criteria(); $c->add(assetPeer::PARTNER_ID, $partner->getId()); $c->add(assetPeer::TAGS, 'mbr'); $c->add(assetPeer::FILE_EXT, 'flv'); $c->add(assetPeer::FLAVOR_PARAMS_ID, 0); assetPeer::setDefaultCriteriaFilter(false); $flavorsCount = assetPeer::doCount($c); assetPeer::setDefaultCriteriaFilter(true); if ($flavorsCount && $should_do_flavors_to_web != 'convert_flavors' && $should_do_flavors_to_web != 'skip_flavors') { KalturaLog::debug("found {$flavorsCount} flavors with only 'mbr' tag.\n\n\t\t\t\t\t\tif you want to convert them run: php {$argv[0]} {$argv[1]} convert_flavors \n\n\t\t\t\t\t\tif you don't want to convert them, run: php {$argv[0]} {$argv[1]} skip_flavors"); if ($force_upgrade == 'force') { convertFlavorsTags($partner, $c); if (DEBUG) { KalturaLog::debug("This was dry-run, exiting"); die; } else { KalturaLog::debug("{$flavorsCount} flavors were fixed, going to upgrade partner"); } } else { die; } } else { if ($flavorsCount && $should_do_flavors_to_web == 'skip_flavors') { KalturaLog::debug("Not converting flavors tags and going on"); if (DEBUG) { KalturaLog::debug("This was a dry-run, exiting"); die; } } else { if ($flavorsCount && $should_do_flavors_to_web == 'convert_flavors') { convertFlavorsTags($partner, $c); if (DEBUG) { KalturaLog::debug("This was a dry-run, exiting"); die; } } else { KalturaLog::debug("There was no flavor tags to convert"); } } } }
/** * * @param Partner $toPartner * @param array $permissionArray * * @return bool */ public static function isPartnerPermittedForCopy(Partner $toPartner, array $permissionArray) { foreach ($permissionArray as $permission) { if (!PermissionPeer::isValidForPartner($permission, $toPartner->getId())) { return false; } } return true; }
public static function copyEntry(entry $entry, Partner $toPartner = null, $dontCopyUsers = false) { KalturaLog::log("copyEntry - Copying entry [" . $entry->getId() . "] to partner [" . $toPartner->getId() . "]"); $newEntry = $entry->copy(); $newEntry->setIntId(null); if ($toPartner instanceof Partner) { $newEntry->setPartnerId($toPartner->getId()); $newEntry->setSubpId($toPartner->getId() * 100); $newEntry->setAccessControlId($toPartner->getDefaultAccessControlId()); $flavorParamsStr = $entry->getFlavorParamsIds(); $flavorParams = explode(',', $flavorParamsStr); $newFlavorParams = array(); foreach ($flavorParams as $flavorParamsId) { $newFlavorParamsId = kObjectCopyHandler::getMappedId('flavorParams', $flavorParamsId); if (is_null($newFlavorParamsId)) { $newFlavorParamsId = $flavorParamsId; } $newFlavorParams[] = $newFlavorParamsId; } $newEntry->setFlavorParamsIds(implode(',', $newFlavorParams)); } $newKuser = null; if (!$dontCopyUsers) { // copy the kuser (if the same puser id exists its kuser will be used) kuserPeer::setUseCriteriaFilter(false); $kuser = $entry->getKuser(); $newKuser = kuserPeer::createKuserForPartner($newEntry->getPartnerId(), $kuser->getPuserId()); $newEntry->setKuserId($newKuser->getId()); kuserPeer::setUseCriteriaFilter(true); } // copy the kshow kshowPeer::setUseCriteriaFilter(false); $kshow = $entry->getKshow(); if ($kshow) { $newKshow = $kshow->copy(); $newKshow->setIntId(null); $newKshow->setPartnerId($toPartner->getId()); $newKshow->setSubpId($toPartner->getId() * 100); if ($newKuser) { $newKshow->setProducerId($newKuser->getId()); } $newKshow->save(); $newEntry->setKshowId($newKshow->getId()); } kshowPeer::setUseCriteriaFilter(true); // reset the statistics myEntryUtils::resetEntryStatistics($newEntry); // set the new partner id into the default category criteria filter $defaultCategoryFilter = categoryPeer::getCriteriaFilter()->getFilter(); $oldPartnerId = $defaultCategoryFilter->get(categoryPeer::PARTNER_ID); $defaultCategoryFilter->remove(categoryPeer::PARTNER_ID); $defaultCategoryFilter->addAnd(categoryPeer::PARTNER_ID, $newEntry->getPartnerId()); // save the entry $newEntry->save(); // restore the original partner id in the default category criteria filter $defaultCategoryFilter->remove(categoryPeer::PARTNER_ID); $defaultCategoryFilter->addAnd(categoryPeer::PARTNER_ID, $oldPartnerId); KalturaLog::log("copyEntry - New entry [" . $newEntry->getId() . "] was created"); // for any type that does not require assets: $shouldCopyDataForNonClip = $entry->getType() != entryType::MEDIA_CLIP; $shouldCopyDataForClip = false; // only images get their data copied if ($entry->getType() == entryType::MEDIA_CLIP) { if ($entry->getMediaType() != entry::ENTRY_MEDIA_TYPE_VIDEO && $entry->getMediaType() != entry::ENTRY_MEDIA_TYPE_AUDIO) { $shouldCopyDataForClip = true; } } if ($shouldCopyDataForNonClip || $shouldCopyDataForClip) { // copy the data $from = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA); // replaced__getDataPath $to = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_DATA); // replaced__getDataPath KalturaLog::log("copyEntriesByType - copying entry data [" . $from . "] to [" . $to . "]"); kFileSyncUtils::softCopy($from, $to); } $ismFrom = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISM); if (kFileSyncUtils::fileSync_exists($ismFrom)) { $ismTo = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISM); KalturaLog::log("copying entry ism [" . $ismFrom . "] to [" . $ismTo . "]"); kFileSyncUtils::softCopy($ismFrom, $ismTo); } $ismcFrom = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISMC); if (kFileSyncUtils::fileSync_exists($ismcFrom)) { $ismcTo = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_ISMC); KalturaLog::log("copying entry ism [" . $ismcFrom . "] to [" . $ismcTo . "]"); kFileSyncUtils::softCopy($ismcFrom, $ismcTo); } $from = $entry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_THUMB); // replaced__getThumbnailPath $considerCopyThumb = true; // if entry is image - data is thumbnail, and it was copied if ($entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_IMAGE) { $considerCopyThumb = false; } // if entry is not clip, and there is no file in both DCs - nothing to copy if ($entry->getType() != entryType::MEDIA_CLIP && !kFileSyncUtils::file_exists($from, true)) { $considerCopyThumb = false; } if ($considerCopyThumb) { $skipThumb = false; // don't attempt to copy a thumbnail for images - it's the same as the data which was just created if ($entry->getMediaType() == entry::ENTRY_MEDIA_TYPE_AUDIO) { // check if audio entry has real thumb, if not - don't copy thumb. $originalFileSync = kFileSyncUtils::getOriginFileSyncForKey($from, false); if (!$originalFileSync) { $skipThumb = true; } } if (!$skipThumb) { $to = $newEntry->getSyncKey(entry::FILE_SYNC_ENTRY_SUB_TYPE_THUMB); // replaced__getThumbnailPath KalturaLog::log("copyEntriesByType - copying entry thumbnail [" . $from . "] to [" . $to . "]"); kFileSyncUtils::softCopy($from, $to); } } // added by Tan-Tan 12/01/2010 to support falvors copy $sourceFlavorAssets = flavorAssetPeer::retrieveByEntryId($entry->getId()); foreach ($sourceFlavorAssets as $sourceFlavorAsset) { $sourceFlavorAsset->copyToEntry($newEntry->getId(), $newEntry->getPartnerId()); } }
public static function copyAccessControls(Partner $fromPartner, Partner $toPartner) { $copiedList = array(); KalturaLog::log("Copying access control profiles from partner [" . $fromPartner->getId() . "] to partner [" . $toPartner->getId() . "]"); $c = new Criteria(); $c->add(accessControlPeer::PARTNER_ID, $fromPartner->getId()); $accessControls = accessControlPeer::doSelect($c); foreach ($accessControls as $accessControl) { $newAccessControl = $accessControl->copy(); $newAccessControl->setPartnerId($toPartner->getId()); $newAccessControl->save(); KalturaLog::log("Copied [" . $accessControl->getId() . "], new id is [" . $newAccessControl->getId() . "]"); $copiedList[$accessControl->getId()] = $newAccessControl->getId(); } $toPartner->save(); // make sure access control profile is set on the new partner if (!$toPartner->getDefaultAccessControlId()) { $fromPartnerAccessControl = $fromPartner->getDefaultAccessControlId(); if ($fromPartnerAccessControl && key_exists($fromPartnerAccessControl, $copiedList)) { $toPartner->setDefaultAccessControlId($copiedList[$fromPartnerAccessControl]); $toPartner->save(); } } }
private function createNewPartner($parnter_name, $contact, $email, $ID_is_for, $SDK_terms_agreement, $description, $website_url, $password = null, $partner = null) { $secret = md5($this->str_makerand(5, 10, true, false, true)); $admin_secret = md5($this->str_makerand(5, 10, true, false, true)); $newPartner = new Partner(); if ($parnter_name) { $newPartner->setPartnerName($parnter_name); } $newPartner->setAdminSecret($admin_secret); $newPartner->setSecret($secret); $newPartner->setAdminName($contact); $newPartner->setAdminEmail($email); $newPartner->setUrl1($website_url); if ($ID_is_for === "commercial_use" || $ID_is_for === CommercialUseType::COMMERCIAL_USE) { $newPartner->setCommercialUse(true); } else { //($ID_is_for == "non-commercial_use") || $ID_is_for === CommercialUseType::NON_COMMERCIAL_USE) $newPartner->setCommercialUse(false); } $newPartner->setDescription($description); $newPartner->setKsMaxExpiryInSeconds(86400); $newPartner->setModerateContent(false); $newPartner->setNotify(false); $newPartner->setAppearInSearch(mySearchUtils::DISPLAY_IN_SEARCH_KALTURA_NETWORK); $newPartner->setIsFirstLogin(true); /* fix drupal5 module partner type */ //var_dump($description); if ($this->partnerParentId) { // this is a child partner of some VAR/partner GROUP $newPartner->setPartnerParentId($this->partnerParentId); $newPartner->setMonitorUsage(0); } if (substr_count($description, 'Drupal module|')) { $newPartner->setType(102); if ($partner) { $partner->setType(102); } } if ($partner) { if ($partner->getType()) { $newPartner->setType($partner->getType()); } if ($partner->getContentCategories()) { $newPartner->setContentCategories($partner->getContentCategories()); } if ($partner->getPhone()) { $newPartner->setPhone($partner->getPhone()); } if ($partner->getDescribeYourself()) { $newPartner->setDescribeYourself($partner->getDescribeYourself()); } if ($partner->getAdultContent()) { $newPartner->setAdultContent($partner->getAdultContent()); } if ($partner->getDefConversionProfileType()) { $newPartner->setDefConversionProfileType($partner->getDefConversionProfileType()); } // new fields of registration form if ($partner->getFirstName()) { $newPartner->setFirstName($partner->getFirstName()); } if ($partner->getLastName()) { $newPartner->setLastName($partner->getLastName()); } if ($partner->getCountry()) { $newPartner->setCountry($partner->getCountry()); } if ($partner->getState()) { $newPartner->setState($partner->getState()); } if ($partner->getAdditionalParams() && is_array($partner->getAdditionalParams()) && count($partner->getAdditionalParams())) { $newPartner->setAdditionalParams($partner->getAdditionalParams()); } } $newPartner->save(); // if name was left empty - which should not happen - use id as name if (!$parnter_name) { $parnter_name = $newPartner->getId(); } $newPartner->setPartnerName($parnter_name); $newPartner->setPrefix($newPartner->getId()); $newPartner->setPartnerAlias(md5($newPartner->getId() . 'kaltura partner')); // set default conversion profile for trial accounts if ($newPartner->getType() == Partner::PARTNER_TYPE_KMC) { $newPartner->setDefConversionProfileType(ConversionProfile::DEFAULT_TRIAL_COVERSION_PROFILE_TYPE); } $newPartner->save(); $partner_id = $newPartner->getId(); widget::createDefaultWidgetForPartner($partner_id, $this->createNewSubPartner($newPartner)); $fromPartner = PartnerPeer::retrieveByPK(kConf::get("template_partner_id")); if (!$fromPartner) { KalturaLog::log("Template content partner was not found!"); } else { myPartnerUtils::copyTemplateContent($fromPartner, $newPartner, true); } $newPartner->setKmcVersion(kConf::get('new_partner_kmc_version')); $newPartner->save(); return $newPartner; }