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) }} +

+ Mailing +

+ + {{ form_widget(form.submit) }} + +

+ + {% if app.session.flashbag.has('error') %} +
+ Erreur
+ {% for flashMessage in app.session.flashbag.get('error') %} + {{ flashMessage }}
+ {% endfor %} +
+ {% endif %} + + {% if app.session.flashbag.has('notice') %} +
+ Information
+ {% for flashMessage in app.session.flashbag.get('notice') %} + {{ flashMessage }}
+ {% endfor %} +
+ {% endif %} +
+
+ Destinataires +
+ +
+ {{ form_row(form.niveau01) }} + {% if form.groups is defined %} + {{ form_row(form.groups) }} + {% endif %} +
+
+ +
+
+ Mail +
+ +
+ {{ form_row(form.subject) }} + {{ form_row(form.message) }} +
+
+{{ form_end(form) }} +{% endblock %} diff --git a/src/ninegate-1.0/src/Cadoles/CronBundle/Command/InitDataCommand.php b/src/ninegate-1.0/src/Cadoles/CronBundle/Command/InitDataCommand.php index 25b6da84..a458524a 100644 --- a/src/ninegate-1.0/src/Cadoles/CronBundle/Command/InitDataCommand.php +++ b/src/ninegate-1.0/src/Cadoles/CronBundle/Command/InitDataCommand.php @@ -60,9 +60,9 @@ class InitDataCommand extends ContainerAwareCommand $entity->setRepeatexec(0); $entity->setRepeatinterval(60); $entity->setNextexecdate($entity->getSubmitdate()); - $entity->setJsonargument('{"message-limit":"100","env":"prod"}'); - $this->entityManager->persist($entity); } + $entity->setJsonargument('{"message-limit":"200","env":"prod"}'); + $this->entityManager->persist($entity); // Job synchronisation des comptes utilisateur diff --git a/tmpl/ninegate-init-01.sql b/tmpl/ninegate-init-01.sql index ef7bc512..60d98c98 100644 --- a/tmpl/ninegate-init-01.sql +++ b/tmpl/ninegate-init-01.sql @@ -40,7 +40,8 @@ INSERT IGNORE INTO `sidebar` (`id`, `parent_id`, `roworder`, `label`, `path`, `f (1240, 1200, 1240, 'Groupes', 'cadoles_core_config_group', 'fa-users', 'ROLE_ADMIN,ROLE_MODO', ''), (1250, 1200, 1250, 'Inscriptions', 'cadoles_core_config_registration', 'fa-pencil-square-o', 'ROLE_ADMIN,ROLE_MODO', ''), (1260, 1200, 1260, 'Utilisateurs', 'cadoles_core_config_user', 'fa-child', 'ROLE_ADMIN,ROLE_MODO', ''), -(1270, 1200, 1270, 'Import Utilisateurs', 'cadoles_core_config_importuser', 'fa-download', 'ROLE_ADMIN,ROLE_MODO', 'importuser_activate'), +(1270, 1200, 1270, 'Mailing', 'cadoles_core_config_mailing', 'fa-envelope', 'ROLE_ADMIN,ROLE_MODO', ''), +(1280, 1200, 1280, 'Import Utilisateurs', 'cadoles_core_config_importuser', 'fa-download', 'ROLE_ADMIN,ROLE_MODO', 'importuser_activate'), (1500, NULL, 1500, 'PORTAIL', NULL, 'fa-cubes', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'), (1510, 1500, 1510, 'Modèles de Page', 'cadoles_portal_config_pagetemplate', 'fa-copy', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'), @@ -130,6 +131,7 @@ INSERT IGNORE permmodo (`route`, `visible`) VALUES ('cadoles_core_config_group',1), ('cadoles_core_config_registration',1), ('cadoles_core_config_user',1), +('cadoles_core_config_mailing',1), ('cadoles_core_config_importuser',0), ('cadoles_portal_config_pagetemplate',1), ('cadoles_portal_config_page',1),