/** * @param mixed $emailOwner * @param OrganizationInterface $organization * @param string $originName * @param bool $enableUseUserEmailOrigin * * @return mixed|null|object|InternalEmailOrigin|UserEmailOrigin */ public function findEmailOrigin($emailOwner, $organization, $originName, $enableUseUserEmailOrigin) { if ($emailOwner instanceof User) { $origin = $this->getPreferredOrigin($emailOwner, $organization, $enableUseUserEmailOrigin); } elseif ($emailOwner instanceof Mailbox) { $origin = $emailOwner->getOrigin(); } else { $origin = $this->getEntityManager()->getRepository('OroEmailBundle:InternalEmailOrigin')->findOneBy(['internalName' => $originName]); } if ($this->isEmptyOrigin($origin)) { $user = $this->emailModel->getCampaignOwner(); $origin = $this->getPreferredOrigin($user, $organization, $enableUseUserEmailOrigin); } return $origin; }