public function buildForm(FormBuilder $builder, array $options) { $data = $builder->getData(); $builder->add('code', 'text', array('required' => false, 'label' => 'systemevents.code'))->add('description', 'textarea', array('required' => false, 'label' => 'systemevents.description'))->add('bundle', 'choice', array('empty_data' => $data->getBundle(), 'empty_value' => $data->getBundle(), 'choices' => $this->provider->getActiveBundleList(), 'multiple' => false, 'required' => false, 'label' => 'systemevents.bundle'))->add('entity', 'choice', array('empty_data' => $data->getEntity(), 'empty_value' => $data->getEntity(), 'choices' => array($data->getEntity()), 'multiple' => false, 'required' => false, 'label' => 'systemevents.entity'))->add('type', 'choice', array('choices' => SystemEvents::getTypeTypes(), 'multiple' => false, 'empty_data' => null, 'required' => false, 'label' => 'systemevents.type'))->add('actions', 'choice', array('choices' => SystemEvents::getActionsTypes(), 'multiple' => true, 'empty_data' => null, 'expanded' => true, 'required' => false, 'label' => ' '))->add('ownerType', 'hidden', array('required' => false, 'label' => 'systemevents.ownertype'))->add('ownerId', 'hidden', array('required' => false, 'label' => 'systemevents.ownerid'))->add('users', 'referencelist', array('columns' => array('username', 'firstName', 'lastName'), 'columnsType' => array('string', 'string', 'string'), 'label' => 'unit.users', 'entityName' => 'LowbiSystemBundle:User', 'actions' => array('select' => true, 'remove' => true), 'searchForm' => 'Lowbi\\SystemBundle\\Form\\UserSearchType'))->add('message', 'textarea', array('required' => false, 'label' => 'systemevents.message'))->add('redirectUrl', 'text', array('required' => false, 'label' => 'systemevents.redirecturl')); }
/** * This method handles kernelControllerEvent checking if token is valid * * @param FilterControllerEvent $event * @throws AccessDeniedHttpException in case token is not valid */ public function onKernelController($event) { $currentController = $event->getController(); $current = null; if (array_key_exists(0, $currentController)) { if ($currentController[0] instanceof ExceptionController) { return false; } if (isset($currentController[0]->entityClassName)) { $current = $currentController[0]->entityClassName; $action = str_replace('Action', '', $currentController[1]); } else { return false; } } else { return false; } $events = array(); $myActions = SystemEvents::getTypeTypes(); if (!array_key_exists($action, $myActions)) { return false; } $isTypeFounded = false; $mustMatchId = false; $mySysEvents = array(); $request = $event->getRequest(); $attr = $request->attributes->all(); unset($attr['_controller']); unset($attr['_route']); switch ($current) { case 'Lowbi\\SystemBundle\\Entity\\Upload': $systemEvents = $this->em->getRepository('LowbiSystemBundle:SystemEvents')->findBy(array('ownerType' => $attr['entityClassName'], 'ownerId' => $attr['id'])); $mySysEvents = $systemEvents; $isTypeFounded = true; break; default: $systemEvents = $this->em->getRepository('LowbiSystemBundle:SystemEvents')->findBy(array('ownerType' => $current)); break; } foreach ($systemEvents as $myEvent) { if ($myEvent->getOwnerType() == $current) { if ($myEvent->getType() . 'Action' == $action) { if ($myEvent->getOwnerId() == null) { $isTypeFounded = true; $mustMatchId = false; $mySysEvents[] = $myEvent; } else { $mustMatchId = true; } } if ($mustMatchId) { if ($myEvent->getOwnerId() == $attr['id']) { $isTypeFounded = true; $mySysEvents[] = $myEvent; } } } } if ($isTypeFounded) { $user = $this->container->get('security.context')->getToken()->getUser(); $translator = $this->container->get('translator'); foreach ($mySysEvents as $systemEvent) { foreach ($systemEvent->getActions() as $action) { switch ($action) { case 'log': $attributes = null; $systemEventLog = new \Lowbi\SystemBundle\Entity\SystemEventsLog(); $systemEventLog->setSystemEvent($systemEvent); $systemEventLog->setUser($user); $directLink = $request->getRequestUri(); $params = $request->request->all(); $paramsResult = null; if (count($params) > 0) { foreach ($params as $form) { foreach ($form as $key => $value) { $paramsResult['form'][$key] = $value; } } unset($paramsResult['_token']); } $paramsResult['url'] = $directLink; $systemEventLog->setParameters($paramsResult); $this->em->persist($systemEventLog); $this->em->flush(); $event->setController($this->launchController($currentController, $attr)); break; case 'warn': $this->container->get('session')->setFlash('notice', $systemEvent->getMessage()); $event->setController($this->launchController($currentController, $attr)); break; case 'email': $mailer = $this->container->get('lowbi.system.mail'); $options = array(); $options['event'] = $systemEvent; $options['subject'] = "Notification d'evenement"; $options['body'] = $systemEvent->getMessage(); /* @var $twig \Twig_Environment */ $twig = $this->container->get('twig'); $twigGlobalVars = $twig->getGlobals(); $request = $event->getRequest(); $directLink = $request->getRequestUri(); if (strpos($directLink, '/update/') !== false) { $directLink = str_replace('/update/', '/show/', $directLink); } if (strpos($directLink, '/create/') !== false) { $directLink = str_replace('/create/', '/show/', $directLink); } if (strpos($directLink, '/saveDocument/') !== false) { $directLink = str_replace('/saveDocument/', '/showDocument/', $directLink); } if ($action != 'deleteAction') { $options['body'] .= '<br><br>Url : ' . $twigGlobalVars['serverUrl'] . $directLink; } /* Pour test des piece jointes $options['attachs'][] = array( 'path'=>'C:\Lowbi\Repository\Symfony\lowbi2.0.16/web/uploads/temp/2012/09/25/5061954123726.docx', 'name'=>'certificat.docx' ); */ $recipientUsers = $systemEvent->getUsers(); $recipients = array(); if ($recipientUsers->count() == 0) { if ($systemEvent->getOwnerId() != null) { $entity = $this->em->getRepository($systemEvent->getOwnerType())->find($systemEvent->getOwnerId()); $entityUsers = $this->container->get('lowbi.permissions')->findEntityUsersRight($entity, $this->em); foreach ($entityUsers as $myUser) { $recipients[] = $myUser['user']; } } } else { foreach ($entityUsers as $myUser) { $recipients[] = $myUser; } } $mailer->send($recipients, $options); $event->setController($this->launchController($currentController, $attr)); break; case 'redirect': return new RedirectResponse($systemEvent->getRedirectUrl()); break; } } } } }
public function buildForm(FormBuilder $builder, array $options) { $builder->add('code', 'text', array('required' => false, 'label' => 'systemevents.code'))->add('description', 'textarea', array('required' => false, 'label' => 'systemevents.description'))->add('ownerType', 'text', array('required' => false, 'label' => 'systemevents.ownertype'))->add('ownerId', 'text', array('required' => false, 'label' => 'systemevents.ownerid'))->add('type', 'choice', array('choices' => SystemEvents::getTypeTypes(), 'multiple' => false, 'empty_data' => null, 'required' => false, 'label' => 'systemevents.type')); }