/** * Add new GroupUser * * @action add * @param KalturaGroupUser $groupUser * @return KalturaGroupUser */ function addAction(KalturaGroupUser $groupUser) { /* @var $dbGroupUser KuserKgroup*/ $partnerId = $this->getPartnerId(); //verify kuser exists $kuser = kuserPeer::getKuserByPartnerAndUid($partnerId, $groupUser->userId); if (!$kuser || $kuser->getType() != KuserType::USER) { throw new KalturaAPIException(KalturaErrors::USER_NOT_FOUND, $groupUser->userId); } //verify kgroup exists $kgroup = kuserPeer::getKuserByPartnerAndUid($partnerId, $groupUser->groupId); if (!$kgroup || $kgroup->getType() != KuserType::GROUP) { throw new KalturaAPIException(KalturaErrors::GROUP_NOT_FOUND, $groupUser->userId); } //verify kuser does not belongs to kgroup $kuserKgroup = KuserKgroupPeer::retrieveByKuserIdAndKgroupId($kuser->getId(), $kgroup->getId()); if ($kuserKgroup) { throw new KalturaAPIException(KalturaErrors::GROUP_USER_ALREADY_EXISTS); } //verify user does not belongs to more than max allowed groups $criteria = new Criteria(); $criteria->add(KuserKgroupPeer::KUSER_ID, $kuser->getId()); $criteria->add(KuserKgroupPeer::STATUS, KuserKgroupStatus::ACTIVE); if (KuserKgroupPeer::doCount($criteria) > KuserKgroup::MAX_NUMBER_OF_GROUPS_PER_USER) { throw new KalturaAPIException(KalturaErrors::USER_EXCEEDED_MAX_GROUPS); } $dbGroupUser = $groupUser->toInsertableObject(); $dbGroupUser->setPartnerId($this->getPartnerId()); $dbGroupUser->setStatus(KuserKgroupStatus::ACTIVE); $dbGroupUser->save(); $groupUser->fromObject($dbGroupUser); return $groupUser; }
/** * Returns the number of related KuserKgroup objects. * * @param Criteria $criteria * @param boolean $distinct * @param PropelPDO $con * @return int Count of related KuserKgroup objects. * @throws PropelException */ public function countKuserKgroupsRelatedByKuserId(Criteria $criteria = null, $distinct = false, PropelPDO $con = null) { if ($criteria === null) { $criteria = new Criteria(kuserPeer::DATABASE_NAME); } else { $criteria = clone $criteria; } if ($distinct) { $criteria->setDistinct(); } $count = null; if ($this->collKuserKgroupsRelatedByKuserId === null) { if ($this->isNew()) { $count = 0; } else { $criteria->add(KuserKgroupPeer::KUSER_ID, $this->id); $count = KuserKgroupPeer::doCount($criteria, false, $con); } } else { // criteria has no effect for a new object if (!$this->isNew()) { // the following code is to determine if a new query is // called for. If the criteria is the same as the last // one, just return count of the collection. $criteria->add(KuserKgroupPeer::KUSER_ID, $this->id); if (!isset($this->lastKuserKgroupRelatedByKuserIdCriteria) || !$this->lastKuserKgroupRelatedByKuserIdCriteria->equals($criteria)) { $count = KuserKgroupPeer::doCount($criteria, false, $con); } else { $count = count($this->collKuserKgroupsRelatedByKuserId); } } else { $count = count($this->collKuserKgroupsRelatedByKuserId); } } return $count; }
public function getListResponse(KalturaFilterPager $pager, KalturaDetachedResponseProfile $responseProfile = null) { $this->validateUserIdOrGroupIdFiltered(); if ($this->groupIdEqual) { $partnerId = kCurrentContext::getCurrentPartnerId(); $c = new Criteria(); $c->add(kuserPeer::PARTNER_ID, $partnerId); $c->add(kuserPeer::PUSER_ID, $this->groupIdEqual); $c->add(kuserPeer::TYPE, KuserType::GROUP); if (kCurrentContext::$ks_partner_id == Partner::BATCH_PARTNER_ID) { //batch should be able to get categoryUser of deleted users. kuserPeer::setUseCriteriaFilter(false); } // in case of more than one deleted kusers - get the last one $c->addDescendingOrderByColumn(kuserPeer::UPDATED_AT); $kuser = kuserPeer::doSelectOne($c); kuserPeer::setUseCriteriaFilter(true); if (!$kuser) { $response = new KalturaGroupUserListResponse(); $response->objects = new KalturaGroupUserArray(); $response->totalCount = 0; return $response; } $this->groupIdEqual = $kuser->getId(); } if ($this->userIdEqual) { $partnerId = kCurrentContext::getCurrentPartnerId(); $c = new Criteria(); $c->add(kuserPeer::PARTNER_ID, $partnerId); $c->add(kuserPeer::PUSER_ID, $this->userIdEqual); $c->add(kuserPeer::TYPE, KuserType::USER); $kuser = kuserPeer::doSelectOne($c); if (!$kuser) { $response = new KalturaGroupUserListResponse(); $response->objects = new KalturaGroupUserArray(); $response->totalCount = 0; return $response; } $this->userIdEqual = $kuser->getId(); } if ($this->userIdIn) { $usersIds = explode(',', $this->userIdIn); $partnerId = kCurrentContext::getCurrentPartnerId(); $c = new Criteria(); $c->add(kuserPeer::PARTNER_ID, $partnerId, Criteria::EQUAL); $c->add(kuserPeer::PUSER_ID, $usersIds, Criteria::IN); $c->add(kuserPeer::TYPE, KuserType::USER); $kusers = kuserPeer::doSelect($c); if (!$kusers) { $response = new KalturaGroupUserListResponse(); $response->objects = new KalturaGroupUserArray(); $response->totalCount = 0; return $response; } $usersIds = array(); foreach ($kusers as $kuser) { /* @var $kuser kuser */ $usersIds[] = $kuser->getId(); } $this->userIdIn = implode(',', $usersIds); } if ($this->groupIdIn) { $groupIdIn = explode(',', $this->groupIdIn); $partnerId = kCurrentContext::getCurrentPartnerId(); $c = new Criteria(); $c->add(kuserPeer::PARTNER_ID, $partnerId, Criteria::EQUAL); $c->add(kuserPeer::PUSER_ID, $groupIdIn, Criteria::IN); $c->add(kuserPeer::TYPE, KuserType::GROUP); $kusers = kuserPeer::doSelect($c); if (!$kusers) { $response = new KalturaGroupUserListResponse(); $response->objects = new KalturaGroupUserArray(); $response->totalCount = 0; return $response; } $groupIdIn = array(); foreach ($kusers as $kuser) { /* @var $kuser kuser */ $groupIdIn[] = $kuser->getId(); } $this->groupIdIn = implode(',', $groupIdIn); } $kuserKgroupFilter = $this->toObject(); $c = KalturaCriteria::create(KuserKgroupPeer::OM_CLASS); $kuserKgroupFilter->attachToCriteria($c); $pager->attachToCriteria($c); $c->applyFilters(); $list = KuserKgroupPeer::doSelect($c); $newList = KalturaGroupUserArray::fromDbArray($list, $responseProfile); $response = new KalturaGroupUserListResponse(); $response->objects = $newList; $resultCount = count($newList); if ($resultCount && $resultCount < $pager->pageSize) { $totalCount = ($pager->pageIndex - 1) * $pager->pageSize + $resultCount; } else { KalturaFilterPager::detachFromCriteria($c); $totalCount = KuserKgroupPeer::doCount($c); } $response->totalCount = $totalCount; return $response; }