public function onRegistration(RegistrationEvent $event) { $baseIds = array_map(function (\collection $coll) { return $coll->get_base_id(); }, $event->getCollections()); if (count($baseIds) === 0) { return; } $params = ['usr_id' => $event->getUser()->getId(), 'base_ids' => $baseIds]; try { $rs = $this->app['orm.em.native-query']->getAdminsOfBases(array_keys($baseIds)); $adminUsers = array_map(function ($row) { return $row[0]; }, $rs); } catch (\Exception $e) { return; } $datas = json_encode($params); $registeredUser = $event->getUser(); foreach ($adminUsers as $adminUser) { $mailed = false; if ($this->shouldSendNotificationFor($adminUser, 'eventsmanager_notify_register')) { try { $receiver = Receiver::fromUser($adminUser); } catch (\Exception $e) { continue; } $mail = MailInfoUserRegistered::create($this->app, $receiver); $mail->setRegisteredUser($registeredUser); $this->deliver($mail); $mailed = true; } $this->app['events-manager']->notify($adminUser->getId(), 'eventsmanager_notify_register', $datas, $mailed); } }
public function getMail() { $mail = MailInfoUserRegistered::create($this->getApp(), $this->getReceiverMock(), $this->getEmitterMock(), $this->getMessage()); $user = $this->createUserMock(); $user->expects($this->any())->method('getFirstName')->will($this->returnValue('JeanFirstName')); $user->expects($this->any())->method('getLastName')->will($this->returnValue('JeanLastName')); $user->expects($this->any())->method('getJob')->will($this->returnValue('JeanJob')); $user->expects($this->any())->method('getCompany')->will($this->returnValue('JeanCompany')); $mail->setRegisteredUser($user); return $mail; }
/** * * @param string $event * @param Array $params * @param mixed content $object * @return Void */ public function fire($event, $params, &$object) { $default = ['usr_id' => '', 'registrations' => []]; $params = array_merge($default, $params); $base_ids = $params['registrations']; if (count($base_ids) == 0) { return; } $mailColl = []; try { $rs = $this->app['EM.native-query']->getAdminsOfBases(array_keys($base_ids)); foreach ($rs as $row) { $user = $row[0]; if (!isset($mailColl[$user->getId()])) { $mailColl[$user->getId()] = []; } $mailColl[$user->getId()][] = $row['base_id']; } } catch (\Exception $e) { } $dom_xml = new DOMDocument('1.0', 'UTF-8'); $dom_xml->preserveWhiteSpace = false; $dom_xml->formatOutput = true; $root = $dom_xml->createElement('datas'); $usr_id = $dom_xml->createElement('usr_id'); $base_ids = $dom_xml->createElement('base_ids'); $usr_id->appendChild($dom_xml->createTextNode($params['usr_id'])); foreach ($params['registrations'] as $base_id => $is_ok) { $base_id_node = $dom_xml->createElement('base_id'); $base_id_node->appendChild($dom_xml->createTextNode($base_id)); $base_ids->appendChild($base_id_node); } $root->appendChild($usr_id); $root->appendChild($base_ids); $dom_xml->appendChild($root); $datas = $dom_xml->saveXml(); if (null === ($registeredUser = $this->app['manipulator.user']->getRepository()->find($params['usr_id']))) { return; } foreach ($mailColl as $usr_id => $base_ids) { $mailed = false; if ($this->shouldSendNotificationFor($usr_id)) { $readyToSend = false; try { $admin_user = $this->app['manipulator.user']->getRepository()->find($usr_id); $receiver = Receiver::fromUser($admin_user); $readyToSend = true; } catch (\Exception $e) { continue; } if ($readyToSend) { $mail = MailInfoUserRegistered::create($this->app, $receiver); $mail->setRegisteredUser($registeredUser); $this->app['notification.deliverer']->deliver($mail); $mailed = true; } } $this->broker->notify($usr_id, __CLASS__, $datas, $mailed); } return; }