diff --git a/src/ninegate-1.0/scripts/ninegate-mail.sh b/src/ninegate-1.0/scripts/ninegate-mail.sh index ee534a97..cadcbc97 100755 --- a/src/ninegate-1.0/scripts/ninegate-mail.sh +++ b/src/ninegate-1.0/scripts/ninegate-mail.sh @@ -4,7 +4,7 @@ cd /var/www/html/ninegate ninegate_activer_localmail=$(CreoleGet ninegate_activer_localmail non) if [[ "$ninegate_activer_localmail" = 'oui' ]] then - php bin/console swiftmailer:spool:send --message-limit=100 --env=prod --transport swiftmailer.mailer.sendmail.transport + php bin/console swiftmailer:spool:send --message-limit=200 --env=prod --transport swiftmailer.mailer.sendmail.transport else - php bin/console swiftmailer:spool:send --message-limit=100 --env=prod + php bin/console swiftmailer:spool:send --message-limit=200 --env=prod fi \ No newline at end of file diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php index ceb21eaf..a52ad713 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php @@ -28,6 +28,7 @@ use Cadoles\CoreBundle\Entity\Niveau02; use Cadoles\WebsocketBundle\Entity\Message; use Cadoles\CoreBundle\Form\UserType; +use Cadoles\CoreBundle\Form\MailingType; class UserController extends Controller @@ -778,6 +779,74 @@ class UserController extends Controller } + public function mailingAction(Request $request) { + $form = $this->createForm(MailingType::class,$this->getUser(),array( + "perm"=>$this->isGranted('ROLE_ADMIN'), + "userid"=>$this->get('security.token_storage')->getToken()->getUser()->getId(), + )); + + // Récupération des data du formulaire + $form->handleRequest($request); + + // Error si pas de message + if ($form->get('submit')->isClicked()) { + if(!$form->get('message')->getData()) { + $form->addError(new FormError("Merci de renseigner un message à votre mail")); + $errors = $form->getErrors(); + foreach( $errors as $error ) { + $request->getSession()->getFlashBag()->add("error", $error->getMessage()); + } + } + } + + // Sur validation + if ($form->get('submit')->isClicked() && $form->isValid()) { + $users=[]; + if($this->isGranted('ROLE_ADMIN')) { + $groups=$form->get('groups')->getData(); + foreach($groups as $group) { + foreach($group->getUsers() as $usergroup) { + if(!in_array($usergroup->getUser()->getEmail(),$users)) { + array_push($users,$usergroup->getUser()->getEmail()); + } + } + } + } + $niveau01s=$form->get('niveau01')->getData(); + foreach($niveau01s as $niveau01) { + foreach($niveau01->getUsers() as $user) { + if(!in_array($user->getEmail(),$users)) { + array_push($users,$user->getEmail()); + } + } + } + + $text=$form->get("message")->getData(); + $subject=$form->get("subject")->getData(); + $template="template"; + $mail_params=array( + "subject" => $subject, + "body_html"=>nl2br($text), + "body_text"=>$text + ); + $from = $this->getParameter('noreply'); + $fromName = $this->getUser()->getFirstname()." ".$this->getUser()->getLastname(); + $message = $this->container->get('cadoles.core.service.mail'); + foreach($users as $to) { + $message->sendEmail($template, $mail_params, $to, $from, $fromName); + } + + return $this->redirectToRoute("cadoles_core_config"); + } + + return $this->render('CadolesCoreBundle:Mail:mailing.html.twig', [ + 'useheader' => true, + 'usemenu' => false, + 'usesidebar' => true, + 'form' => $form->createView() + ]); + } + public function exportuserAction(Request $request) { $em = $this->getDoctrine()->getManager(); $dir = $this->get('kernel')->getRootDir() . '/../uploads/export/'; diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php index c83fdffd..79464b1c 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/sessionListener.php @@ -106,8 +106,9 @@ // Chargement de la sidebar $iconniveau01 =$this->container->getParameter('iconniveau01'); $labelsniveau01 =$this->container->getParameter('labelsniveau01'); - $labelniveau01 =$this->container->getParameter('labelsniveau01'); + $labelniveau01 =$this->container->getParameter('labelniveau01'); $session->set('labelniveau01',$labelniveau01); + $session->set('labelsniveau01',$labelsniveau01); $viewniveau02 =$this->container->getParameter('viewniveau02'); $iconniveau02 =$this->container->getParameter('iconniveau02'); @@ -115,6 +116,7 @@ $labelniveau02 =$this->container->getParameter('labelniveau02'); $session->set('viewniveau02',$viewniveau02); $session->set('labelniveau02',$labelniveau02); + $session->set('labelsniveau02',$labelsniveau02); $moderegistration =$this->container->getParameter('moderegistration'); if($masteridentity!="SQL") $moderegistration="none"; diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/MailingType.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/MailingType.php new file mode 100644 index 00000000..e6640993 --- /dev/null +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/MailingType.php @@ -0,0 +1,116 @@ +add('submit', + SubmitType::class, array( + "label" => "Envoyer", + "attr" => array("class" => "btn btn-success") + ) + ); + + $perm=$options["perm"]; + $userid=$options["userid"]; + + $builder + ->add('niveau01',EntityType::class,[ + "mapped" => false, + "required" => false, + "class" => "CadolesCoreBundle:Niveau01", + 'multiple' => true, + "label" => $session->get('labelsniveau01'), + 'placeholder' => '== Choisir '.$session->get('labelsniveau01').' ==', + "choice_label" => "label", + "attr" => array("class" => "form-control", "style" => "margin-bottom:15px"), + "query_builder"=> function (EntityRepository $er) use($perm,$userid) { + if($perm) + return $er->createQueryBuilder('niveau01'); + else { + $result=$er->createQueryBuilder("table")->innerJoin("CadolesCoreBundle:UserModo", "usermodo", Join::WITH, "table.id = usermodo.niveau01"); + $result->andWhere("usermodo.user = :userid"); + $result->setParameter('userid', $userid); + return $result; + } + } + ]); + + if($perm) { + $builder + ->add('groups', Select2EntityType::class, [ + 'mapped' => false, + 'label' => 'Groupes', + 'class' => 'CadolesCoreBundle:Group', + 'text_property' => 'label', + 'multiple' => true, + 'remote_route' => 'cadoles_core_ajax_group_list', + 'primary_key' => 'id', + 'text_property' => 'label', + 'minimum_input_length' => 0, + 'page_limit' => 100, + 'allow_clear' => true, + 'delay' => 250, + 'cache' => false, + 'cache_timeout' => 60000, + 'language' => 'fr', + 'placeholder' => 'Selectionner des groupes', + ]); + } + + $builder + ->add('subject', TextType::class, [ + "label" =>"Sujet", + "attr" => array("class" => "form-control", "style" => "margin-bottom:15px"), + "mapped" => false + ]); + + $builder + ->add("message",CKEditorType::class,[ + 'config_name' => 'small_config', + 'label' => "Message", + 'mapped'=> false, + 'required' => true, + 'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"), + 'config' => ["height" => "400px",'filebrowserUploadRoute' => 'cadoles_portal_user_pagewidget_upload'] + ]); + + } + + public function configureOptions(OptionsResolver $resolver) + { + $resolver->setDefaults(array( + 'data_class' => 'Cadoles\CoreBundle\Entity\User', + 'perm' => "boolean", + 'userid' => "integer", + )); + } +} + diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml index 338aacdc..4ea643a1 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml @@ -257,6 +257,10 @@ cadoles_core_config_user_ajax_selectlist: path: /config/user/ajax/selectlist defaults: { _controller: CadolesCoreBundle:User:selectlist, access: config } +cadoles_core_config_mailing: + path: /config/mailing + defaults: { _controller: CadolesCoreBundle:User:mailing } + cadoles_core_config_importuser: path: /config/importuser defaults: { _controller: CadolesCoreBundle:User:importuser } diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Mail/mailing.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Mail/mailing.html.twig new file mode 100755 index 00000000..455a876a --- /dev/null +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Mail/mailing.html.twig @@ -0,0 +1,54 @@ +{% extends '@CadolesCore/base.html.twig' %} + +{% block pagewrapper %} +{{ form_start(form) }} +