/** * Create an invitation record for the user into the given group. * * @param GroupDao $groupDao The group to invite the user to * @param UserDao $userDao The user performing the invitation (typically the session user) * @param UserDao $invitedUserDao The user being invited to the group * @return false|CommunityInvitationDao * @throws Zend_Exception */ public function createInvitation($groupDao, $userDao, $invitedUserDao) { $communityDao = $groupDao->getCommunity(); $invitations = $invitedUserDao->getInvitations(); foreach ($invitations as $invitation) { if ($invitation->getCommunityId() == $communityDao->getKey()) { return false; } } /** @var CommunityInvitationDao $invitationDao */ $invitationDao = MidasLoader::newDao('CommunityInvitationDao'); $invitationDao->setCommunityId($communityDao->getKey()); $invitationDao->setGroupId($groupDao->getKey()); $invitationDao->setUserId($invitedUserDao->getKey()); $this->save($invitationDao); /** @var FeedModel $feedModel */ $feedModel = MidasLoader::loadModel('Feed'); /** @var FeedpolicyuserModel $feedpolicyuserModel */ $feedpolicyuserModel = MidasLoader::loadModel('Feedpolicyuser'); $feed = $feedModel->createFeed($userDao, MIDAS_FEED_COMMUNITY_INVITATION, $invitationDao, $communityDao); $feedpolicyuserModel->createPolicy($invitedUserDao, $feed, MIDAS_POLICY_ADMIN); return $invitationDao; }