/**
  * Update CategoryUser by id
  * 
  * @action update
  * @param int $categoryId
  * @param string $userId
  * @param KalturaCategoryUser $categoryUser
  * @param bool $override - to override manual changes
  * @return KalturaCategoryUser
  */
 function updateAction($categoryId, $userId, KalturaCategoryUser $categoryUser, $override = false)
 {
     $partnerId = kCurrentContext::$partner_id ? kCurrentContext::$partner_id : kCurrentContext::$ks_partner_id;
     $kuser = kuserPeer::getKuserByPartnerAndUid($partnerId, $userId);
     if (!$kuser) {
         throw new KalturaAPIException(KalturaErrors::INVALID_USER_ID, $userId);
     }
     $dbCategoryKuser = categoryKuserPeer::retrieveByCategoryIdAndKuserId($categoryId, $kuser->getId());
     if (!$dbCategoryKuser) {
         throw new KalturaAPIException(KalturaErrors::INVALID_CATEGORY_USER_ID, $categoryId, $userId);
     }
     if (!$override && ($categoryUser->updateMethod == null || $categoryUser->updateMethod == KalturaUpdateMethodType::AUTOMATIC) && $dbCategoryKuser->getUpdateMethod() == KalturaUpdateMethodType::MANUAL) {
         throw new KalturaAPIException(KalturaErrors::CANNOT_OVERRIDE_MANUAL_CHANGES);
     }
     $dbCategoryKuser = $categoryUser->toUpdatableObject($dbCategoryKuser);
     $dbCategoryKuser->save();
     $categoryUser->fromObject($dbCategoryKuser, $this->getResponseProfile());
     return $categoryUser;
 }
 /**
  * Update CategoryUser by id
  * 
  * @action update
  * @param int $categoryId
  * @param string $userId
  * @param KalturaCategoryUser $categoryUser
  * @param bool $override - to override manual changes
  * @return KalturaCategoryUser
  */
 function updateAction($categoryId, $userId, KalturaCategoryUser $categoryUser, $override = false)
 {
     $partnerId = kCurrentContext::$partner_id ? kCurrentContext::$partner_id : kCurrentContext::$ks_partner_id;
     $kuser = kuserPeer::getKuserByPartnerAndUid($partnerId, $userId);
     if (!$kuser) {
         throw new KalturaAPIException(KalturaErrors::INVALID_USER_ID, $userId);
     }
     $dbCategoryKuser = categoryKuserPeer::retrieveByCategoryIdAndKuserId($categoryId, $kuser->getId());
     if (!$dbCategoryKuser) {
         throw new KalturaAPIException(KalturaErrors::INVALID_CATEGORY_USER_ID, $categoryId, $userId);
     }
     if (!$override && ($categoryUser->updateMethod == null || $categoryUser->updateMethod == KalturaUpdateMethodType::AUTOMATIC) && $dbCategoryKuser->getUpdateMethod() == KalturaUpdateMethodType::MANUAL) {
         throw new KalturaAPIException(KalturaErrors::CANNOT_OVERRIDE_MANUAL_CHANGES);
     }
     $dbCategoryKuser = $categoryUser->toUpdatableObject($dbCategoryKuser);
     $category = categoryPeer::retrieveByPK($categoryId);
     if (!$category) {
         throw new KalturaAPIException(KalturaErrors::CATEGORY_NOT_FOUND, $categoryUser->categoryId);
     }
     if ($dbCategoryKuser->getKuserId() == $category->getKuserId()) {
         throw new KalturaAPIException(KalturaErrors::CANNOT_UPDATE_CATEGORY_USER_OWNER);
     }
     $currentKuserCategoryKuser = categoryKuserPeer::retrieveByCategoryIdAndActiveKuserId($categoryUser->categoryId, kCurrentContext::$ks_kuser_id);
     if (kEntitlementUtils::getEntitlementEnforcement() && (!$currentKuserCategoryKuser || $currentKuserCategoryKuser->getPermissionLevel() != CategoryKuserPermissionLevel::MANAGER)) {
         throw new KalturaAPIException(KalturaErrors::CANNOT_UPDATE_CATEGORY_USER, $categoryUser->categoryId);
     }
     $dbCategoryKuser->save();
     $categoryUser->fromObject($dbCategoryKuser);
     return $categoryUser;
 }