示例#1
0
 /**
  * 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;
                 }
             }
         }
     }
 }
示例#2
0
 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'));
 }
示例#3
0
 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', 'hidden')->add('entity', 'hidden')->add('type', 'choice', array('choices' => SystemEvents::getLimitedTypeTypes(), 'multiple' => false, 'empty_data' => null, 'required' => false, 'label' => 'systemevents.type'))->add('actions', 'hidden')->add('ownerType', 'hidden')->add('ownerId', 'hidden');
 }
示例#4
0
 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'));
 }
示例#5
0
 public function showSystemEventsAction($entityClassName, $id, $tab = null)
 {
     $translator = $this->get('translator');
     $objectIdentity = new ObjectIdentity('class', $this->entityClassName);
     $entityName = urldecode($entityClassName);
     $em = $this->getDoctrine()->getEntityManager();
     $translator = $this->get('translator');
     $entities = $em->getRepository('LowbiSystemBundle:SystemEvents')->findBy(array('ownerType' => $entityName, 'ownerId' => $id));
     $entityInfo = $this->get('lowbi.system')->getBundleName($entityName, $this);
     $deleteForms = array();
     foreach ($entities as $entity) {
         $deleteForms[$entity->getId()] = $this->createDeleteForm($entity->getId())->createView();
     }
     $paginator = $this->get('knp_paginator');
     $pagination = $paginator->paginate($entities, $this->get('request')->query->get('page', 1), 15);
     $systemEvent = new SystemEvents();
     $systemEvent->setActions(array('email'));
     $systemEvent->setBundle($entityInfo['bundleName']);
     $systemEvent->setEntity($entityInfo['entityName']);
     $systemEvent->setOwnerType($entityName);
     $systemEvent->setOwnerId($id);
     $lowbiSystem = $this->get('lowbi.system');
     $formType = 'Lowbi\\SystemBundle\\Form\\SystemEventsCreateType';
     $form = $this->createForm(new $formType($lowbiSystem), $systemEvent);
     return $this->render('LowbiSystemBundle:SystemEvents:systemevents.tab.html.twig', array('pagination' => $pagination, 'deleteForms' => $deleteForms, 'title' => $translator->trans('systemevents.indextitle'), 'objectIdentity' => $objectIdentity, 'entityClassName' => urlencode($entityClassName), 'entity' => array('id' => $id), 'entityInfo' => $entityInfo, 'tab' => $tab, 'form' => $form->createView()));
 }