public function validateForResponseProfile() { if (kEntitlementUtils::getEntitlementEnforcement()) { if (PermissionPeer::isValidForPartner(PermissionName::FEATURE_ENABLE_RESPONSE_PROFILE_USER_CACHE, kCurrentContext::getCurrentPartnerId())) { KalturaResponseProfileCacher::useUserCache(); return; } throw new KalturaAPIException(KalturaErrors::CANNOT_LIST_RELATED_ENTITLED_WHEN_ENTITLEMENT_IS_ENABLE, get_class($this)); } }
public function validateForResponseProfile() { if (!kCurrentContext::$is_admin_session && !$this->idEqual && !$this->idIn && !$this->systemNameEqual && !$this->systemNameIn) { if (PermissionPeer::isValidForPartner(PermissionName::FEATURE_ENABLE_RESPONSE_PROFILE_USER_CACHE, kCurrentContext::getCurrentPartnerId())) { KalturaResponseProfileCacher::useUserCache(); return; } throw new KalturaAPIException(KalturaCuePointErrors::USER_KS_CANNOT_LIST_RELATED_CUE_POINTS, get_class($this)); } }
public final function fromObject($srcObj, KalturaDetachedResponseProfile $responseProfile = null) { if (!is_object($srcObj)) { KalturaLog::err("expected an object, got " . print_r($srcObj, true)); return; } $thisClass = get_class($this); $srcObjClass = get_class($srcObj); $fromObjectClass = "Map_{$thisClass}_{$srcObjClass}"; if (!class_exists($fromObjectClass)) { $cacheFileName = kConf::get("cache_root_path") . "/api_v3/fromObject/{$fromObjectClass}.php"; if (!file_exists($cacheFileName)) { $cacheDir = dirname($cacheFileName); if (!is_dir($cacheDir)) { mkdir($cacheDir); chmod($cacheDir, 0755); } $fromObjectClassCode = $this->generateFromObjectClass($srcObj, $fromObjectClass); if (!$fromObjectClassCode) { return; } kFile::safeFilePutContents($cacheFileName, $fromObjectClassCode); } require_once $cacheFileName; } $fromObjectClass::fromObject($this, $srcObj, $responseProfile); $this->doFromObject($srcObj, $responseProfile); if ($srcObj instanceof IRelatedObject) { KalturaResponseProfileCacher::onPersistentObjectLoaded($srcObj); if ($responseProfile && $responseProfile->relatedProfiles) { // trigger validation $responseProfile->validateNestedObjects(); $this->relatedObjects = KalturaResponseProfileCacher::start($srcObj, $responseProfile); if (!$this->relatedObjects) { $this->loadRelatedObjects($responseProfile); KalturaResponseProfileCacher::stop($srcObj, $this); } } } }
public final function fromObject($srcObj, KalturaDetachedResponseProfile $responseProfile = null) { if (!is_object($srcObj)) { KalturaLog::err("expected an object, got " . print_r($srcObj, true)); return; } if ($srcObj instanceof IRelatedObject && $responseProfile && $responseProfile->relatedProfiles) { if (KalturaResponseProfileCacher::start($this, $srcObj, $responseProfile)) { return; } } $thisClass = get_class($this); $srcObjClass = get_class($srcObj); $fromObjectClass = "Map_{$thisClass}_{$srcObjClass}"; if (!class_exists($fromObjectClass)) { $cacheFileName = kConf::get("cache_root_path") . "/api_v3/fromObject/{$fromObjectClass}.php"; $max_include_retries = 10; $fromObjectClassCode = null; while (!@(include_once $cacheFileName) and $max_include_retries--) { if (!$fromObjectClassCode) { $fromObjectClassCode = $this->generateFromObjectClass($srcObj, $fromObjectClass); if (!$fromObjectClassCode) { return; } } $cacheDir = dirname($cacheFileName); if (!is_dir($cacheDir)) { mkdir($cacheDir); chmod($cacheDir, 0775); } kFile::safeFilePutContents($cacheFileName, $fromObjectClassCode, 0644); } if (!class_exists($fromObjectClass)) { throw new Exception("Could not include cached code file - {$cacheFileName}"); } } $fromObjectClass::fromObject($this, $srcObj, $responseProfile); $this->doFromObject($srcObj, $responseProfile); if ($srcObj instanceof IRelatedObject) { KalturaResponseProfileCacher::onPersistentObjectLoaded($srcObj); if ($responseProfile && $responseProfile->relatedProfiles) { $responseProfile->validateNestedObjects(); $this->loadRelatedObjects($responseProfile); KalturaResponseProfileCacher::stop($srcObj, $this); } } }
public static function stop(IRelatedObject $object, KalturaObject $apiObject) { if ($object !== self::$cachedObject) { KalturaLog::debug("Object [" . get_class(self::$cachedObject) . "][" . self::$cachedObject->getId() . "] still caching"); return; } if ($apiObject->relatedObjects) { KalturaLog::debug("Stop " . get_class($apiObject) . " [" . print_r($apiObject, true) . "]"); $key = self::getObjectSpecificCacheKey(self::$cachedObject, self::$responseProfileKey); $value = self::getObjectSpecificCacheValue($apiObject, self::$cachedObject, self::$responseProfileKey); self::set($key, $value); } else { KalturaLog::debug("API Object [" . get_class($apiObject) . "] has no related objects"); } self::$cachedObject = null; self::$cachePerUser = false; }
/** * Recalculate response profile cached objects * * @action recalculate * @param KalturaResponseProfileCacheRecalculateOptions $options * @return KalturaResponseProfileCacheRecalculateResults */ function recalculateAction(KalturaResponseProfileCacheRecalculateOptions $options) { return KalturaResponseProfileCacher::recalculateCacheBySessionType($options); }
public static function stop(IBaseObject $object, KalturaObject $apiObject) { if ($object !== self::$cachedObject) { KalturaLog::debug("Object [" . get_class(self::$cachedObject) . "][" . self::$cachedObject->getId() . "] still caching"); return; } KalturaLog::debug("Stop " . get_class($apiObject) . " [" . print_r($apiObject, true) . "]"); $key = self::getObjectSpecificCacheKey(self::$cachedObject, self::$responseProfileKey); $value = self::getObjectSpecificCacheValue($apiObject, self::$cachedObject, self::$responseProfileKey); self::set($key, $value); self::$cachedObject = null; }
public function validateForResponseProfile() { if (kEntitlementUtils::getEntitlementEnforcement()) { if (PermissionPeer::isValidForPartner(PermissionName::FEATURE_ENABLE_RESPONSE_PROFILE_USER_CACHE, kCurrentContext::getCurrentPartnerId())) { KalturaResponseProfileCacher::useUserCache(); return; } throw new KalturaAPIException(KalturaErrors::CANNOT_LIST_RELATED_ENTITLED_WHEN_ENTITLEMENT_IS_ENABLE, get_class($this)); } if (!kCurrentContext::$is_admin_session && !$this->idEqual && !$this->idIn && !$this->referenceIdEqual && !$this->redirectFromEntryId && !$this->referenceIdIn && !$this->parentEntryIdEqual) { if (kCurrentContext::$ks_object->privileges === ks::PATTERN_WILDCARD || kCurrentContext::$ks_object->getPrivilegeValue(ks::PRIVILEGE_LIST) === ks::PATTERN_WILDCARD) { return; } if (PermissionPeer::isValidForPartner(PermissionName::FEATURE_ENABLE_RESPONSE_PROFILE_USER_CACHE, kCurrentContext::getCurrentPartnerId())) { KalturaResponseProfileCacher::useUserCache(); return; } throw new KalturaAPIException(KalturaErrors::USER_KS_CANNOT_LIST_RELATED_ENTRIES, get_class($this)); } }