317 Commits

Author SHA1 Message Date
6da8f15c2d Merge branch 'master' into dist/envole/6/master 2020-09-02 16:25:44 +02:00
1de042ed77 ajout item administration EOLE (ref #198) 2020-09-02 16:22:07 +02:00
8659a32942 resolution conflit 2020-09-02 11:48:45 +02:00
cbbd67c6ea gérer exception sur lecture de rss (ref #197) 2020-09-02 11:44:22 +02:00
68c8d599ff Merge branch 'master' into dist/envole/6/master 2020-07-27 10:19:39 +02:00
ececb38afe demander la motiviation uniquement si registration byadmin et non whitelist 2020-07-27 09:54:26 +02:00
95784beed6 Merge branch 'master' into dist/envole/6/master 2020-07-23 10:09:10 +02:00
b7d157cf1b configuration pour envolemigration 2020-07-23 10:07:16 +02:00
30eb0d07e2 Merge branch 'master' into dist/envole/6/master 2020-07-22 13:39:52 +02:00
b6a33c03ec modification theme transnum 2020-07-22 09:05:07 +02:00
87ef7fb6c7 resolution merge 2020-07-17 16:08:06 +02:00
57a5517e19 system de tag sur les icones (ref #190) 2020-07-17 16:06:18 +02:00
6db9222fc4 phrase indicateur sur la création des icones (ref #192) 2020-07-17 12:14:48 +02:00
de803ac336 pouvoir gérer les icones directement via la selection des icones (ref #188) 2020-07-17 12:02:25 +02:00
bdddfc925f gestion des annonces masquables (ref #191) 2020-07-17 11:12:01 +02:00
af5fbf0a6a Merge branch 'master' into dist/envole/6/master 2020-07-15 16:57:37 +02:00
01fd5f297f widget chat non accessible sur les pages perso (ref #193) 2020-07-15 16:54:28 +02:00
2119a68368 modification icone modifier page/blog/calendar/project en engrenage & acces direct depuis les listes (ref #185 #184) 2020-07-15 16:50:41 +02:00
0602505f63 creation categorie alerte par défaut (ref #189) 2020-07-15 15:36:18 +02:00
c4815ac935 orthographe icône (ref #187) 2020-07-15 15:25:24 +02:00
514fe6b82c orthographe connection en connexion (ref #186) 2020-07-15 15:15:38 +02:00
2c1078d19e purge des groupes inexistant dans l'annuaire 2020-07-15 15:08:42 +02:00
fb879143d5 parametrer la synchro scribe (ref #183) 2020-07-15 14:38:16 +02:00
177f366a83 pb sur modification du mail sur synchronisation ldap (ref #182) 2020-07-15 14:07:39 +02:00
4ae4dabb9f resolv conflict 2020-07-10 12:23:07 +02:00
39c469fd45 afficher tt item si vu item only 2020-07-10 12:21:42 +02:00
2392318922 Merge branch 'master' into dist/envole/6/master 2020-07-10 09:37:23 +02:00
4a941665dc suppression du = dans les noms de groupe scribe 2020-07-10 09:31:00 +02:00
5ee9a52554 Merge branch 'master' into dist/envole/6/master 2020-07-07 09:25:12 +02:00
8dec77a946 post api à la place de get api 2020-07-07 09:23:24 +02:00
ec6cf7e062 Merge branch 'master' into dist/envole/6/master 2020-07-06 12:00:07 +02:00
025009e76c tout les groups sur rest user 2020-07-06 11:59:17 +02:00
5cdd0a6703 Merge branch 'master' into dist/envole/6/master 2020-07-06 11:54:32 +02:00
e59b85701c rest api 2020-07-06 11:19:44 +02:00
c856315a8d rest users & groups 2020-07-03 16:10:28 +02:00
f4325bfb4f rest users & groups 2020-07-03 10:30:41 +02:00
d1637e4efa Merge branch 'master' into dist/envole/6/master 2020-06-26 15:46:34 +02:00
151be1a66e event shared 2020-06-26 15:45:48 +02:00
ba41570721 Merge branch 'master' into dist/envole/6/master 2020-06-26 08:43:25 +02:00
2a8c9287b1 erreur sur param synchro envole 2020-06-26 08:42:33 +02:00
0777934192 Merge branch 'master' into dist/envole/6/master 2020-06-25 13:40:55 +02:00
328189222a gestion nineboard 2020-06-25 13:40:17 +02:00
c1fed2d994 ajout des event shared dans le widget calendar (ref #168) 2020-06-25 11:37:03 +02:00
0a6a5abe38 conflic 2020-06-24 13:46:57 +02:00
88a4e9882b binary 2020-06-24 13:45:36 +02:00
baf09e9e82 rename dico postservice 2020-06-24 13:39:39 +02:00
bd039015e1 rename dicos 2020-06-24 12:12:29 +02:00
220bb795ae Merge branch 'master' into dist/envole/6/master 2020-06-24 12:04:55 +02:00
0699403a55 rename dicos 2020-06-24 12:04:18 +02:00
1877f101ee Merge branch 'master' into dist/envole/6/master 2020-06-24 11:41:37 +02:00
4dac861b9b ajout item eoe eop nineboard 2020-06-24 11:40:43 +02:00
02aa36a194 ajout icon eoe eop 2020-06-24 10:30:12 +02:00
50ae3ed4c4 Merge branch 'master' into dist/envole/6/master 2020-06-24 09:54:52 +02:00
d90d3039a2 pb reconf si non only 2020-06-24 09:48:57 +02:00
8f85f5eb5e retour sur page groupe blog et calendrier (ref #168) 2020-06-23 14:53:16 +02:00
be3cfa2814 correction mineure 2020-06-23 12:21:45 +02:00
92a0d91a1d personnalisation par niveau01 (ref #162) 2020-06-23 10:44:22 +02:00
7444af740e griser menu navigation projet / blog / calendrier (ref #152) 2020-06-22 16:15:56 +02:00
4759940401 suppresion autocomplete sur zone login / password du user (ref #169) 2020-06-22 16:03:37 +02:00
0c0ee8eb2e correction ortho 2020-06-22 15:55:43 +02:00
e03af01666 Merge branch 'master' into dist/envole/6/master 2020-06-22 13:32:50 +02:00
0de395baee notification et permission chg proprio groupe (ref #146) 2020-06-22 13:21:47 +02:00
977705c5fe ordre des labels d'explication login (ref #132) 2020-06-22 10:45:08 +02:00
47d603b0d1 label title (ref #148) 2020-06-22 10:40:06 +02:00
9242586254 suppresion du label project (ref #128) 2020-06-22 10:31:33 +02:00
20343637b9 resolution project (ref #152) 2020-06-22 10:25:23 +02:00
8d66c9a925 resolution problème de couleur du switch (ref #155 #154) 2020-06-22 10:01:02 +02:00
36b8cee983 Merge branch 'master' into dist/envole/6/master 2020-06-22 09:49:41 +02:00
f0394428ef postservice si activer 2020-06-22 09:48:38 +02:00
286e49653e Merge branch 'master' into dist/envole/6/master 2020-06-18 11:59:09 +02:00
000f0114c2 init datevisite 2020-06-18 11:55:37 +02:00
3a0c0c1458 Merge branch 'master' into dist/envole/6/master 2020-06-18 10:59:45 +02:00
eedd7a786f supression icon si fichier non existant 2020-06-18 10:56:13 +02:00
d916b59f1c auto connexion sur onlyoffice (ref #89) 2020-06-18 10:41:48 +02:00
fcbf0ab4ad controle d'unicité de rattachement à un groupe (ref #160) 2020-06-18 09:57:05 +02:00
9f6024049b réponse sur commentaire d'article de blog (ref #157) 2020-06-17 11:44:47 +02:00
58a07356be resol merge 2020-06-17 08:52:17 +02:00
c0517eb238 envoyer un mail en cas d'erreur sur job cron (ref #159) 2020-06-16 11:10:51 +02:00
3c08e2ef8f ajout d'un job de dump bdd (ref #158) 2020-06-16 10:06:13 +02:00
dfe6a90673 indicateurs (ref #156) 2020-06-16 09:09:59 +02:00
a379e52dea gestion de réponse à msg de chat (ref #8) 2020-06-12 14:02:19 +02:00
b49c25e07e System de mailing (ref #144) 2020-06-11 14:12:32 +02:00
a6e5cfbb81 possibilité de masquer les messages du chat (ref #155) 2020-06-09 17:31:03 +02:00
c49461aa58 possibilité de masquer les messages du chat (ref #155) 2020-06-09 17:28:47 +02:00
2a1179ae9a datatable sur tableau des groupes rattachables à un user (ref #142) 2020-06-09 15:29:47 +02:00
6baed4dea7 motivation obligatoire si mail non présent dans la liste blanche (ref #145) 2020-06-09 15:16:38 +02:00
f20eff9b05 gestion du niveau01 autre (ref #141) 2020-06-09 14:18:17 +02:00
e85f74cda5 compteur de visite group (ref #151) 2020-06-09 11:24:07 +02:00
e18790790b ajout compteur visite utilisateur (ref #150) 2020-06-09 09:53:25 +02:00
dc13f8a388 ajout de tooltip sur l'ensemble des boutons widgets (ref #148) 2020-06-08 16:07:39 +02:00
28f84e2460 notification ajout suppression widget (ref #131) 2020-06-08 15:21:31 +02:00
354d8df055 optimisation sur selection du projet associé à une tache (ref #138) 2020-06-08 12:13:43 +02:00
6fb6fe6ab1 optimisation sur selection du projet associé à une tache (ref #138) 2020-06-08 11:43:17 +02:00
eac7f63094 navigation projet pour retour vers le groupe (ref #152) 2020-06-08 10:55:27 +02:00
a2c17379e4 date de fin sous forme calendrier (ref #153) 2020-06-08 09:52:16 +02:00
7eae2ee972 formattage de la légende du login correcte (ref #132) 2020-06-08 09:16:26 +02:00
920e6d66d3 permettre au propriétaire du groupe de changer le propriétaire (ref #146) 2020-06-08 09:07:16 +02:00
228993dbd6 filtre de recherche sur le nom du propriétaire (ref #147) 2020-06-08 09:01:52 +02:00
de87ac1261 Merge branch 'master' into dist/envole/6/master 2020-05-27 15:37:14 +02:00
1fc6d05bf5 commit compilation 2020-05-27 15:37:03 +02:00
9f99fe2c3f Merge branch 'master' into dist/envole/6/master 2020-05-27 15:34:34 +02:00
c190db2400 executer les commandes en quiet (fixes #30105) 2020-05-27 15:31:43 +02:00
2d2d8f0938 Merge branch 'master' into dist/envole/6/master 2020-05-15 16:03:17 +02:00
90cd03196d resolution add fav si non permis 2020-05-15 16:01:32 +02:00
3f10684027 resolution merge 2020-05-15 15:52:05 +02:00
866b7ada81 resolution de la creation des groupe en mode master LDAP (fixes #74) 2020-05-15 15:49:22 +02:00
8fe1009186 Merge branch 'master' into dist/envole/6/master 2020-05-15 15:37:05 +02:00
9c27cd82f9 svg 2020-04-23 14:43:03 +02:00
526f9eec3d debut script install hors eole 2020-04-23 14:42:45 +02:00
a40e46113f svg 2020-04-23 14:35:50 +02:00
23724edfdb ignore template.yml 2020-04-23 14:34:46 +02:00
a7f181c2af suppression template des sources 2020-04-23 14:05:41 +02:00
7e37599fb6 maj 2020-04-23 08:47:16 +02:00
9b5aae23b2 debut d'un system d'execution de command à la volet 2020-04-22 11:33:42 +02:00
314ec0e85c Merge branch 'master' into dist/envole/6/master 2020-04-21 12:22:11 +02:00
9c0b1b3280 pb de template en mode scribe 2020-04-21 12:21:57 +02:00
59e4b0ee28 Merge branch 'master' into dist/envole/6/master 2020-04-20 16:05:30 +02:00
7184cfdbc6 correction sur suppression d'inscription (ref #113) 2020-04-20 16:04:18 +02:00
d983e70f1d Merge branch 'master' into dist/envole/6/master 2020-04-20 13:58:46 +02:00
eea53bdeb4 resolution reload form (ref #107) 2020-04-20 13:57:34 +02:00
4ea1540233 resolution tableau user qui déborde (ref #117) 2020-04-20 12:10:26 +02:00
425eeb4f3b Merge branch 'master' into dist/envole/6/master 2020-04-20 11:33:02 +02:00
eaab6fcb14 terme enregistrer plutot que sauvegarder (ref #113) 2020-04-20 11:25:58 +02:00
0cb286080d Merge branch 'master' into dist/envole/6/master 2020-04-20 09:36:38 +02:00
e662463969 url sur notif message via redirect (ref #19) 2020-04-20 09:34:06 +02:00
57df7bddbe retour sur page après creation de groupe (ref #126) 2020-04-20 09:09:21 +02:00
3eedb4d086 Merge branch 'master' into dist/envole/6/master 2020-04-20 08:49:54 +02:00
3cdf970377 modification label (ref #107) 2020-04-17 17:50:14 +02:00
22f868f00e widget fermer à l'ouverture de la page et bordered 2020-04-17 17:41:08 +02:00
fa287477c6 select icon dans frame + widget info comme les autres (ref #120) 2020-04-17 17:21:40 +02:00
b49bf9cd9b modification du label des boutons (ref #113) 2020-04-17 15:10:28 +02:00
362047c295 Merge branch 'master' into dist/envole/6/master 2020-04-16 16:11:00 +02:00
15ff441ca7 controle existance user avant inviation groupe (ref #107) 2020-04-16 16:06:35 +02:00
e341a30f7f plus d'apercu pour les fichiers pdf (ref #121) 2020-04-16 15:01:23 +02:00
5f66580100 commentaire sur projecttask (ref #19) 2020-04-16 14:13:24 +02:00
dfdf3ff9f5 finalisation widget project (ref #19) 2020-04-16 11:51:48 +02:00
6ffa8a20bf pj sur projecttask (ref #19) 2020-04-16 10:10:11 +02:00
a74fb27773 correction acces upload icon user (ref #120) 2020-04-16 09:08:04 +02:00
6db40533f5 svg 2020-04-15 17:44:17 +02:00
c9cdc83cd4 svg 2020-04-15 17:41:57 +02:00
aee20f238a url redirect notif mail chat (ref #101) 2020-04-15 11:51:25 +02:00
0105a44141 svg 2020-04-15 10:51:11 +02:00
9f0915789b svg 2020-04-15 10:43:15 +02:00
866536c457 correction du pb d'apostrophe (ref #116) 2020-04-14 09:07:30 +02:00
8feb7406b3 beta gestion projet (ref #19) 2020-04-14 08:56:42 +02:00
c052b1746e option commentaire dans les articles de blog (ref #112) 2020-04-06 14:51:00 +02:00
6a19b43997 ajout avertissement dans mail du chat (ref #101) 2020-04-06 10:44:31 +02:00
dca6f700e5 initialiser le template de page des groupes de travail (ref #106) 2020-04-06 10:23:27 +02:00
8d03012ba1 return to page groupe after add member (ref #109) 2020-04-06 10:15:22 +02:00
ab3d712a93 siren nullable sur champs user.siren (ref #110) 2020-04-06 09:50:31 +02:00
6c1648e184 correction sur validation du password (ref #111) 2020-04-06 09:39:30 +02:00
f9df134c46 rendre modifiable les inscriptions (ref #113) 2020-04-06 09:28:52 +02:00
f3d465f491 Merge branch 'master' into dist/envole/6/master 2020-03-09 11:29:34 +01:00
e9d13ed100 maj onboarding (ref #105) 2020-03-09 11:29:26 +01:00
189ed35825 Merge branch 'master' into dist/envole/6/master 2020-03-09 09:29:53 +01:00
7cf896e1e3 livraison nouveau onboardong (ref #105) 2020-03-09 09:21:53 +01:00
cbeb91fb64 exec command postservice en mode prod 2020-03-03 11:03:18 +01:00
767dbe7230 Merge branch 'master' into dist/envole/6/master 2020-03-03 10:56:48 +01:00
b53247af2e cron.sh en env prod 2020-03-03 10:29:02 +01:00
c74f82e475 Merge branch 'master' into dist/envole/6/master 2020-03-03 10:22:38 +01:00
a665529924 regroupement pages groupes si trop nombreux (ref #98) 2020-02-28 15:43:48 +01:00
75e2737524 Merge branch 'master' into dist/envole/6/master 2020-02-28 15:37:42 +01:00
7058bb04e0 regroupement entrée du menu (ref #98) 2020-02-28 13:57:03 +01:00
cc846026bc ajout icone glpi 2020-02-28 11:03:59 +01:00
c788b97fca Merge branch 'master' into dist/envole/6/master 2020-02-28 10:58:13 +01:00
c813e78c69 Merge branch 'master' into dist/envole/6/master 2020-02-26 17:41:48 +01:00
825947f4ae script qui valorise les niveau des users (ref #65) 2020-02-26 15:29:56 +01:00
70c1d6cd8c synchronisation label niveau01 et niveau02 dans fiche annuaire user (ref #65) 2020-02-26 15:08:06 +01:00
5e7f1ba3c7 export usergroup (ref #14) 2020-02-26 12:03:57 +01:00
b56ea851d1 enlever les caractères interdis des groupes venant d'only (ref #84) 2020-02-26 10:37:06 +01:00
e2da7e081f reglage conflit 2020-02-26 10:31:49 +01:00
bc07bec8d1 export 2020-02-25 13:04:42 +01:00
99894ec91c set noavatar si avatar non existant (ref #77) 2020-02-25 11:19:19 +01:00
2641c8197f redirect after connect 2020-02-25 11:10:33 +01:00
50431e54ee trier les formulaires par ordre alpha (ref #87) 2020-02-24 14:04:35 +01:00
103c2e826c correction widget rss (ref #23) 2020-02-24 13:48:20 +01:00
99683acc16 notifier les messages non lus de la veille uniquement (ref #23) 2020-02-24 13:37:56 +01:00
43b263d872 ajout url de gestion des inscriptions dans le mail admin (ref #94) 2020-02-24 10:59:35 +01:00
124f6fb738 ajout script forcer flag visible à true (ref #100) 2020-02-24 09:41:53 +01:00
7440f462ec correction init de la zone messge d'invitation (fixes #86) 2020-02-13 11:23:40 +01:00
afaa822d50 conflit 2020-02-13 11:21:06 +01:00
68b68e92b3 ne pas envoyer de synchro sur update de usergroup 2020-02-13 09:44:34 +01:00
90eb93eebe Merge branch 'master' into dist/envole/6/master 2020-02-13 09:39:48 +01:00
d26c4c26f0 restart websocket all 30mn 2020-02-12 09:50:08 +01:00
03526d3374 Merge branch 'master' into dist/envole/6/master 2020-02-12 09:45:35 +01:00
f034863e2a script migration draaf 2020-02-10 16:05:44 +01:00
1d27a82a3b mise à jour local.js 2020-02-10 10:56:48 +01:00
bb77cc0ea0 Merge branch 'master' into dist/envole/6/master 2020-02-10 10:52:24 +01:00
e604c45c44 suppression de trace debug 2020-02-10 10:38:15 +01:00
5adab0951c Merge branch 'master' into dist/envole/6/master 2020-02-10 10:33:31 +01:00
779aac64c5 sender = noreply sur invitation groupe et notification chat (fixes #75) 2020-02-10 09:57:13 +01:00
fc06da09c9 Merge branch 'master' into dist/envole/6/master 2020-02-10 09:52:42 +01:00
62dd70167a ajout message avertissement sur choix cible frame (fixes #22) 2020-02-10 09:49:07 +01:00
0051cf2ac4 correction titre du tableau (fixes #76) 2020-02-10 09:25:28 +01:00
219294e38b ajout sous-titre en aide sur l'image des tuiles (fixes #79) 2020-02-10 09:21:34 +01:00
88001416fa livraison tuto transnum (fixes #78) 2020-02-10 09:13:59 +01:00
fd8442bce5 init readme 2020-02-03 13:47:12 +01:00
a50d8bfea9 init readme 2020-02-03 13:44:51 +01:00
e09325e1b8 init readme 2020-02-03 13:43:48 +01:00
3954e776e5 init readme 2020-02-03 13:43:29 +01:00
362b9654e4 init readme 2020-02-03 13:42:14 +01:00
cd2008c7f6 reformuler le mail d'invitation (fixes #67) 2020-01-16 16:23:03 +01:00
743e9b6d3b Merge branch 'master' into dist/envole/6/master 2020-01-16 16:21:14 +01:00
e7e5c5f618 Merge branch 'master' of https://dev-eole.ac-dijon.fr/git/ninegate 2020-01-16 16:00:43 +01:00
fdb1738f2b surligner la page active (fixes #71) 2020-01-16 16:00:24 +01:00
bc2e2b4e4c Merge branch 'master' into dist/envole/6/master 2020-01-13 15:47:48 +01:00
31fbeaf621 pouvoir utiliser le serveur d'envoi de mail local au scribe (fixes #26) 2020-01-13 15:47:35 +01:00
35b61480a2 svg 2020-01-08 15:47:19 +01:00
d649c11821 Merge branch 'master' into dist/envole/6/master 2020-01-08 15:45:34 +01:00
8be086fe70 svg 2020-01-08 15:28:50 +01:00
61c8ad37fd Merge branch 'master' into dist/envole/6/master 2020-01-08 15:27:07 +01:00
a97ba39dbd Merge branch 'master' into dist/envole/6/master 2020-01-06 09:21:19 +01:00
ec17681560 rester sur la page sur un F5 (fixes #70) 2020-01-02 14:36:26 +01:00
500362ea3f invitation à un groupe (fixes #67) 2020-01-02 13:57:15 +01:00
a1523c4ac5 svg 2019-12-19 14:13:14 +01:00
3e35acb028 Merge branch 'master' into dist/envole/6/master 2019-12-19 14:13:03 +01:00
5b14604d9c Merge branch 'master' into dist/envole/6/master 2019-12-18 14:54:25 +01:00
1d0628ea03 widget only 2019-12-18 14:54:21 +01:00
4d7d0fd82b widget only 2019-12-17 14:56:15 +01:00
e124f3617d ajout item fluxbb (fixes #66) 2019-12-17 11:14:49 +01:00
8c9bd2f8b0 autoriser plus de caractères dans le nom des groupes 2019-12-17 10:47:09 +01:00
81740cd4e5 Merge branch 'master' into dist/envole/6/master 2019-12-16 17:21:35 +01:00
3a03dc8cf5 correction cron only 2019-12-16 17:21:29 +01:00
8211c08403 Merge branch 'master' into dist/envole/6/master 2019-12-16 17:20:11 +01:00
9a0c9086d2 correction cron only 2019-12-16 17:20:06 +01:00
1acce9d3fd Merge branch 'master' into dist/envole/6/master 2019-12-16 17:14:52 +01:00
e1bdd1928b espace possible dans nom de groupe 2019-12-16 17:14:32 +01:00
742383206e Merge branch 'master' into dist/envole/6/master 2019-12-16 17:04:33 +01:00
1eacaeea9a pb sur propriétaire de groupe 2019-12-16 17:03:53 +01:00
c702a4b0d2 ajout colonne metier et fonction (fixes #20) 2019-12-16 16:07:10 +01:00
fbea5bcccb url limesurvey par défaut sur admin (fixes #64) 2019-12-16 15:29:06 +01:00
84da7e7ddd svg 2019-12-16 14:25:25 +01:00
6729035f15 alert profilée par niveau01 (fixes #62) 2019-12-13 16:52:12 +01:00
6741bfffe6 bouton add en premier (fixes #60) 2019-12-13 16:27:44 +01:00
cba255f52c caractère interdit dans nom de groupe (fixes #61) 2019-12-13 16:14:58 +01:00
f54efc703c Merge branch 'master' into dist/envole/6/master 2019-12-13 15:46:30 +01:00
5e9d7765ce sync only 2019-12-13 15:13:46 +01:00
8e9ff10223 synchro only 2019-12-12 12:02:54 +01:00
ee84ce033e synchro only 2019-12-11 15:26:47 +01:00
3b1bff0710 correction 2019-12-09 13:38:25 +01:00
d31d2d8628 Merge branch 'master' into dist/envole/6/master 2019-12-09 13:37:56 +01:00
7e862e8cb6 correction 2019-12-06 11:22:04 +01:00
8e00e5765a Merge branch 'master' into dist/envole/6/master 2019-12-06 11:21:00 +01:00
4fa5cb30ea correction 2019-12-06 11:00:10 +01:00
5f933a67b9 Merge branch 'master' into dist/envole/6/master 2019-12-06 10:59:04 +01:00
92ce9cbaaa correction 2019-12-06 10:55:14 +01:00
a095f6504b correction style 2019-12-06 10:16:02 +01:00
0203e6bd04 sur creation modification on ajoute le propriétaire dans le groupe en tant que manager (fixes #51) 2019-12-05 14:17:55 +01:00
72ad84e1b7 Merge branch 'master' into dist/envole/6/master 2019-12-05 14:17:49 +01:00
fc482a7b41 correction orthographe (fixes #52) 2019-12-05 10:18:03 +01:00
77c6cd4362 resolution message non lus (fixes #34) 2019-11-29 09:37:13 +01:00
9067d50b8e envole 2019-11-28 11:32:41 +01:00
7670e491a4 envole 2019-11-28 10:46:49 +01:00
e6c5996d07 synchro ENT 2019-11-28 10:37:12 +01:00
15c9ec4114 envole 2019-11-27 16:22:51 +01:00
a8b9867f61 envole 2019-11-27 16:16:42 +01:00
92eb9d5942 generation item envole 2019-11-27 14:19:46 +01:00
09e8be7058 icone 2019-11-27 12:01:32 +01:00
c957d74d74 svg 2019-11-27 10:58:29 +01:00
9271ea302f svg 2019-11-27 10:47:31 +01:00
774fb08894 svg 2019-11-27 10:13:43 +01:00
4717b95efd bouton plus sur widget blog et calendar 2019-11-26 09:24:11 +01:00
e83b354cbb svg 2019-11-25 14:37:41 +01:00
0b1398f8b5 svg 2019-11-25 14:26:26 +01:00
0c099b0784 Merge branch 'master' into dist/envole/6/master 2019-11-21 10:42:56 +01:00
2d640dc09a svg 2019-11-21 10:40:15 +01:00
4b83534c09 suppression notion eportail dans dicos (fixes #25) 2019-11-20 10:52:03 +01:00
99f29975d8 resoulion merge 2019-11-20 10:02:37 +01:00
ac8d60f5db svg 2019-11-20 09:45:12 +01:00
d540b9f815 svg 2019-11-20 09:41:44 +01:00
0b6684044e svg 2019-11-19 14:14:40 +01:00
b82b6296d0 svg 2019-11-19 11:21:45 +01:00
f141b15e48 dep 2019-11-19 11:00:44 +01:00
7416dfaa3e Merge branch 'master' into dist/envole/6/master 2019-11-19 10:28:59 +01:00
f4fa7c9bfc dep sur envole-dependances 2019-11-19 10:28:17 +01:00
03e0a1dc7c Merge branch 'master' into dist/envole/6/master 2019-11-19 10:26:14 +01:00
fb5e3c72ee dependance sur envole-dependances 2019-11-19 10:25:56 +01:00
0fd29ec35f svg 2019-11-19 10:24:45 +01:00
a0bb903635 ajout php-imagick en dépendance 2019-11-18 16:34:51 +01:00
6ad1eb5569 résolution conflit 2019-11-15 11:45:54 +01:00
c2412b504c prise en compte de la couleur des groupes (ref #38) 2019-11-15 11:17:25 +01:00
7f23665454 indiquer en sous titre le groupe emetteur du message avec lien qui permet d'y accéder (fixes #33) 2019-11-08 16:31:32 +01:00
e553a9fdeb ne notifier que sur les messages des groupes de travail et non sur les groupes fonctionnels (fixes #34) 2019-11-08 16:21:08 +01:00
3b0ac28df9 correctif sur gestion des groupes via console admin (fixes #35) 2019-11-08 16:09:10 +01:00
8d1b8db3f4 afficher l'ensemble des notices liés au profil lors de la signature (fixes #36) 2019-11-08 16:02:21 +01:00
69b9f27040 ajout icone app 2019-11-05 17:00:54 +01:00
bcb284efca ajout icon grr 2019-11-05 15:36:56 +01:00
e58e6cf9c8 correction orthographe (fixes #30) 2019-11-05 09:37:15 +01:00
5b369002b5 possiblite de fit les grid 2019-11-04 12:03:02 +01:00
9cbcdd28b9 déclaration du proxy en http et non plus en tcp (ref #29) 2019-10-29 16:16:41 +01:00
2b1625b5f8 Merge branch 'master' into dist/envole/6/master 2019-10-29 09:45:34 +01:00
bdb38dd301 notification du nombre de message non lu (fixes #6) 2019-10-28 16:55:36 +01:00
04c061b7f6 indicateur des messages non lus en gras (fixes #7) 2019-10-28 15:57:57 +01:00
6d89671acf découpage des tour par frame (fixes #24) 2019-10-28 15:07:23 +01:00
5d877dd8ca indicateur user online sur le chat (fixes #5) 2019-10-28 11:39:08 +01:00
7265099724 ajout core-init-01.sql dans le gitignore 2019-10-28 11:37:50 +01:00
87ce3767fa svg 2019-10-23 10:45:06 +02:00
28e9c37e48 Merge branch 'master' into dist/envole/6/master 2019-10-23 10:44:18 +02:00
02a8b475f7 svg 2019-10-21 17:23:25 +02:00
ce5552e610 ajustement onboarding + affiche fiche utilisateur sur clique avatar 2019-10-21 17:12:03 +02:00
52ad21060b ajustement onboarding + affiche fiche utilisateur sur clique avatar 2019-10-21 17:08:46 +02:00
7ce296fd29 gestion visible et ajout colonne telephone (fixes #15 #16) 2019-10-21 14:09:24 +02:00
198ebd14f5 titre widget responsiv (fixes #20) 2019-10-21 12:16:18 +02:00
4f3efd5776 replacement mot clé #login# par username (fixes #21) 2019-10-21 11:46:36 +02:00
c08719deda ajout description évènement en survol de l'event (fixes #22) 2019-10-21 10:48:57 +02:00
7c50db02fd passage à une demi seconde de temps de reconexion (ref #23) 2019-10-18 14:10:48 +02:00
2262bebcda Merge branch 'master' into dist/envole/6/master 2019-10-18 14:10:19 +02:00
33f0d05fb6 gérer la deconnexion au websocket (ref #23) 2019-10-18 13:56:25 +02:00
f0ae7eb4f4 Merge branch 'master' into dist/envole/6/master 2019-10-18 13:56:17 +02:00
b29ce57c6e essai reco websocket 2019-10-17 13:37:39 +02:00
2e34d65cbf svg 2019-10-16 16:17:56 +02:00
df29e2ca71 Merge branch 'master' into dist/envole/6/master 2019-10-16 13:55:20 +02:00
abd323163e svg modele scribe 2019-10-15 10:02:33 +02:00
e9b2f694fa svg 2019-10-14 13:30:50 +02:00
210b669909 mise à jour pour rest 2019-10-09 17:01:41 +02:00
ef0d452bc2 Merge branch 'master' into dist/envole/6/master 2019-10-09 13:49:02 +02:00
1cd1174c79 adaptation theme transnum 2019-10-09 13:48:38 +02:00
601 changed files with 31053 additions and 2665 deletions

View File

@ -8,6 +8,7 @@ EOLE_VERSION=2.6
EOLE_RELEASE=2.6.2
PKGAPPS=web
################################
# Début de zone à ne pas éditer
################################

57
README.md Normal file
View File

@ -0,0 +1,57 @@
# Ninegate
## Portail Open Source
Ce projet est opensource
Vous pouvez à tout moment modifier le code de votre portail
- Distribuer Ninegate
- Ninegate est développé dans le cadre du projet Envole. Vous pourrez trouver le code source de NinthGate sur la forge du projet
Ninegate est propulsé par la société Cadoles
## Portail Profilé
Tous les éléments du portail peuvent être distribués en fonction du profil de l'utilisateur.
Il est possible de définir le profil de l'utilisateur en fonction :
De son groupe d'appartenance
- D'attributs Annuaire
- D'attributs SSO
En fonction du profil de l'utilisateur, il est possible de distribuer :
- Des pages en onglet
- Des Flux RSS
- Des Annonces
- Des Applications Web
- Des Calendriers
- Des Blogs
## Portail Personnalisable
Les utilisateurs du portail sont libres de créer leur propre page.
Les pages de l'utilisateur pouvant prendre plusieurs formes :
- Une page pointant sur l'adresse d'un autre site
- Une page construite par l'utilisateur via l'utilisation d'un éditeur riche
- Une page constituée de widgets qu'il dispose selon son libre choix
## Portail Evolutif
NineGate est évolutif dans le sens où, vous disposerez d'une large bibliothèque de widgets qui composeront vos pages
Voici quelques exemples :
- Widget URL
- Widget Flux RSS
- Widget Editeur de texte
- Widget Calendriers
- Widget Favoris
- Widget Dépôt de Fichiers
- Et bien d'autres encore

View File

@ -1,8 +0,0 @@
dep sur
apt-get eole-web
apt-get install composer
apt-get install php-mbstring
apt-get install eole-db
eole-client-annuaire
apt-get install eole-envole-themes

4
debian/control vendored
View File

@ -15,10 +15,10 @@ Description: Filtre SSO pour ninegate "EOLE".
Package: eole-ninegate
Architecture: all
Depends: ${misc:Depends}, eole-web (>= 2.6.1), ninegate-sso, eole-db, eole-client-annuaire, eole-sondepiwik, eole-posh-profil, eole-envole-themes
Depends: ${misc:Depends}, eole-web (>= 2.6.1), ninegate-sso, eole-envole-dependances
Description: Eolisation de l'application ninegate.
Package: ninegate-apps
Architecture: all
Depends: ${misc:Depends}, eole-web-pkg (>= 2.6.1), eole-client-annuaire-pkg, sondepiwik-apps, posh-profil-apps, composer, php-zip, php-mbstring
Depends: ${misc:Depends}, eole-web-pkg (>= 2.6.1), envole-dependances-apps
Description: Sources pour ninegate "EOLE".

View File

@ -1,682 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<file filelist='ninegate' name='/etc/eole/eole-db.d/ninegate-db.yml' rm='True' mkdir='True'/>
<file filelist='ninegate' name='/usr/share/eole/posttemplate/90-ninegate' source="ninegate-posttemplate.sh" rm='True' mkdir='True' mode="700"/>
</files>
<containers>
<container name='web'>
<file filelist='ninegate' name='/etc/apache2/sites-available/ninegate' source='ninegate-apache.conf' rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/app/config/parameters.yml" source="ninegate-parameters.yml" rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/app/config/template.yml" source="ninegate-template.yml" rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/scripts/ninegate-postservice-00.sh" source="ninegate-postservice-00.sh" rm="True" mode="700" />
<file filelist="ninegate" name="/var/www/html/ninegate/src/Cadoles/CoreBundle/Command/data/core-init-01.sql" source="ninegate-init-01.sql" rm="True"/>
<file filelist='ninegate' name='/etc/cron.d/ninegate' source='ninegate.cron' rm='True'/>
<service method='apache' servicelist='ninegate'>ninegate</service>
<service_access service='ninegate_websocket'>
<port port_type="SymLinkOption">ninegate_websocket_portexterne</port>
</service_access>
</container>
</containers>
<variables>
<family name='Ninegate'>
<variable name="activer_eportail" type="oui/non" description="Activer ePortail" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_limesurvey" type="oui/non" description="Activer Limesurvey" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_moodle" type="oui/non" description="Activer Moodle" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_nextcloud" type="oui/non" description="Activer Nextcloud" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_opensondage" type="oui/non" description="Activer Opensondage" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_piwik" type="oui/non" description="Activer Piwik" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_sondepiwik_local" type="oui/non" description="Activer Sonde Piwik" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_wordpress" type="oui/non" description="Activer Wordpress" hidden='True' exists='False'><value>non</value></variable>
<variable name='moodle_apikey' type='string' description="API Key pour accéder au webservice Moodle" hidden='True' exists='False' />
<variable name='ninegate_test_sonde' type='oui/non' hidden='True'/>
<variable name='ninegate_test_conf_cadolesldap' type='oui/non' hidden='True'/>
<variable name='ninegate_test_conf_ldap' type='oui/non' hidden='True'/>
<variable type='oui/non' name='activer_ninegate' description='Activer Ninegate'><value>oui</value></variable>
<variable type='string' name='ninegate_masteridentity' description="Maître de l'Identité" mandatory='True'><value>LDAP</value></variable>
<variable type='string' name='ninegate_mode_auth' description="Mode Authentification" mandatory='True'><value>CAS</value></variable>
<variable type='string' name='ninegate_api_key' description="Clé d'accès API" mandatory='True'><value>APIKeyNinegate</value></variable>
<variable type='oui/non' name='ninegate_syncldap' description="Synchroniser Ninegate vers votre annuaire"><value>non</value></variable>
<variable type='oui/non' name='ninegate_synceportail' description="Synchroniser Ninegate vers ePortail"><value>non</value></variable>
<variable type='string' name='ninegate_ldaptemplate' description="Modèle d'annuaire"><value>scribe</value></variable>
<variable type='string' name='ninegate_pwdadmin' description="Mot de passe du compte admin durant l'instance (idem valeur Cadoles ldap)" mandatory='True'><value>cadoles</value></variable>
<variable type='string' name='ninegate_organization' description="Nom de l'organisation principale (idem valeur Cadoles ldap)" mandatory='True'><value>cadoles</value></variable>
<variable type='string' name='ninegate_niveau01branche' description="Nom de la branche de Niveau 01 (idem valeur Cadoles ldap)" mandatory='True'><value>niveau01</value></variable>
<variable type='string' name='ninegate_niveau02branche' description="Nom de la branche de Niveau 02 (idem valeur Cadoles ldap)" mandatory='True'><value>niveau02</value></variable>
<variable type='string' name='ninegate_niveau01name' description="Nom de la première orgranisation de Niveau 01 (idem valeur Cadoles ldap)" mandatory='True'><value>cadoles</value></variable>
<variable type='string' name='ninegate_niveau01siren' description="SIREN de la première orgranisation de Niveau 01 (idem valeur Cadoles ldap)" mandatory='True'><value>cadoles</value></variable>
<variable type='string' name='ninegate_niveau01label' description="Label singulier du niveau 01 d'organisation" mandatory='True'><value>Ecole</value></variable>
<variable type='string' name='ninegate_niveau01labels' description="Label pluriel du niveau 01 d'organisation" mandatory='True'><value>Ecoles</value></variable>
<variable type='string' name='ninegate_niveau01icon' description="Icon du niveau 01 d'organisation" mandatory='True'><value>fa-building</value></variable>
<variable type='oui/non' name='ninegate_niveau02view' description="Gérer un niveau 02 d'organisation"><value>non</value></variable>
<variable type='string' name='ninegate_niveau02label' description="Label pluriel du niveau 02 d'organisation" mandatory='True'><value>Service</value></variable>
<variable type='string' name='ninegate_niveau02labels' description="Label pluriel du niveau 02 d'organisation" mandatory='True'><value>Services</value></variable>
<variable type='string' name='ninegate_niveau02icon' description="Icon du niveau 02 d'organisation" mandatory='True'><value>fa-sitemap</value></variable>
<variable type='string' name='ninegate_colormain' description="Couleur principale" mandatory='True'><value>2c3e50</value></variable>
<variable type='string' name='ninegate_fontcolorhover' description="Couleur des polices sur fond de couleur principale" mandatory='True'><value>FFFFFF</value></variable>
<variable type='string' name='ninegate_moderegistration' description="Mode de registration : none / byuser / byadmin" mandatory='True'><value>none</value></variable>
<variable type='string' name='ninegate_keyterm' description="Taille minimun du password" mandatory='True'><value>8</value></variable>
<!-- MODULE PORTAL -->
<variable type="oui/non" name='ninegate_activate_portal' description='Activer le module portail' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_page' description='Activer le module page' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_item' description='Activer le module item' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_alert' description='Activer le module annonce' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_calendar' description='Activer le module calendrier' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_blog' description='Activer le module blog' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_flux' description='Activer le module flux' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_notice' description='Activer le module charte' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE SYNCENVOLE -->
<variable type="oui/non" name='ninegate_activate_syncenvole' description='Activer le module Synchronisation Envole' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE CRON -->
<variable type="oui/non" name='ninegate_activate_cron' description='Activer le module CRON' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE WEBSOCKET -->
<variable type="oui/non" name='ninegate_activate_websocket' description='Activer le module WEBSOCKET' mandatory='True'>
<value>oui</value>
</variable>
<!-- LIMESURVEY -->
<variable type="oui/non" name='ninegate_activate_widlimesurvey' description='Activer le widget Limesurvey' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widlimesurvey_url' description='URL complète de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_apiuser' description='API User de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_apikey' description='API Key de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_syncenvole' description='URL Posh-Profil pour synchronisation Limesurvey' mandatory='True' />
<!-- MOODLE -->
<variable type="oui/non" name='ninegate_activate_widmoodle' description='Activer le widget Moodle' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widmoodle_url' description='URL complète de votre Moodle' mandatory='True' />
<variable type='string' name='ninegate_widmoodle_apikey' description='API Key de votre Moodle' mandatory='True' />
<variable type='string' name='ninegate_widmoodle_syncenvole' description='URL Posh-Profil pour synchronisation Moodle' mandatory='True' />
<!-- NEXTCLOUD -->
<variable type="oui/non" name='ninegate_activate_widnextcloud' description='Activer le widget Nextcloud' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widnextcloud_url' description='URL complète de votre Nextcloud' mandatory='True' />
<!-- OPENSONDAGE -->
<variable type="oui/non" name='ninegate_activate_widopensondage' description='Activer le widget Opensondage' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widopensondage_url' description='URL complète de votre Opensondage' mandatory='True' />
<!-- PIWIK -->
<variable type="oui/non" name='ninegate_activate_widpiwik' description='Activer le widget Piwik' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widpiwik_url' description='URL complète de votre Piwik' mandatory='True' />
<variable type='string' name='ninegate_widpiwik_syncenvole' description='URL Posh-Profil pour synchronisation Piwik' mandatory='True' />
<!-- WORDPRESS -->
<variable type="oui/non" name='ninegate_activate_widwordpress' description='Activer le widget Wordpress' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widwordpress_url' description='URL complète de votre Wordpress' mandatory='True' />
<variable type='string' name='ninegate_widwordpress_syncenvole' description='URL Posh-Profil pour synchronisation Wordpress' mandatory='True' />
<!-- WEBSOCKET -->
<variable type='string' name='ninegate_websocket_url' description='Host du serveur Websocket' mandatory='True' />
<variable type='string' name='ninegate_websocket_portexterne' description='Port de commuinication externe du serveur Websocket' mandatory='True' >
<value>5555</value>
</variable>
<variable type='string' name='ninegate_websocket_portinterne' description='Port de commuinication interne du serveur Websocket' mandatory='True'>
<value>5556</value>
</variable>
<!-- EMAIL -->
<variable type='string' name='ninegate_noreply' description='Adresse mail utilisé pour le noreply' mandatory='True' />
<variable type='string' name='ninegate_smtphost' description='Host du serveur SMTP' />
<variable type='string' name='ninegate_smtpport' description='Port du serveur SMTP' />
<variable type='string' name='ninegate_smtpuser' description='Compte du serveur SMTP' />
<variable type='string' name='ninegate_smtppwd' description='Fichier contenant le mot de passe associé du compte SMTP' />
<variable type='string' name='ninegate_smtpencryption' description='Type Encryptage du serveur SMTP' />
<variable type='string' name='ninegate_smtpauthmode' description='Mode Authentification du serveur SMTP' />
<!-- EOLEDB -->
<variable type='string' name='ninegate_db_mode' description='Serveur de bases de données à utiliser' mode='expert'/>
<variable type='string' name='ninegate_dbserver' description='Adresse du serveur de base de données' mode='expert'/>
<variable type='number' name='ninegate_dbport' description="Port d'écoute du serveur de base de données" mode='expert'/>
<variable type='string' name='ninegate_allow_hosts' description="Hôtes autorisés à utiliser la base de données" multi='True' mode='expert'/>
<variable type='string' name='ninegate_dbuser' description='Utilisateur du serveur de base de données' mode='expert'/>
<variable type='string' name='ninegate_dbpass' description='Fichier de mot de passe du serveur' mode='expert'/>
</family>
<separators>
<separator name="ninegate_syncldap">Paramètres associés à l'Annuaire</separator>
<separator name="ninegate_niveau01label">Paramètres associés aux look de l'application</separator>
<separator name="ninegate_activate_portal">Paramètres associés aux modules à activer</separator>
<separator name="ninegate_activate_widlimesurvey">Paramètres associés au Portail</separator>
<separator name="ninegate_websocket_url">Paramètres associés au Serveur WEBSOCKET</separator>
<separator name="ninegate_noreply">Paramètres associés aux Mails</separator>
<separator name="ninegate_db_mode">Paramètres associés à la Base de Données</separator>
</separators>
</variables>
<constraints>
<condition name='hidden_if_in' source='activer_apache'>
<param>non</param>
<target type='variable'>activer_ninegate</target>
</condition>
<condition name='hidden_if_in' source='activer_eportail'>
<param>non</param>
<target type='variable'>ninegate_synceportail</target>
</condition>
<condition name='hidden_if_in' source='activer_ninegate'>
<param>non</param>
<target type='variable'>ninegate_masteridentity</target>
<target type='variable'>ninegate_mode_auth</target>
<target type='variable'>ninegate_api_key</target>
<target type='variable'>ninegate_syncldap</target>
<target type='variable'>ninegate_synceportail</target>
<target type='variable'>ninegate_ldaptemplate</target>
<target type='variable'>ninegate_pwdadmin</target>
<target type='variable'>ninegate_organization</target>
<target type='variable'>ninegate_niveau01branche</target>
<target type='variable'>ninegate_niveau02branche</target>
<target type='variable'>ninegate_niveau01name</target>
<target type='variable'>ninegate_niveau01siren</target>
<target type='variable'>ninegate_niveau01label</target>
<target type='variable'>ninegate_niveau01labels</target>
<target type='variable'>ninegate_niveau01icon</target>
<target type='variable'>ninegate_niveau02view</target>
<target type='variable'>ninegate_niveau02label</target>
<target type='variable'>ninegate_niveau02labels</target>
<target type='variable'>ninegate_niveau02icon</target>
<target type='variable'>ninegate_colormain</target>
<target type='variable'>ninegate_fontcolorhover</target>
<target type='variable'>ninegate_moderegistration</target>
<target type='variable'>ninegate_keyterm</target>
<target type='variable'>ninegate_activate_portal</target>
<target type='variable'>ninegate_activate_page</target>
<target type='variable'>ninegate_activate_item</target>
<target type='variable'>ninegate_activate_alert</target>
<target type='variable'>ninegate_activate_calendar</target>
<target type='variable'>ninegate_activate_blog</target>
<target type='variable'>ninegate_activate_flux</target>
<target type='variable'>ninegate_activate_notice</target>
<target type='variable'>ninegate_activate_syncenvole</target>
<target type='variable'>ninegate_activate_cron</target>
<target type='variable'>ninegate_activate_websocket</target>
<target type='variable'>ninegate_noreply</target>
<target type='variable'>ninegate_smtphost</target>
<target type='variable'>ninegate_smtpport</target>
<target type='variable'>ninegate_smtpuser</target>
<target type='variable'>ninegate_smtppwd</target>
<target type='variable'>ninegate_smtpencryption</target>
<target type='variable'>ninegate_smtpauthmode</target>
<target type='variable'>ninegate_db_mode</target>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_allow_hosts</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbpass</target>
<target type='filelist'>ninegate</target>
<target type='servicelist'>ninegate</target>
</condition>
<condition name='hidden_if_in' source='ninegate_masteridentity'>
<param>LDAP</param>
<param>SSO</param>
<target type='variable'>ninegate_syncldap</target>
<target type='variable'>ninegate_synceportail</target>
<target type='variable'>ninegate_moderegistration</target>
<target type='variable'>ninegate_keyterm</target>
</condition>
<condition name='hidden_if_in' source='ninegate_masteridentity'>
<param>SQL</param>
<param>SSO</param>
<target type='variable'>ninegate_ldaptemplate</target>
<target type='variable'>ninegate_test_conf_cadolesldap</target>
</condition>
<condition name='hidden_if_in' source='ninegate_syncldap'>
<param>non</param>
<target type='variable'>ninegate_pwdadmin</target>
<target type='variable'>ninegate_niveau01name</target>
<target type='variable'>ninegate_niveau01siren</target>
</condition>
<auto name='calc_multi_condition' target='ninegate_test_conf_cadolesldap'>
<param>CadolesLDAP</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_ldaptemplate</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</auto>
<auto name='calc_multi_condition' target='ninegate_test_conf_ldap'>
<param>oui</param>
<param name="operator">OR</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_syncldap</param>
<param type='eole' name='condition_2' hidden='False'>ninegate_test_conf_cadolesldap</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<condition name='hidden_if_in' source='ninegate_test_conf_ldap'>
<param>non</param>
<target type='variable'>ninegate_organization</target>
<target type='variable'>ninegate_niveau01branche</target>
<target type='variable'>ninegate_niveau02branche</target>
</condition>
<condition name='hidden_if_in' source='ninegate_niveau02view'>
<param>non</param>
<target type='variable'>ninegate_niveau02label</target>
<target type='variable'>ninegate_niveau02labels</target>
<target type='variable'>ninegate_niveau02icon</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODULE PORTAL -->
<condition name='hidden_if_in' source='ninegate_activate_portal'>
<param>non</param>
<target type='variable'>ninegate_activate_widlimesurvey</target>
<target type='variable'>ninegate_activate_widmoodle</target>
<target type='variable'>ninegate_activate_widnextcloud</target>
<target type='variable'>ninegate_activate_widopensondage</target>
<target type='variable'>ninegate_activate_widpiwik</target>
<target type='variable'>ninegate_activate_widwordpress</target>
</condition>
<condition name='hidden_if_in' source='ninegate_activate_portal'>
<param>oui</param>
<target type='variable'>ninegate_activate_page</target>
<target type='variable'>ninegate_activate_item</target>
<target type='variable'>ninegate_activate_alert</target>
<target type='variable'>ninegate_activate_calendar</target>
<target type='variable'>ninegate_activate_blog</target>
<target type='variable'>ninegate_activate_flux</target>
<target type='variable'>ninegate_activate_notice</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODULE SYNCENVOLE -->
<condition name='hidden_if_in' source='ninegate_activate_syncenvole'>
<param>non</param>
<target type='variable'>ninegate_widlimesurvey_syncenvole</target>
<target type='variable'>ninegate_widmoodle_syncenvole</target>
<target type='variable'>ninegate_widpiwik_syncenvole</target>
<target type='variable'>ninegate_widwordpress_syncenvole</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODULE WEBSOCKET -->
<condition name='hidden_if_in' source='ninegate_activate_websocket'>
<param>non</param>
<target type='variable'>ninegate_websocket_url</target>
<target type='variable'>ninegate_websocket_portinterne</target>
<target type='variable'>ninegate_websocket_portexterne</target>
<target type='servicelist'>ninegate_websocket</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_websocket_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_apache</param>
<param type='eole' name='match' hidden='False'>web_url</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET LIMESURVEY -->
<fill name='calc_multi_condition' target='ninegate_activate_widlimesurvey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widlimesurvey'>
<param>non</param>
<target type='variable'>ninegate_widlimesurvey_url</target>
<target type='variable'>ninegate_widlimesurvey_apiuser</target>
<target type='variable'>ninegate_widlimesurvey_apikey</target>
<target type='variable'>ninegate_widlimesurvey_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>/limesurvey</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_apiuser'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>restuser</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_apikey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>apikeyenvole</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET MOODLE -->
<fill name='calc_multi_condition' target='ninegate_activate_widmoodle'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widmoodle'>
<param>non</param>
<target type='variable'>ninegate_widmoodle_url</target>
<target type='variable'>ninegate_widmoodle_apikey</target>
<target type='variable'>ninegate_widmoodle_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widmoodle_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>/moodle</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widmoodle_apikey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param type='eole' name='match' hidden='False'>moodle_apikey</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widmoodle_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET NEXTCLOUD -->
<fill name='calc_multi_condition' target='ninegate_activate_widnextcloud'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nextcloud</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widnextcloud'>
<param>non</param>
<target type='variable'>ninegate_widnextcloud_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widnextcloud_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nextcloud</param>
<param name='match'>/nextcloud</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET OPENSONDAGE -->
<fill name='calc_multi_condition' target='ninegate_activate_widopensondage'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_opensondage</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widopensondage'>
<param>non</param>
<target type='variable'>ninegate_widopensondage_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widopensondage_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_opensondage</param>
<param name='match'>/opensondage</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET PIWIK -->
<fill name='calc_multi_condition' target='ninegate_activate_widpiwik'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widpiwik'>
<param>non</param>
<target type='variable'>ninegate_widpiwik_url</target>
<target type='variable'>ninegate_widpiwik_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widpiwik_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>/piwik</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widpiwik_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET SONDE -->
<auto name='calc_multi_condition' target='ninegate_test_sonde'>
<param>oui</param>
<param name="operator">OR</param>
<param type='eole' name='condition_1' hidden='False'>activer_sondepiwik_local</param>
<param type='eole' name='condition_2' hidden='False'>activer_piwik</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<!-- AFFICHAGE EN FONCTION DU WIDGET WORDPRESS -->
<fill name='calc_multi_condition' target='ninegate_activate_widwordpress'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widwordpress'>
<param>non</param>
<target type='variable'>ninegate_widwordpress_url</target>
<target type='variable'>ninegate_widwordpress_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widwordpress_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>/wordpress</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widwordpress_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU MODE DE BDD -->
<condition name='hidden_if_in' source='ninegate_db_mode'>
<param>local</param>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_dbpass</target>
</condition>
<condition name='hidden_if_in' source='ninegate_db_mode'>
<param>default</param>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_dbpass</target>
<target type='variable'>ninegate_allow_hosts</target>
</condition>
<!-- VALID EMUN DES DIFFRENTES COMBO -->
<check name='valid_enum' target='ninegate_masteridentity'>
<param>['LDAP', 'SQL', 'SSO']</param>
</check>
<check name='valid_enum' target='ninegate_mode_auth'>
<param>['CAS', 'SAML', 'SQL', 'LDAP']</param>
</check>
<check name='valid_enum' target='ninegate_moderegistration'>
<param>['none', 'byuser', 'byadmin']</param>
</check>
<check name='valid_enum' target='ninegate_ldaptemplate'>
<param>['scribe', 'open', 'CadolesLDAP']</param>
</check>
<check name='valid_enum' target='ninegate_smtpencryption'>
<param>['tls', 'ssl', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_smtpauthmode'>
<param>['plain', 'login', 'cram-md5', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_db_mode'>
<param>['default', 'externe', 'local']</param>
</check>
</constraints>
<help>
</help>
</creole>

1443
dicos/91_ninegate.xml Normal file
View File

@ -0,0 +1,1443 @@
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<file filelist='ninegate' name='/etc/eole/eole-db.d/ninegate-db.yml' rm='True' mkdir='True'/>
</files>
<containers>
<container name='web'>
<package>ninegate-apps</package>
<file filelist='ninegate' name='/etc/apache2/sites-available/ninegate' source='ninegate-apache.conf' rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/app/config/parameters.yml" source="ninegate-parameters.yml" rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/app/config/template.yml" source="ninegate-template.yml" rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/scripts/ninegate-postservice-00.sh" source="ninegate-postservice-00.sh" rm="True" mode="700" />
<file filelist="ninegate" name="/var/www/html/ninegate/src/Cadoles/CoreBundle/Command/data/core-init-01.sql" source="ninegate-init-01.sql" rm="True"/>
<file filelist='ninegate' name='/etc/cron.d/ninegate' source='ninegate.cron' rm='True'/>
<file filelist='ninegate-migration' name='/var/www/html/envole-migration/config/config-db-ninegate.php' source='ninegate-migration.php' mkdir='True'/>
<service method='apache' servicelist='ninegate'>ninegate</service>
<service_access service='ninegate_websocket'>
<port port_type="SymLinkOption">ninegate_websocket_portexterne</port>
</service_access>
</container>
</containers>
<variables>
<family name='Ninegate'>
<variable name="ninegate_test_ninegate" type="oui/non" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_adminer" type="oui/non" description="Activer Adminer" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_balado" type="oui/non" description="Activer Balado" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_dokuwiki" type="oui/non" description="Activer Dokuwiki" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_econnect" type="oui/non" description="Activer eConnect" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_ead_web" type="oui/non" description="Activer EAD" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_eoe" type="oui/non" description="Activer EOE" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_eop" type="oui/non" description="Activer EOP" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_etherhome" type="oui/non" description="Activer Etherhome" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_etherhome" type="oui/non" description="Activer Etherhome" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_fluxbb" type="oui/non" description="Activer Fluxbb" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_genconfig" type="oui/non" description="Activer Genconfig" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_gepi" type="oui/non" description="Activer GEPI" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_glpi" type="oui/non" description="Activer GLPI" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_grr" type="oui/non" description="Activer Grr" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_kanboard" type="oui/non" description="Activer Kanboard" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_limesurvey" type="oui/non" description="Activer Limesurvey" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_mindmaps" type="oui/non" description="Activer Mindmaps" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_moodle" type="oui/non" description="Activer Moodle" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_nextcloud" type="oui/non" description="Activer Nextcloud" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_nineboard" type="oui/non" description="Activer Nineboard" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_opensondage" type="oui/non" description="Activer Opensondage" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_phpldapadmin" type="oui/non" description="Activer phpLdapAdmin" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_piwik" type="oui/non" description="Activer Piwik" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_roundcube" type="oui/non" description="Activer Roundcube" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_sacoche" type="oui/non" description="Activer Sacoche" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_wordpress" type="oui/non" description="Activer Wordpress" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_sondepiwik_local" type="oui/non" description="Activer Sonde Piwik" hidden='True' exists='False'><value>non</value></variable>
<variable name='poshprofil_typesynchro' type='string' description='Type de synchronisation' hidden='True' exists='False'><value>Annuaire</value></variable>
<variable name='moodle_apikey' type='string' description="API Key pour accéder au webservice Moodle" hidden='True' exists='False' />
<variable name='ninegate_test_sonde' type='oui/non' hidden='True'/>
<variable name='ninegate_test_conf_cadolesldap' type='oui/non' hidden='True'/>
<variable name='ninegate_test_conf_ldap' type='oui/non' hidden='True'/>
<variable type='oui/non' name='activer_ninegate' description='Activer Ninegate'><value>oui</value></variable>
<variable type='string' name='ninegate_masteridentity' description="Maître de l'Identité" mandatory='True'><value>LDAP</value></variable>
<variable type='string' name='ninegate_mode_auth' description="Mode Authentification" mandatory='True'><value>CAS</value></variable>
<variable type='string' name='ninegate_api_key' description="Clé d'accès API" mandatory='True'><value>APIKeyNinegate</value></variable>
<variable type='oui/non' name='ninegate_syncldap' description="Synchroniser Ninegate vers votre annuaire"><value>non</value></variable>
<variable type='string' name='ninegate_ldaptemplate' description="Modèle d'annuaire"><value>scribe</value></variable>
<variable type='oui/non' name='ninegate_scribegroup' description="Considérer les classes/options comme des groupes de travail"><value>oui</value></variable>
<variable type='oui/non' name='ninegate_scribemaster' description="Placer les professeurs comme manager des groupes classes/options"><value>oui</value></variable>
<variable type='string' name='ninegate_pwdadmin' description="Mot de passe du compte admin durant l'instance (idem valeur Cadoles ldap)" mandatory='True'><value>cadoles</value></variable>
<variable type='string' name='ninegate_organization' description="Nom de l'organisation principale (idem valeur Cadoles ldap)" mandatory='True'><value>cadoles</value></variable>
<variable type='string' name='ninegate_niveau01branche' description="Nom de la branche de Niveau 01 (idem valeur Cadoles ldap)" mandatory='True'><value>niveau01</value></variable>
<variable type='string' name='ninegate_niveau02branche' description="Nom de la branche de Niveau 02 (idem valeur Cadoles ldap)" mandatory='True'><value>niveau02</value></variable>
<variable type='string' name='ninegate_niveau01name' description="Nom de la première orgranisation de Niveau 01 (idem valeur Cadoles ldap)" mandatory='True'><value>cadoles</value></variable>
<variable type='string' name='ninegate_niveau01siren' description="SIREN de la première orgranisation de Niveau 01 (idem valeur Cadoles ldap)" mandatory='True'><value>cadoles</value></variable>
<variable type='string' name='ninegate_niveau01label' description="Label singulier du niveau 01 d'organisation" mandatory='True'><value>Ecole</value></variable>
<variable type='string' name='ninegate_niveau01labels' description="Label pluriel du niveau 01 d'organisation" mandatory='True'><value>Ecoles</value></variable>
<variable type='string' name='ninegate_niveau01icon' description="Icon du niveau 01 d'organisation" mandatory='True'><value>fa-building</value></variable>
<variable type='oui/non' name='ninegate_niveau02view' description="Gérer un niveau 02 d'organisation"><value>non</value></variable>
<variable type='string' name='ninegate_niveau02label' description="Label pluriel du niveau 02 d'organisation" mandatory='True'><value>Service</value></variable>
<variable type='string' name='ninegate_niveau02labels' description="Label pluriel du niveau 02 d'organisation" mandatory='True'><value>Services</value></variable>
<variable type='string' name='ninegate_niveau02icon' description="Icon du niveau 02 d'organisation" mandatory='True'><value>fa-sitemap</value></variable>
<variable type='string' name='ninegate_colormain' description="Couleur principale" mandatory='True'><value>2c3e50</value></variable>
<variable type='string' name='ninegate_fontcolorhover' description="Couleur des polices sur fond de couleur principale" mandatory='True'><value>FFFFFF</value></variable>
<variable type='string' name='ninegate_moderegistration' description="Mode de registration : none / byuser / byadmin" mandatory='True'><value>none</value></variable>
<variable type='string' name='ninegate_keyterm' description="Taille minimun du password" mandatory='True'><value>8</value></variable>
<!-- MODULE PORTAL -->
<variable type="oui/non" name='ninegate_activate_portal' description='Activer le module portail' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_page' description='Activer le module page' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_item' description='Activer le module item' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_alert' description='Activer le module annonce' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_calendar' description='Activer le module calendrier' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_blog' description='Activer le module blog' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_project' description='Activer le module projet' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_flux' description='Activer le module flux' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_notice' description='Activer le module charte' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE SYNCENVOLE -->
<variable type="oui/non" name='ninegate_activate_syncenvole' description='Activer le module Synchronisation Envole' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE CRON -->
<variable type="oui/non" name='ninegate_activate_cron' description='Activer le module CRON' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE WEBSOCKET -->
<variable type="oui/non" name='ninegate_activate_websocket' description='Activer le module WEBSOCKET' mandatory='True'>
<value>oui</value>
</variable>
<!-- ADMINER -->
<variable type="oui/non" name='ninegate_activate_widadminer' description='Activer Adminer' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widadminer_url' description='URL complète de votre Adminer' mandatory='True' />
<!-- BALADO -->
<variable type="oui/non" name='ninegate_activate_widbalado' description='Activer Balado' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widbalado_url' description='URL complète de votre Balado' mandatory='True' />
<variable type='string' name='ninegate_widbalado_syncenvole' description='URL Posh-Profil pour synchronisation Balado' mandatory='True' />
<!-- DOKUWIKI -->
<variable type="oui/non" name='ninegate_activate_widdokuwiki' description='Activer Dokuwiki' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widdokuwiki_url' description='URL complète de votre Dokuwiki' mandatory='True' />
<!-- ECONNECT -->
<variable type="oui/non" name='ninegate_activate_wideconnect' description='Activer eConnect' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_wideconnect_url' description='URL complète de votre eConnect' mandatory='True' />
<!-- EAD -->
<variable type="oui/non" name='ninegate_activate_widead' description='Activer EAD' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widead_url' description='URL complète de votre EAD' mandatory='True' />
<!-- EOE -->
<variable type="oui/non" name='ninegate_activate_wideoe' description='Activer EOE' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_wideoe_url' description='URL complète de votre EOE' mandatory='True' />
<!-- EOP -->
<variable type="oui/non" name='ninegate_activate_wideop' description='Activer EOP' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_wideop_url' description='URL complète de votre EOP' mandatory='True' />
<!-- ETHERHOME -->
<variable type="oui/non" name='ninegate_activate_widetherhome' description='Activer Etherhome' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widetherhome_url' description='URL complète de votre Etherhome' mandatory='True' />
<!-- FLUXBB -->
<variable type="oui/non" name='ninegate_activate_widfluxbb' description='Activer Fluxbb' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widfluxbb_url' description='URL complète de votre Fluxbb' mandatory='True' />
<!-- GENCONFIG -->
<variable type="oui/non" name='ninegate_activate_widgenconfig' description='Activer Genconfig' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widgenconfig_url' description='URL complète de votre Genconfig' mandatory='True' />
<!-- GEPI -->
<variable type="oui/non" name='ninegate_activate_widgepi' description='Activer GEPI' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widgepi_url' description='URL complète de votre GEPI' mandatory='True' />
<variable type='string' name='ninegate_widgepi_syncenvole' description='URL Posh-Profil pour synchronisation GEPI' mandatory='True' />
<!-- GLPI -->
<variable type="oui/non" name='ninegate_activate_widglpi' description='Activer GLPI' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widglpi_url' description='URL complète de votre GLPI' mandatory='True' />
<!-- GRR -->
<variable type="oui/non" name='ninegate_activate_widgrr' description='Activer Grr' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widgrr_url' description='URL complète de votre Grr' mandatory='True' />
<!-- KANBOARD -->
<variable type="oui/non" name='ninegate_activate_widkanboard' description='Activer Kanboard' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widkanboard_url' description='URL complète de votre Kanboard' mandatory='True' />
<!-- LIMESURVEY -->
<variable type="oui/non" name='ninegate_activate_widlimesurvey' description='Activer Limesurvey' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widlimesurvey_url' description='URL complète de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_apiuser' description='API User de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_apikey' description='API Key de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_syncenvole' description='URL Posh-Profil pour synchronisation Limesurvey' mandatory='True' />
<!-- MINDMAPS -->
<variable type="oui/non" name='ninegate_activate_widmindmaps' description='Activer Mindmaps' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widmindmaps_url' description='URL complète de votre Mindmaps' mandatory='True' />
<!-- MOODLE -->
<variable type="oui/non" name='ninegate_activate_widmoodle' description='Activer Moodle' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widmoodle_url' description='URL complète de votre Moodle' mandatory='True' />
<variable type='string' name='ninegate_widmoodle_apikey' description='API Key de votre Moodle' mandatory='True' />
<variable type='string' name='ninegate_widmoodle_syncenvole' description='URL Posh-Profil pour synchronisation Moodle' mandatory='True' />
<!-- NEXTCLOUD -->
<variable type="oui/non" name='ninegate_activate_widnextcloud' description='Activer Nextcloud' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widnextcloud_url' description='URL complète de votre Nextcloud' mandatory='True' />
<variable type='string' name='ninegate_widnextcloud_syncenvole' description='URL Posh-Profil pour synchronisation Nextcloud' mandatory='True' />
<!-- NINEBOARD -->
<variable type="oui/non" name='ninegate_activate_widnineboard' description='Activer Nineboard' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widnineboard_url' description='URL complète de votre Nineboard' mandatory='True' />
<!-- ONLY OFFICE -->
<variable type="oui/non" name='ninegate_activate_widonlyoffice' description='Activer OnlyOffice' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widonlyoffice_url' description='URL complète de votre Onlyoffice' mandatory='True' />
<variable type="oui/non" name='ninegate_widonlyoffice_sync' description='Activer la Synchronisation Onlyoffice' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widonlyoffice_user' description='Login admin de votre Onlyoffice' mandatory='True' />
<variable type='string' name='ninegate_widonlyoffice_password' description='Password admin de votre Onlyoffice' mandatory='True' />
<!-- OPENSONDAGE -->
<variable type="oui/non" name='ninegate_activate_widopensondage' description='Activer Opensondage' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widopensondage_url' description='URL complète de votre Opensondage' mandatory='True' />
<!-- PHPLDAPADMIN -->
<variable type="oui/non" name='ninegate_activate_widphpldapadmin' description='Activer phpLdapAdmin' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widphpldapadmin_url' description='URL complète de votre phpLdapAdmin' mandatory='True' />
<!-- PIWIK -->
<variable type="oui/non" name='ninegate_activate_widpiwik' description='Activer Piwik' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widpiwik_url' description='URL complète de votre Piwik' mandatory='True' />
<variable type='string' name='ninegate_widpiwik_syncenvole' description='URL Posh-Profil pour synchronisation Piwik' mandatory='True' />
<!-- ROUNDCUBE -->
<variable type="oui/non" name='ninegate_activate_widroundcube' description='Activer Roundcube' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widroundcube_url' description='URL complète de votre Roundcube' mandatory='True' />
<!-- SACOCHE -->
<variable type="oui/non" name='ninegate_activate_widsacoche' description='Activer Sacoche' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widsacoche_url' description='URL complète de votre Sacoche' mandatory='True' />
<variable type='string' name='ninegate_widsacoche_syncenvole' description='URL Posh-Profil pour synchronisation Sacoche' mandatory='True' />
<!-- WORDPRESS -->
<variable type="oui/non" name='ninegate_activate_widwordpress' description='Activer Wordpress' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widwordpress_url' description='URL complète de votre Wordpress' mandatory='True' />
<variable type='string' name='ninegate_widwordpress_syncenvole' description='URL Posh-Profil pour synchronisation Wordpress' mandatory='True' />
<!-- WEBSOCKET -->
<variable type='string' name='ninegate_websocket_url' description='Host du serveur Websocket' mandatory='True' />
<variable type='string' name='ninegate_websocket_portexterne' description='Port de commuinication externe du serveur Websocket' mandatory='True' >
<value>5555</value>
</variable>
<variable type='string' name='ninegate_websocket_portinterne' description='Port de commuinication interne du serveur Websocket' mandatory='True'>
<value>5556</value>
</variable>
<!-- EMAIL -->
<variable type='string' name='ninegate_noreply' description='Adresse mail utilisé pour le noreply' mandatory='True' />
<variable type="oui/non" name='ninegate_activer_localmail' description="Utiliser le serveur d'envoi de mail local" mandatory='True'>
<value>oui</value>
</variable>
<variable type='string' name='ninegate_smtphost' description='Host du serveur SMTP' />
<variable type='string' name='ninegate_smtpport' description='Port du serveur SMTP' />
<variable type='string' name='ninegate_smtpuser' description='Compte du serveur SMTP' />
<variable type='string' name='ninegate_smtppwd' description='Fichier contenant le mot de passe associé du compte SMTP' />
<variable type='string' name='ninegate_smtpencryption' description='Type Encryptage du serveur SMTP' />
<variable type='string' name='ninegate_smtpauthmode' description='Mode Authentification du serveur SMTP' />
<!-- EOLEDB -->
<variable type='string' name='ninegate_db_mode' description='Serveur de bases de données à utiliser' mode='expert'/>
<variable type='string' name='ninegate_dbserver' description='Adresse du serveur de base de données' mode='expert'/>
<variable type='number' name='ninegate_dbport' description="Port d'écoute du serveur de base de données" mode='expert'/>
<variable type='string' name='ninegate_allow_hosts' description="Hôtes autorisés à utiliser la base de données" multi='True' mode='expert'/>
<variable type='string' name='ninegate_dbuser' description='Utilisateur du serveur de base de données' mode='expert'/>
<variable type='string' name='ninegate_dbpass' description='Fichier de mot de passe du serveur' mode='expert'/>
</family>
<separators>
<separator name="ninegate_syncldap">Paramètres associés à l'Annuaire</separator>
<separator name="ninegate_niveau01label">Paramètres associés aux look de l'application</separator>
<separator name="ninegate_activate_portal">Paramètres associés aux modules à activer</separator>
<separator name="ninegate_activate_widadminer">Paramètres associés à Adminer</separator>
<separator name="ninegate_activate_widbalado">Paramètres associés à Balado</separator>
<separator name="ninegate_activate_widdokuwiki">Paramètres associés à Dokuwiki</separator>
<separator name="ninegate_activate_wideconnect">Paramètres associés à eConnect</separator>
<separator name="ninegate_activate_widead">Paramètres associés à EAD</separator>
<separator name="ninegate_activate_wideoe">Paramètres associés à EOE</separator>
<separator name="ninegate_activate_wideop">Paramètres associés à EOP</separator>
<separator name="ninegate_activate_widetherhome">Paramètres associés à Etherhome</separator>
<separator name="ninegate_activate_widfluxbb">Paramètres associés à Fluxbb</separator>
<separator name="ninegate_activate_widgenconfig">Paramètres associés à GENCONFIG</separator>
<separator name="ninegate_activate_widgepi">Paramètres associés à GEPI</separator>
<separator name="ninegate_activate_widglpi">Paramètres associés à GLPI</separator>
<separator name="ninegate_activate_widgrr">Paramètres associés à Grr</separator>
<separator name="ninegate_activate_widkanboard">Paramètres associés à Kanboard</separator>
<separator name="ninegate_activate_widlimesurvey">Paramètres associés à Limesurvey</separator>
<separator name="ninegate_activate_widmindmaps">Paramètres associés à Mindmaps</separator>
<separator name="ninegate_activate_widmoodle">Paramètres associés à Moodle</separator>
<separator name="ninegate_activate_widnextcloud">Paramètres associés à Nextcloud</separator>
<separator name="ninegate_activate_widnineboard">Paramètres associés à Nineboard</separator>
<separator name="ninegate_activate_widonlyoffice">Paramètres associés à Only Office</separator>
<separator name="ninegate_activate_widopensondage">Paramètres associés à Opensondage</separator>
<separator name="ninegate_activate_widphpldapadmin">Paramètres associés à phpLdapAdmin</separator>
<separator name="ninegate_activate_widpiwik">Paramètres associés à Piwik</separator>
<separator name="ninegate_activate_widroundcube">Paramètres associés à Roundcube</separator>
<separator name="ninegate_activate_widsacoche">Paramètres associés à Sacoche</separator>
<separator name="ninegate_activate_widwordpress">Paramètres associés à Wordpress</separator>
<separator name="ninegate_websocket_url">Paramètres associés au Serveur WEBSOCKET</separator>
<separator name="ninegate_noreply">Paramètres associés aux Mails</separator>
<separator name="ninegate_db_mode">Paramètres associés à la Base de Données</separator>
</separators>
</variables>
<constraints>
<condition name='hidden_if_in' source='activer_apache'>
<param>non</param>
<target type='variable'>activer_ninegate</target>
</condition>
<condition name='hidden_if_in' source='activer_ninegate'>
<param>non</param>
<target type='variable'>ninegate_masteridentity</target>
<target type='variable'>ninegate_mode_auth</target>
<target type='variable'>ninegate_api_key</target>
<target type='variable'>ninegate_syncldap</target>
<target type='variable'>ninegate_ldaptemplate</target>
<target type='variable'>ninegate_scribegroup</target>
<target type='variable'>ninegate_scribemaster</target>
<target type='variable'>ninegate_pwdadmin</target>
<target type='variable'>ninegate_organization</target>
<target type='variable'>ninegate_niveau01branche</target>
<target type='variable'>ninegate_niveau02branche</target>
<target type='variable'>ninegate_niveau01name</target>
<target type='variable'>ninegate_niveau01siren</target>
<target type='variable'>ninegate_niveau01label</target>
<target type='variable'>ninegate_niveau01labels</target>
<target type='variable'>ninegate_niveau01icon</target>
<target type='variable'>ninegate_niveau02view</target>
<target type='variable'>ninegate_niveau02label</target>
<target type='variable'>ninegate_niveau02labels</target>
<target type='variable'>ninegate_niveau02icon</target>
<target type='variable'>ninegate_colormain</target>
<target type='variable'>ninegate_fontcolorhover</target>
<target type='variable'>ninegate_moderegistration</target>
<target type='variable'>ninegate_keyterm</target>
<target type='variable'>ninegate_activate_portal</target>
<target type='variable'>ninegate_activate_page</target>
<target type='variable'>ninegate_activate_item</target>
<target type='variable'>ninegate_activate_alert</target>
<target type='variable'>ninegate_activate_calendar</target>
<target type='variable'>ninegate_activate_blog</target>
<target type='variable'>ninegate_activate_project</target>
<target type='variable'>ninegate_activate_flux</target>
<target type='variable'>ninegate_activate_notice</target>
<target type='variable'>ninegate_activate_syncenvole</target>
<target type='variable'>ninegate_activate_cron</target>
<target type='variable'>ninegate_activate_websocket</target>
<target type='variable'>ninegate_noreply</target>
<target type='variable'>ninegate_activer_localmail</target>
<target type='variable'>ninegate_smtphost</target>
<target type='variable'>ninegate_smtpport</target>
<target type='variable'>ninegate_smtpuser</target>
<target type='variable'>ninegate_smtppwd</target>
<target type='variable'>ninegate_smtpencryption</target>
<target type='variable'>ninegate_smtpauthmode</target>
<target type='variable'>ninegate_db_mode</target>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_allow_hosts</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbpass</target>
<target type='filelist'>ninegate</target>
<target type='filelist'>ninegate-migration</target>
<target type='servicelist'>ninegate</target>
</condition>
<condition name='hidden_if_in' source='activer_envole_migration' fallback='True'>
<param>non</param>
<target type='filelist'>ninegate-migration</target>
</condition>
<condition name='hidden_if_in' source='ninegate_masteridentity'>
<param>LDAP</param>
<param>SSO</param>
<target type='variable'>ninegate_syncldap</target>
<target type='variable'>ninegate_moderegistration</target>
<target type='variable'>ninegate_keyterm</target>
</condition>
<condition name='hidden_if_in' source='ninegate_masteridentity'>
<param>SQL</param>
<param>SSO</param>
<target type='variable'>ninegate_ldaptemplate</target>
<target type='variable'>ninegate_test_conf_cadolesldap</target>
</condition>
<condition name='hidden_if_in' source='ninegate_syncldap'>
<param>non</param>
<target type='variable'>ninegate_pwdadmin</target>
<target type='variable'>ninegate_niveau01name</target>
<target type='variable'>ninegate_niveau01siren</target>
</condition>
<auto name='calc_multi_condition' target='ninegate_test_conf_cadolesldap'>
<param>CadolesLDAP</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_ldaptemplate</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</auto>
<auto name='calc_multi_condition' target='ninegate_test_conf_ldap'>
<param>oui</param>
<param name="operator">OR</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_syncldap</param>
<param type='eole' name='condition_2' hidden='False'>ninegate_test_conf_cadolesldap</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<condition name='hidden_if_in' source='ninegate_test_conf_ldap'>
<param>non</param>
<target type='variable'>ninegate_organization</target>
<target type='variable'>ninegate_niveau01branche</target>
<target type='variable'>ninegate_niveau02branche</target>
</condition>
<condition name='hidden_if_in' source='ninegate_niveau02view'>
<param>non</param>
<target type='variable'>ninegate_niveau02label</target>
<target type='variable'>ninegate_niveau02labels</target>
<target type='variable'>ninegate_niveau02icon</target>
</condition>
<auto name='calc_multi_condition' target='ninegate_test_ninegate'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_ninegate</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<!-- AFFICHAGE EN FONCTION DU MODE SCRIBE -->
<condition name='hidden_if_not_in' source='ninegate_ldaptemplate'>
<param>scribe</param>
<target type='variable'>ninegate_scribegroup</target>
<target type='variable'>ninegate_scribemaster</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODULE PORTAL -->
<condition name='hidden_if_in' source='ninegate_activate_portal'>
<param>non</param>
<target type='variable'>ninegate_activate_widadminer</target>
<target type='variable'>ninegate_activate_widbalado</target>
<target type='variable'>ninegate_activate_widdokuwiki</target>
<target type='variable'>ninegate_activate_wideconnect</target>
<target type='variable'>ninegate_activate_widead</target>
<target type='variable'>ninegate_activate_wideoe</target>
<target type='variable'>ninegate_activate_wideop</target>
<target type='variable'>ninegate_activate_widetherhome</target>
<target type='variable'>ninegate_activate_widfluxbb</target>
<target type='variable'>ninegate_activate_widgenconfig</target>
<target type='variable'>ninegate_activate_widgepi</target>
<target type='variable'>ninegate_activate_widglpi</target>
<target type='variable'>ninegate_activate_widgrr</target>
<target type='variable'>ninegate_activate_widkanboard</target>
<target type='variable'>ninegate_activate_widlimesurvey</target>
<target type='variable'>ninegate_activate_widmindmaps</target>
<target type='variable'>ninegate_activate_widmoodle</target>
<target type='variable'>ninegate_activate_widnextcloud</target>
<target type='variable'>ninegate_activate_widnineboard</target>
<target type='variable'>ninegate_activate_widonlyoffice</target>
<target type='variable'>ninegate_activate_widopensondage</target>
<target type='variable'>ninegate_activate_widphpldapadmin</target>
<target type='variable'>ninegate_activate_widpiwik</target>
<target type='variable'>ninegate_activate_widroundcube</target>
<target type='variable'>ninegate_activate_widsacoche</target>
<target type='variable'>ninegate_activate_widwordpress</target>
</condition>
<condition name='hidden_if_in' source='ninegate_activate_portal'>
<param>oui</param>
<target type='variable'>ninegate_activate_page</target>
<target type='variable'>ninegate_activate_item</target>
<target type='variable'>ninegate_activate_alert</target>
<target type='variable'>ninegate_activate_calendar</target>
<target type='variable'>ninegate_activate_blog</target>
<target type='variable'>ninegate_activate_project</target>
<target type='variable'>ninegate_activate_flux</target>
<target type='variable'>ninegate_activate_notice</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODULE SYNCENVOLE -->
<condition name='hidden_if_in' source='ninegate_activate_syncenvole'>
<param>non</param>
<target type='variable'>ninegate_widbalado_syncenvole</target>
<target type='variable'>ninegate_widgepi_syncenvole</target>
<target type='variable'>ninegate_widlimesurvey_syncenvole</target>
<target type='variable'>ninegate_widmoodle_syncenvole</target>
<target type='variable'>ninegate_widnextcloud_syncenvole</target>
<target type='variable'>ninegate_widpiwik_syncenvole</target>
<target type='variable'>ninegate_widsacoche_syncenvole</target>
<target type='variable'>ninegate_widwordpress_syncenvole</target>
</condition>
<condition name='hidden_if_in' source='poshprofil_typesynchro'>
<param>ENT</param>
<target type='variable'>ninegate_widpiwik_syncenvole</target>
</condition>
<condition name='hidden_if_in' source='poshprofil_typesynchro'>
<param>Annuaire</param>
<target type='variable'>ninegate_widbalado_syncenvole</target>
<target type='variable'>ninegate_widgepi_syncenvole</target>
<target type='variable'>ninegate_widnextcloud_syncenvole</target>
<target type='variable'>ninegate_widsacoche_syncenvole</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODULE WEBSOCKET -->
<condition name='hidden_if_in' source='ninegate_activate_websocket'>
<param>non</param>
<target type='variable'>ninegate_websocket_url</target>
<target type='variable'>ninegate_websocket_portinterne</target>
<target type='variable'>ninegate_websocket_portexterne</target>
<target type='servicelist'>ninegate_websocket</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_websocket_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_apache</param>
<param type='eole' name='match' hidden='False'>web_url</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ADMINER -->
<fill name='calc_multi_condition' target='ninegate_activate_widadminer'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_adminer</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widadminer'>
<param>non</param>
<target type='variable'>ninegate_widadminer_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widadminer_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_adminer</param>
<param name='match'>/adminer</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET BALADAO -->
<fill name='calc_multi_condition' target='ninegate_activate_widbalado'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_balado</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widbalado'>
<param>non</param>
<target type='variable'>ninegate_widbalado_url</target>
<target type='variable'>ninegate_widbalado_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widbalado_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_balado</param>
<param name='match'>/balado</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widbalado_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_balado</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET DOKUWIKI -->
<fill name='calc_multi_condition' target='ninegate_activate_widdokuwiki'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_dokuwiki</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widdokuwiki'>
<param>non</param>
<target type='variable'>ninegate_widdokuwiki_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widdokuwiki_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_dokuwiki</param>
<param name='match'>/dokuwiki</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ECONNECT -->
<fill name='calc_multi_condition' target='ninegate_activate_wideconnect'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_econnect</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_wideconnect'>
<param>non</param>
<target type='variable'>ninegate_wideconnect_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_wideconnect_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_econnect</param>
<param name='match'>/econnect</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET EAD -->
<fill name='calc_multi_condition' target='ninegate_activate_widead'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_ead_web</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widead'>
<param>non</param>
<target type='variable'>ninegate_widead_url</target>
</condition>
<fill name='concat' target='ninegate_widead_url'>
<param>https://</param>
<param type='eole'>web_url</param>
<param>:4200</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET EOE -->
<fill name='calc_multi_condition' target='ninegate_activate_wideoe'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_eoe</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_wideoe'>
<param>non</param>
<target type='variable'>ninegate_wideoe_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_wideoe_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_eoe</param>
<param name='match'>/eoleapps/eleves/passperso</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET EOP -->
<fill name='calc_multi_condition' target='ninegate_activate_wideop'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_eop</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_wideop'>
<param>non</param>
<target type='variable'>ninegate_wideop_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_wideop_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_eop</param>
<param name='match'>/eoleapps/eop</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ETHERHOME -->
<fill name='calc_multi_condition' target='ninegate_activate_widetherhome'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_etherhome</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widetherhome'>
<param>non</param>
<target type='variable'>ninegate_widetherhome_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widetherhome_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_etherhome</param>
<param name='match'>/etherhome</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET FLUXBB -->
<fill name='calc_multi_condition' target='ninegate_activate_widfluxbb'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_fluxbb</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widfluxbb'>
<param>non</param>
<target type='variable'>ninegate_widfluxbb_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widfluxbb_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_fluxbb</param>
<param name='match'>/fluxbb</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GENCONFIG -->
<fill name='calc_multi_condition' target='ninegate_activate_widgenconfig'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_genconfig</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widgenconfig'>
<param>non</param>
<target type='variable'>ninegate_widgenconfig_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widgenconfig_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_genconfig</param>
<param name='match'>/genconfig</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GEPI -->
<fill name='calc_multi_condition' target='ninegate_activate_widgepi'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_gepi</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widgepi'>
<param>non</param>
<target type='variable'>ninegate_widgepi_url</target>
<target type='variable'>ninegate_widgepi_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widgepi_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_gepi</param>
<param name='match'>/gepi</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widgepi_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_gepi</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GLPI -->
<fill name='calc_multi_condition' target='ninegate_activate_widglpi'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_glpi</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widglpi'>
<param>non</param>
<target type='variable'>ninegate_widglpi_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widglpi_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_glpi</param>
<param name='match'>/glpi</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GRR -->
<fill name='calc_multi_condition' target='ninegate_activate_widgrr'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_grr</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widgrr'>
<param>non</param>
<target type='variable'>ninegate_widgrr_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widgrr_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_grr</param>
<param name='match'>/grr</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET KANBOARD -->
<fill name='calc_multi_condition' target='ninegate_activate_widkanboard'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_kanboard</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widkanboard'>
<param>non</param>
<target type='variable'>ninegate_widkanboard_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widkanboard_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_kanboard</param>
<param name='match'>/kanboard</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET LIMESURVEY -->
<fill name='calc_multi_condition' target='ninegate_activate_widlimesurvey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widlimesurvey'>
<param>non</param>
<target type='variable'>ninegate_widlimesurvey_url</target>
<target type='variable'>ninegate_widlimesurvey_apiuser</target>
<target type='variable'>ninegate_widlimesurvey_apikey</target>
<target type='variable'>ninegate_widlimesurvey_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>/limesurvey</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_apiuser'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>restuser</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_apikey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>apikeyenvole</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET MINDMAPS -->
<fill name='calc_multi_condition' target='ninegate_activate_widmindmaps'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_mindmaps</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widmindmaps'>
<param>non</param>
<target type='variable'>ninegate_widmindmaps_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widmindmaps_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_mindmaps</param>
<param name='match'>/mindmaps</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET MOODLE -->
<fill name='calc_multi_condition' target='ninegate_activate_widmoodle'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widmoodle'>
<param>non</param>
<target type='variable'>ninegate_widmoodle_url</target>
<target type='variable'>ninegate_widmoodle_apikey</target>
<target type='variable'>ninegate_widmoodle_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widmoodle_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>/moodle</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widmoodle_apikey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param type='eole' name='match' hidden='False'>moodle_apikey</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widmoodle_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET NEXTCLOUD -->
<fill name='calc_multi_condition' target='ninegate_activate_widnextcloud'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nextcloud</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widnextcloud'>
<param>non</param>
<target type='variable'>ninegate_widnextcloud_url</target>
<target type='variable'>ninegate_widnextcloud_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widnextcloud_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nextcloud</param>
<param name='match'>/nextcloud</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widnextcloud_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nextcloud</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET NINEBOARD -->
<fill name='calc_multi_condition' target='ninegate_activate_widnineboard'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nineboard</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widnineboard'>
<param>non</param>
<target type='variable'>ninegate_widnineboard_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widnineboard_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nineboard</param>
<param name='match'>/nineboard</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET OPENSONDAGE -->
<fill name='calc_multi_condition' target='ninegate_activate_widopensondage'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_opensondage</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widopensondage'>
<param>non</param>
<target type='variable'>ninegate_widopensondage_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widopensondage_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_opensondage</param>
<param name='match'>/opensondage</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ONLYOFFICE -->
<condition name='hidden_if_in' source='ninegate_activate_widonlyoffice'>
<param>non</param>
<target type='variable'>ninegate_widonlyoffice_url</target>
<target type='variable'>ninegate_widonlyoffice_sync</target>
</condition>
<condition name='hidden_if_in' source='ninegate_widonlyoffice_sync'>
<param>non</param>
<target type='variable'>ninegate_widonlyoffice_user</target>
<target type='variable'>ninegate_widonlyoffice_password</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU WIDGET PHPLDAPADMIN -->
<fill name='calc_multi_condition' target='ninegate_activate_widphpldapadmin'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_phpldapadmin</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widphpldapadmin'>
<param>non</param>
<target type='variable'>ninegate_widphpldapadmin_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widphpldapadmin_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_phpldapadmin</param>
<param name='match'>/phpldapadmin</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET PIWIK -->
<fill name='calc_multi_condition' target='ninegate_activate_widpiwik'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widpiwik'>
<param>non</param>
<target type='variable'>ninegate_widpiwik_url</target>
<target type='variable'>ninegate_widpiwik_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widpiwik_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>/piwik</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widpiwik_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ROUNDCUBE -->
<fill name='calc_multi_condition' target='ninegate_activate_widroundcube'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_roundcube</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widroundcube'>
<param>non</param>
<target type='variable'>ninegate_widroundcube_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widroundcube_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_roundcube</param>
<param name='match'>/roundcube</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET SACOCHE -->
<fill name='calc_multi_condition' target='ninegate_activate_widsacoche'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_sacoche</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widsacoche'>
<param>non</param>
<target type='variable'>ninegate_widsacoche_url</target>
<target type='variable'>ninegate_widsacoche_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widsacoche_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_sacoche</param>
<param name='match'>/sacoche</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widsacoche_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_sacoche</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET WORDPRESS -->
<fill name='calc_multi_condition' target='ninegate_activate_widwordpress'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widwordpress'>
<param>non</param>
<target type='variable'>ninegate_widwordpress_url</target>
<target type='variable'>ninegate_widwordpress_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widwordpress_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>/wordpress</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widwordpress_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET SONDE -->
<auto name='calc_multi_condition' target='ninegate_test_sonde'>
<param>oui</param>
<param name="operator">OR</param>
<param type='eole' name='condition_1' hidden='False'>activer_sondepiwik_local</param>
<param type='eole' name='condition_2' hidden='False'>activer_piwik</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<!-- AFFICHAGE EN FONCTION DU MAIL -->
<condition name='hidden_if_in' source='ninegate_activer_localmail'>
<param>oui</param>
<target type='variable'>ninegate_smtphost</target>
<target type='variable'>ninegate_smtpport</target>
<target type='variable'>ninegate_smtpuser</target>
<target type='variable'>ninegate_smtppwd</target>
<target type='variable'>ninegate_smtpencryption</target>
<target type='variable'>ninegate_smtpauthmode</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODE DE BDD -->
<condition name='hidden_if_in' source='ninegate_db_mode'>
<param>local</param>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_dbpass</target>
</condition>
<condition name='hidden_if_in' source='ninegate_db_mode'>
<param>default</param>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_dbpass</target>
<target type='variable'>ninegate_allow_hosts</target>
</condition>
<!-- CONCAT -->
<fill name='concat' target='ninegate_noreply'>
<param>noreply@</param>
<param type='eole'>domaine_messagerie_etab</param>
</fill>
<!-- VALID EMUN DES DIFFRENTES COMBO -->
<check name='valid_enum' target='ninegate_masteridentity'>
<param>['LDAP', 'SQL', 'SSO']</param>
</check>
<check name='valid_enum' target='ninegate_mode_auth'>
<param>['CAS', 'SAML', 'SQL', 'LDAP']</param>
</check>
<check name='valid_enum' target='ninegate_moderegistration'>
<param>['none', 'byuser', 'byadmin']</param>
</check>
<check name='valid_enum' target='ninegate_ldaptemplate'>
<param>['scribe', 'open', 'CadolesLDAP']</param>
</check>
<check name='valid_enum' target='ninegate_smtpencryption'>
<param>['tls', 'ssl', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_smtpauthmode'>
<param>['plain', 'login', 'cram-md5', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_db_mode'>
<param>['default', 'externe', 'local']</param>
</check>
</constraints>
<help>
</help>
</creole>

BIN
migrations/draaf.zip Normal file

Binary file not shown.

View File

@ -1,2 +0,0 @@
#!/bin/bash
CreoleRun "/var/www/html/ninegate/scripts/ninegate-postservice-00.sh" web

7
postservice/91-ninegate Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
activer_ninegate=$(CreoleGet activer_ninegate non)
if [ "$activer_ninegate" == "oui" ]
then
CreoleRun "/var/www/html/ninegate/scripts/ninegate-postservice-00.sh" web
fi

View File

@ -1,5 +1,7 @@
/.web-server-pid
/app/config/parameters.yml
/app/config/template.yml
/src/Cadoles/CoreBundle/Command/data/core-init-01.sql
/build/
/phpunit.xml
/var/*

View File

@ -18,7 +18,7 @@ monolog:
main:
type: rotating_file
path: '%kernel.logs_dir%/%kernel.environment%.log'
level: debug
level: error
max_files: 10
framework:
@ -137,6 +137,7 @@ gos_web_socket:
server:
port: %websocket_port% #The port the socket server will listen on
host: %websocket_host% #The host ip to bind to
router:
resources:
- "@CadolesWebsocketBundle/Resources/config/topic.yml"
@ -154,7 +155,7 @@ ivory_ck_editor:
language: fr
toolbar: "my_toolbar_1"
uiColor: "#ffffff"
extraPlugins: ["html5video"]
extraPlugins: ["html5video","pastebase64"]
light_config:
language: fr
toolbar: "my_toolbar_2"

View File

@ -29,7 +29,7 @@ services:
public: true
tags: ['controller.service_arguments']
# add more services, or override services that need manual wiring
# AppBundle\Service\ExampleService:
# arguments:
# $someArgument: 'some_value'
swiftmailer.mailer.sendmail.transport:
class: Swift_SendmailTransport
public: true
arguments: ['/usr/sbin/sendmail -t']

View File

@ -1,127 +0,0 @@
# This file is auto-generated during the composer install
parameters:
# Determine qui est le maitre de l'identitité = SQL / LDAP / SSO
# Si SQL cela veut dire que c'est l'applicatif qui gère les utilisateurs
# Sinon la source est externe soit via un annuaire soit via des attributs venant d'un SSO
# Si la source est externe de fait pas de module d'inscription ni de reset de password
# Et pas de synchronisation vers un annuaire ou vers ePortail
masteridentity: LDAP
# Mode d'authentification soit SQL / LDAP / CAS / SAML
# Pour l'instant SQL - CAS - SAML Reste à faire LDAP
# Attention si le masteridentity est différent de SQL le mode d'authentification est forcement différent de SQL
# Car aucune synchronisation des password n'est possible
mode_auth: CAS
# Mode de registration : none / byuser / byadmin
# none = désactivation de l'inscription mais reset de password possible
# byuser = aucune validation par un administrateur, l'utilisateur valide son inscription par lui-même
# byadmin = validation de l'inscription par un administrateur, sauf si domaine de messagerie dans la liste blanche
moderegistration: none
# Activation module
cron_activate: true
portal_activate: true
# Information de base de l'annuaire
ldap_host: 172.27.7.61
ldap_port: 389
ldap_user: cn=admin,o=gouv,c=fr
ldap_password: eole
ldap_basedn: o=gouv,c=fr
# Mise en page
alias: ninegate
libelle_etab: ldapbundle
numero_etab: 0000000A
colormain: 2c3e50 # Couleur principale
fontcolorhover: FFFFFF # Couleur des polices sur fond de couleur principale
keyterm: 8 # Taille mini du password
labelniveau01: Ecole # Label singulier du niveau 01 d'organisation
labelsniveau01: Ecoles # Label pluriel du niveau 01 d'organisation
iconniveau01: fa-building # Icon du niveau 01 d'organisation
labelsirenniveau01: SIREN # Label SIREN
viewniveau02: false # Gérer un niveau 02 d'organisation
labelniveau02: niveau02 # Label singulier du niveau 02 d'organisation
labelsniveau02: niveaus02 # Label pluriel du niveau 02 d'organisation
iconniveau02: fa-sitemap # Icon du niveau 02 d'organisation
labelsiretniveau02: SIRET # Label SIRET
# Si masteridentity est à SQL = où sont synchronisées les datas dans l'annuaire
ldap_sync: false
ldap_baseuser:
ldap_baseniveau01:
ldap_baseniveau02:
ldap_basegroup:
# Si masteridentity est à LDAP = quel est le modele d'organisation
# Si open = rien de particulier
# Si scribe = on génére des groupes correspondant au profil / classe / niveau / option
ldap_template: scribe
# Si masteridentity est à LDAP = quel champs sont à récupérer
ldap_username: uid
ldap_firstname: givenname
ldap_lastname: sn
ldap_email: mail
ldap_usersadmin: [admin,prof.6a]
eportail_sync: false
eportail_url: # /eportail
eportail_login: # /eportail/login.php
eportail_database_host: # 172.27.7.64
eportail_database_port: # 3306
eportail_database_name: # eportail
eportail_database_user: # eportail
eportail_database_password: # "changme"
# Si mode_auth = CAS
cas_host: ldapbundle.ac-arno.fr
cas_path:
cas_port: 8443
# Si mode_aut = SAML
saml_entityid: 'http://dev.nuonet.cadoles'
saml_logout_url: 'http://172.27.7.67:8088/idp/profile/Logout'
saml_idps_list: ['http://172.27.7.67:8088/idp/shibboleth']
# Si mode_auth = CAS ou SAML les attributs permettant de matché avec les utilisateurs
user_attr_cas_username: username
user_attr_cas_mail: email
user_attr_cas_lastname: lastname
user_attr_cas_firstname: firstname
user_attr_saml_username: eduPersonPrincipalName
user_attr_saml_mail: mail
user_attr_saml_lastname: sn
user_attr_saml_firstname: givenName
mailer_port: '2525'
mailer_encryption: null
mailer_authmode: null
noreply: noreply@ldapbundle.ac-arno.fr
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: UTF8
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
CadolesCoreBundle: ~
CadolesCronBundle: ~
CadolesPortalBundle: ~

View File

@ -23,3 +23,6 @@ twig:
labelsniveau02: %labelsniveau02%
iconniveau02: %iconniveau02%
keyterm: %keyterm%
activate_widonlyoffice: %activate_widonlyoffice%
widonlyoffice_url: %widonlyoffice_url%

View File

@ -40,6 +40,7 @@
"symfony/symfony": "3.4.*",
"tetranz/select2entity-bundle": "2.*",
"thecsea/simple-caldav-client": "^0.1.10",
"mashape/unirest-php": "3.*",
"twig/twig": "^1.0||^2.0"
},
"require-dev": {

View File

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "0430b523c39e2d254cfe1fb91666119b",
"content-hash": "36178f772c0f0ff6bd5ac90edd474c25",
"hash": "e008822a96a469e24963e22d66f34c98",
"content-hash": "589f314a10ca56596cf580254885bd7c",
"packages": [
{
"name": "cboden/ratchet",
@ -62,25 +62,25 @@
},
{
"name": "composer/ca-bundle",
"version": "1.1.4",
"version": "1.2.4",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d"
"reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
"reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"ext-pcre": "*",
"php": "^5.3.2 || ^7.0"
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
"phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
"psr/log": "^1.0",
"symfony/process": "^2.5 || ^3.0 || ^4.0"
},
@ -114,7 +114,7 @@
"ssl",
"tls"
],
"time": "2019-01-28 09:30:10"
"time": "2019-08-30 08:44:50"
},
{
"name": "debril/feed-io",
@ -1822,27 +1822,28 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "6.3.3",
"version": "6.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
"reference": "0895c932405407fd3a7368b6910c09a24d26db11"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/0895c932405407fd3a7368b6910c09a24d26db11",
"reference": "0895c932405407fd3a7368b6910c09a24d26db11",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.4",
"guzzlehttp/psr7": "^1.6.1",
"php": ">=5.5"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
"psr/log": "^1.0"
"psr/log": "^1.1"
},
"suggest": {
"psr/log": "Required for using the Log middleware"
@ -1854,12 +1855,12 @@
}
},
"autoload": {
"files": [
"src/functions_include.php"
],
"psr-4": {
"GuzzleHttp\\": "src/"
}
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -1883,7 +1884,7 @@
"rest",
"web service"
],
"time": "2018-04-22 15:46:56"
"time": "2019-10-23 15:58:00"
},
{
"name": "guzzlehttp/promises",
@ -2060,16 +2061,16 @@
},
{
"name": "jasig/phpcas",
"version": "1.3.7",
"version": "1.3.8",
"source": {
"type": "git",
"url": "https://github.com/apereo/phpCAS.git",
"reference": "b5b29102c3a42f570c4a3e852f3cf67cae6d6082"
"reference": "40c0769ce05a30c8172b36ceab11124375c8366e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/apereo/phpCAS/zipball/b5b29102c3a42f570c4a3e852f3cf67cae6d6082",
"reference": "b5b29102c3a42f570c4a3e852f3cf67cae6d6082",
"url": "https://api.github.com/repos/apereo/phpCAS/zipball/40c0769ce05a30c8172b36ceab11124375c8366e",
"reference": "40c0769ce05a30c8172b36ceab11124375c8366e",
"shasum": ""
},
"require": {
@ -2111,7 +2112,7 @@
"cas",
"jasig"
],
"time": "2019-04-22 19:48:16"
"time": "2019-08-18 20:01:55"
},
{
"name": "jdorn/sql-formatter",
@ -2304,16 +2305,16 @@
},
{
"name": "lightsaml/sp-bundle",
"version": "1.2.0",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SpBundle.git",
"reference": "b31182d23d93b696305f57f9a66d6770a53d5f8e"
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/b31182d23d93b696305f57f9a66d6770a53d5f8e",
"reference": "b31182d23d93b696305f57f9a66d6770a53d5f8e",
"url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"shasum": ""
},
"require": {
@ -2349,7 +2350,7 @@
],
"description": "Light SAML2 SP Symfony Bundle",
"homepage": "http://www.lightsaml.com/SP-Bundle/",
"time": "2018-05-23 09:11:16"
"time": "2019-11-13 19:05:47"
},
{
"name": "lightsaml/symfony-bridge",
@ -2407,17 +2408,63 @@
"time": "2018-05-23 08:11:59"
},
{
"name": "monolog/monolog",
"version": "1.24.0",
"name": "mashape/unirest-php",
"version": "v3.0.4",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266"
"url": "https://github.com/Mashape/unirest-php.git",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
"reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
"url": "https://api.github.com/repos/Mashape/unirest-php/zipball/842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0"
},
"require-dev": {
"codeclimate/php-test-reporter": "0.1.*",
"phpunit/phpunit": "~4.4"
},
"suggest": {
"ext-json": "Allows using JSON Bodies for sending and parsing requests"
},
"type": "library",
"autoload": {
"psr-0": {
"Unirest\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Unirest PHP",
"homepage": "https://github.com/Mashape/unirest-php",
"keywords": [
"client",
"curl",
"http",
"https",
"rest"
],
"time": "2016-08-11 17:49:21"
},
{
"name": "monolog/monolog",
"version": "1.25.2",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
"reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
"shasum": ""
},
"require": {
@ -2482,7 +2529,7 @@
"logging",
"psr-3"
],
"time": "2018-11-05 09:00:11"
"time": "2019-11-13 10:00:05"
},
{
"name": "ocramius/proxy-manager",
@ -2867,16 +2914,16 @@
},
{
"name": "psr/log",
"version": "1.1.0",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
"shasum": ""
},
"require": {
@ -2885,7 +2932,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
"dev-master": "1.1.x-dev"
}
},
"autoload": {
@ -2910,7 +2957,7 @@
"psr",
"psr-3"
],
"time": "2018-11-20 15:27:04"
"time": "2019-11-01 11:05:21"
},
{
"name": "psr/simple-cache",
@ -3173,23 +3220,23 @@
},
{
"name": "react/dns",
"version": "v1.1.0",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/dns.git",
"reference": "a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f"
"reference": "a214d90c2884dac18d0cac6176202f247b66d762"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/dns/zipball/a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f",
"reference": "a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f",
"url": "https://api.github.com/repos/reactphp/dns/zipball/a214d90c2884dac18d0cac6176202f247b66d762",
"reference": "a214d90c2884dac18d0cac6176202f247b66d762",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/cache": "^1.0 || ^0.6 || ^0.5",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/promise": "^2.1 || ^1.2.1",
"react/event-loop": "^1.0 || ^0.5",
"react/promise": "^2.7 || ^1.2.1",
"react/promise-timer": "^1.2"
},
"require-dev": {
@ -3213,7 +3260,7 @@
"dns-resolver",
"reactphp"
],
"time": "2019-07-18 09:47:47"
"time": "2019-08-15 09:06:31"
},
{
"name": "react/event-loop",
@ -3450,16 +3497,16 @@
},
{
"name": "robrichards/xmlseclibs",
"version": "3.0.3",
"version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/robrichards/xmlseclibs.git",
"reference": "406c68ac9124db033d079284b719958b829cb830"
"reference": "0a53d3c3aa87564910cae4ed01416441d3ae0db5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/406c68ac9124db033d079284b719958b829cb830",
"reference": "406c68ac9124db033d079284b719958b829cb830",
"url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/0a53d3c3aa87564910cae4ed01416441d3ae0db5",
"reference": "0a53d3c3aa87564910cae4ed01416441d3ae0db5",
"shasum": ""
},
"require": {
@ -3484,7 +3531,7 @@
"xml",
"xmldsig"
],
"time": "2018-11-15 11:59:02"
"time": "2019-11-05 11:44:22"
},
{
"name": "sensio/distribution-bundle",
@ -3781,30 +3828,30 @@
},
{
"name": "symfony/monolog-bundle",
"version": "v3.4.0",
"version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bundle.git",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d"
"reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/dd80460fcfe1fa2050a7103ad818e9d0686ce6fd",
"reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd",
"shasum": ""
},
"require": {
"monolog/monolog": "~1.22",
"monolog/monolog": "~1.22 || ~2.0",
"php": ">=5.6",
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4.10|^4.0.10",
"symfony/http-kernel": "~3.4|~4.0",
"symfony/monolog-bridge": "~3.4|~4.0"
"symfony/config": "~3.4 || ~4.0 || ^5.0",
"symfony/dependency-injection": "~3.4.10 || ^4.0.10 || ^5.0",
"symfony/http-kernel": "~3.4 || ~4.0 || ^5.0",
"symfony/monolog-bridge": "~3.4 || ~4.0 || ^5.0"
},
"require-dev": {
"symfony/console": "~3.4|~4.0",
"symfony/phpunit-bridge": "^3.4.19|^4.0",
"symfony/yaml": "~3.4|~4.0"
"symfony/console": "~3.4 || ~4.0 || ^5.0",
"symfony/phpunit-bridge": "^3.4.19 || ^4.0 || ^5.0",
"symfony/yaml": "~3.4 || ~4.0 || ^5.0"
},
"type": "symfony-bundle",
"extra": {
@ -3825,13 +3872,13 @@
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
}
],
"description": "Symfony MonologBundle",
@ -3840,24 +3887,24 @@
"log",
"logging"
],
"time": "2019-06-20 12:18:19"
"time": "2019-11-13 13:11:14"
},
{
"name": "symfony/orm-pack",
"version": "v1.0.6",
"version": "v1.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/orm-pack.git",
"reference": "36c2a928482dc5f05c5c1c1b947242ae03ff1335"
"reference": "c57f5e05232ca40626eb9fa52a32bc8565e9231c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/orm-pack/zipball/36c2a928482dc5f05c5c1c1b947242ae03ff1335",
"reference": "36c2a928482dc5f05c5c1c1b947242ae03ff1335",
"url": "https://api.github.com/repos/symfony/orm-pack/zipball/c57f5e05232ca40626eb9fa52a32bc8565e9231c",
"reference": "c57f5e05232ca40626eb9fa52a32bc8565e9231c",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "^1.6.10",
"doctrine/doctrine-bundle": "^1.6.10|^2.0",
"doctrine/doctrine-migrations-bundle": "^1.3|^2.0",
"doctrine/orm": "^2.5.11",
"php": "^7.0"
@ -3868,20 +3915,20 @@
"MIT"
],
"description": "A pack for the Doctrine ORM",
"time": "2019-01-16 09:49:15"
"time": "2019-10-18 05:41:09"
},
{
"name": "symfony/polyfill-apcu",
"version": "v1.11.0",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-apcu.git",
"reference": "a502face1da6a53289480166f24de2c3c68e5c3c"
"reference": "71ce80635d5dcd67772b4dda00b86068595f64d5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a502face1da6a53289480166f24de2c3c68e5c3c",
"reference": "a502face1da6a53289480166f24de2c3c68e5c3c",
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/71ce80635d5dcd67772b4dda00b86068595f64d5",
"reference": "71ce80635d5dcd67772b4dda00b86068595f64d5",
"shasum": ""
},
"require": {
@ -3890,7 +3937,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.12-dev"
}
},
"autoload": {
@ -3924,20 +3971,20 @@
"portable",
"shim"
],
"time": "2019-02-06 07:57:58"
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.11.0",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "82ebae02209c21113908c229e9883c419720738a"
"reference": "550ebaac289296ce228a706d0867afc34687e3f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
"reference": "82ebae02209c21113908c229e9883c419720738a",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
"reference": "550ebaac289296ce228a706d0867afc34687e3f4",
"shasum": ""
},
"require": {
@ -3949,7 +3996,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.12-dev"
}
},
"autoload": {
@ -3966,12 +4013,12 @@
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Gert de Pagter",
"email": "backendtea@gmail.com"
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
@ -3982,25 +4029,25 @@
"polyfill",
"portable"
],
"time": "2019-02-06 07:57:58"
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.11.0",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057"
"reference": "66810b9d6eb4af54d543867909d65ab9af654d7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/999878a3a09d73cae157b0cf89bb6fb2cc073057",
"reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/66810b9d6eb4af54d543867909d65ab9af654d7e",
"reference": "66810b9d6eb4af54d543867909d65ab9af654d7e",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/intl": "~2.3|~3.0|~4.0"
"symfony/intl": "~2.3|~3.0|~4.0|~5.0"
},
"suggest": {
"ext-intl": "For best performance"
@ -4008,7 +4055,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
"dev-master": "1.12-dev"
}
},
"autoload": {
@ -4040,20 +4087,20 @@
"portable",
"shim"
],
"time": "2019-01-07 19:39:47"
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.11.0",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
"shasum": ""
},
"require": {
@ -4065,7 +4112,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.12-dev"
}
},
"autoload": {
@ -4099,20 +4146,20 @@
"portable",
"shim"
],
"time": "2019-02-06 07:57:58"
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.11.0",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42"
"reference": "0e3b212e96a51338639d8ce175c046d7729c3403"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/f4dddbc5c3471e1b700a147a20ae17cdb72dbe42",
"reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/0e3b212e96a51338639d8ce175c046d7729c3403",
"reference": "0e3b212e96a51338639d8ce175c046d7729c3403",
"shasum": ""
},
"require": {
@ -4122,7 +4169,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.12-dev"
}
},
"autoload": {
@ -4155,20 +4202,20 @@
"portable",
"shim"
],
"time": "2019-02-06 07:57:58"
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-php70",
"version": "v1.11.0",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php70.git",
"reference": "bc4858fb611bda58719124ca079baff854149c89"
"reference": "54b4c428a0054e254223797d2713c31e08610831"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89",
"reference": "bc4858fb611bda58719124ca079baff854149c89",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/54b4c428a0054e254223797d2713c31e08610831",
"reference": "54b4c428a0054e254223797d2713c31e08610831",
"shasum": ""
},
"require": {
@ -4178,7 +4225,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.12-dev"
}
},
"autoload": {
@ -4214,20 +4261,20 @@
"portable",
"shim"
],
"time": "2019-02-06 07:57:58"
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-util",
"version": "v1.11.0",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
"reference": "b46c6cae28a3106735323f00a0c38eccf2328897"
"reference": "4317de1386717b4c22caed7725350a8887ab205c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/b46c6cae28a3106735323f00a0c38eccf2328897",
"reference": "b46c6cae28a3106735323f00a0c38eccf2328897",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4317de1386717b4c22caed7725350a8887ab205c",
"reference": "4317de1386717b4c22caed7725350a8887ab205c",
"shasum": ""
},
"require": {
@ -4236,7 +4283,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.12-dev"
}
},
"autoload": {
@ -4266,7 +4313,7 @@
"polyfill",
"shim"
],
"time": "2019-02-08 14:16:39"
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/swiftmailer-bundle",
@ -4329,16 +4376,16 @@
},
{
"name": "symfony/symfony",
"version": "v3.4.29",
"version": "v3.4.35",
"source": {
"type": "git",
"url": "https://github.com/symfony/symfony.git",
"reference": "4c9b6d7d898457ae2189efdfaca58712269fc994"
"reference": "2adc85d49cbe14e346068fa7e9c2e1f08ab31de6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/symfony/zipball/4c9b6d7d898457ae2189efdfaca58712269fc994",
"reference": "4c9b6d7d898457ae2189efdfaca58712269fc994",
"url": "https://api.github.com/repos/symfony/symfony/zipball/2adc85d49cbe14e346068fa7e9c2e1f08ab31de6",
"reference": "2adc85d49cbe14e346068fa7e9c2e1f08ab31de6",
"shasum": ""
},
"require": {
@ -4357,7 +4404,7 @@
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.6",
"twig/twig": "^1.40|^2.9"
"twig/twig": "^1.41|^2.10"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
@ -4436,7 +4483,7 @@
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0",
"predis/predis": "~1.0",
"symfony/phpunit-bridge": "~3.4|~4.0|~5.0",
"symfony/phpunit-bridge": "^3.4.31|^4.3.4|~5.0",
"symfony/security-acl": "~2.8|~3.0"
},
"type": "library",
@ -4480,20 +4527,20 @@
"keywords": [
"framework"
],
"time": "2019-06-26 13:56:55"
"time": "2019-11-13 08:45:05"
},
{
"name": "tetranz/select2entity-bundle",
"version": "v2.10.0",
"version": "v2.10.1",
"source": {
"type": "git",
"url": "https://github.com/tetranz/select2entity-bundle.git",
"reference": "67b61be1a23228bc4e77a2e59ba5fff8fd9fffab"
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/67b61be1a23228bc4e77a2e59ba5fff8fd9fffab",
"reference": "67b61be1a23228bc4e77a2e59ba5fff8fd9fffab",
"url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"shasum": ""
},
"require": {
@ -4527,7 +4574,7 @@
"symfony",
"typeahead"
],
"time": "2019-07-07 23:00:30"
"time": "2019-07-14 02:30:34"
},
{
"name": "thecsea/simple-caldav-client",
@ -4574,16 +4621,16 @@
},
{
"name": "twig/twig",
"version": "v2.11.3",
"version": "v2.12.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "699ed2342557c88789a15402de5eb834dedd6792"
"reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/699ed2342557c88789a15402de5eb834dedd6792",
"reference": "699ed2342557c88789a15402de5eb834dedd6792",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed",
"reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed",
"shasum": ""
},
"require": {
@ -4593,13 +4640,13 @@
},
"require-dev": {
"psr/container": "^1.0",
"symfony/debug": "^2.7",
"symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0"
"symfony/debug": "^3.4|^4.2",
"symfony/phpunit-bridge": "^4.4@dev|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.11-dev"
"dev-master": "2.12-dev"
}
},
"autoload": {
@ -4621,15 +4668,15 @@
"homepage": "http://fabien.potencier.org",
"role": "Lead Developer"
},
{
"name": "Armin Ronacher",
"email": "armin.ronacher@active-4.com",
"role": "Project Founder"
},
{
"name": "Twig Team",
"homepage": "https://twig.symfony.com/contributors",
"role": "Contributors"
},
{
"name": "Armin Ronacher",
"email": "armin.ronacher@active-4.com",
"role": "Project Founder"
}
],
"description": "Twig, the flexible, fast, and secure template language for PHP",
@ -4637,7 +4684,7 @@
"keywords": [
"templating"
],
"time": "2019-06-18 15:37:11"
"time": "2019-11-11 16:52:09"
},
{
"name": "zendframework/zend-code",
@ -4749,16 +4796,16 @@
"packages-dev": [
{
"name": "nikic/php-parser",
"version": "v4.2.2",
"version": "v4.3.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420"
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
"reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc",
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc",
"shasum": ""
},
"require": {
@ -4766,7 +4813,8 @@
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.5 || ^7.0"
"ircmaxell/php-yacc": "0.0.5",
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
},
"bin": [
"bin/php-parse"
@ -4774,7 +4822,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.2-dev"
"dev-master": "4.3-dev"
}
},
"autoload": {
@ -4796,7 +4844,7 @@
"parser",
"php"
],
"time": "2019-05-25 20:07:01"
"time": "2019-11-08 13:50:10"
},
{
"name": "sensio/generator-bundle",
@ -4854,40 +4902,40 @@
},
{
"name": "symfony/maker-bundle",
"version": "v1.12.0",
"version": "v1.14.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
"reference": "201d0e050dca336c44f93657ce1f34f3b3868432"
"reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/maker-bundle/zipball/201d0e050dca336c44f93657ce1f34f3b3868432",
"reference": "201d0e050dca336c44f93657ce1f34f3b3868432",
"url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c864e7f9b8d1e1f5f60acc3beda11299f637aded",
"reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded",
"shasum": ""
},
"require": {
"doctrine/inflector": "^1.2",
"nikic/php-parser": "^4.0",
"php": "^7.0.8",
"symfony/config": "^3.4|^4.0",
"symfony/console": "^3.4|^4.0",
"symfony/dependency-injection": "^3.4|^4.0",
"symfony/filesystem": "^3.4|^4.0",
"symfony/finder": "^3.4|^4.0",
"symfony/framework-bundle": "^3.4|^4.0",
"symfony/http-kernel": "^3.4|^4.0"
"symfony/config": "^3.4|^4.0|^5.0",
"symfony/console": "^3.4|^4.0|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0",
"symfony/filesystem": "^3.4|^4.0|^5.0",
"symfony/finder": "^3.4|^4.0|^5.0",
"symfony/framework-bundle": "^3.4|^4.0|^5.0",
"symfony/http-kernel": "^3.4|^4.0|^5.0"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.8",
"doctrine/doctrine-bundle": "^1.8|^2.0",
"doctrine/orm": "^2.3",
"friendsofphp/php-cs-fixer": "^2.8",
"friendsoftwig/twigcs": "^3.1.2",
"symfony/http-client": "^4.3",
"symfony/phpunit-bridge": "^3.4.19|^4.0",
"symfony/process": "^3.4|^4.0",
"symfony/security-core": "^3.4|^4.0",
"symfony/yaml": "^3.4|^4.0"
"symfony/http-client": "^4.3|^5.0",
"symfony/phpunit-bridge": "^4.3|^5.0",
"symfony/process": "^3.4|^4.0|^5.0",
"symfony/security-core": "^3.4|^4.0|^5.0",
"symfony/yaml": "^3.4|^4.0|^5.0"
},
"type": "symfony-bundle",
"extra": {
@ -4918,20 +4966,20 @@
"scaffold",
"scaffolding"
],
"time": "2019-07-09 22:19:18"
"time": "2019-11-07 00:56:03"
},
{
"name": "symfony/phpunit-bridge",
"version": "v3.4.29",
"version": "v3.4.35",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "521489968e58dcdb8df153436cc18349737e49e3"
"reference": "cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/521489968e58dcdb8df153436cc18349737e49e3",
"reference": "521489968e58dcdb8df153436cc18349737e49e3",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7",
"reference": "cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7",
"shasum": ""
},
"require": {
@ -4983,7 +5031,7 @@
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"time": "2019-06-26 10:03:25"
"time": "2019-09-30 20:33:19"
}
],
"aliases": [],

View File

@ -5,63 +5,69 @@ SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES
(-100, 'DRAAF', '130007107');
(-100, 'Interne', 'SIREN');
INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES
(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}kiCU5m1uSvZhdgI1Ga9gdq/8HUBjSIpX
(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}yiDxhDNog19bkfbdXAX1PH2iZWUu5eGy
', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '130007107', 'simple');
TRUNCATE TABLE sidebar;
INSERT IGNORE INTO `sidebar` (`id`, `parent_id`, `roworder`, `label`, `path`, `fonticon`, `permission`, `appactivate`) VALUES
(1000, NULL, 1000, 'CONFIGURATION', NULL, 'fa-gear', 'ROLE_ADMIN,ROLE_MODO', ''),
(1010, 1000, 1010, 'Générale', 'cadoles_core_config_commun', 'fa-table', 'ROLE_ADMIN,ROLE_MODO', ''),
(1020, 1000, 1020, 'Thème', 'cadoles_core_config_theme', 'fa-paint-brush', 'ROLE_ADMIN,ROLE_MODO', ''),
(1030, 1000, 1030, 'Modération', 'cadoles_core_config_permmodo', 'fa-balance-scale', 'ROLE_ADMIN', ''),
(1040, 1000, 1040, 'Fiche Utilisateur', 'cadoles_core_config_datauser', 'fa-gear', 'ROLE_ADMIN,ROLE_MODO', ''),
(1050, 1000, 1050, 'Liste Utilisateurs', 'cadoles_core_config_datausers', 'fa-gear', 'ROLE_ADMIN,ROLE_MODO', ''),
(1000, NULL, 1000, 'CONFIGURATION', NULL, 'fa-gear', 'ROLE_ADMIN,ROLE_MODO', ''),
(1010, 1000, 1010, 'Générale', 'cadoles_core_config_commun', 'fa-table', 'ROLE_ADMIN,ROLE_MODO', ''),
(1020, 1000, 1020, 'Thème', 'cadoles_core_config_theme', 'fa-paint-brush', 'ROLE_ADMIN,ROLE_MODO', ''),
(1030, 1000, 1030, 'Modération', 'cadoles_core_config_permmodo', 'fa-balance-scale', 'ROLE_ADMIN', ''),
(1040, 1000, 1040, 'Fiche Utilisateur', 'cadoles_core_config_datauser', 'fa-gear', 'ROLE_ADMIN,ROLE_MODO', ''),
(1050, 1000, 1050, 'Liste Utilisateurs', 'cadoles_core_config_datausers', 'fa-gear', 'ROLE_ADMIN,ROLE_MODO', ''),
(1200, NULL, 1200, 'ORGANISATION', NULL, 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''),
(1210, 1200, 1210, 'Listes Blanche', 'cadoles_core_config_whitelist', 'fa-tasks', 'ROLE_ADMIN,ROLE_MODO', ''),
(1220, 1200, 1220, 'Niveau 01', 'cadoles_core_config_niveau01', 'fa-building', 'ROLE_ADMIN,ROLE_MODO', ''),
(1230, 1200, 1230, 'Niveau 02', 'cadoles_core_config_niveau02', 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''),
(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'),
(1200, NULL, 1200, 'ORGANISATION', NULL, 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''),
(1210, 1200, 1210, 'Listes Blanche', 'cadoles_core_config_whitelist', 'fa-tasks', 'ROLE_ADMIN,ROLE_MODO', ''),
(1220, 1200, 1220, 'Niveau 01', 'cadoles_core_config_niveau01', 'fa-building', 'ROLE_ADMIN,ROLE_MODO', ''),
(1230, 1200, 1230, 'Niveau 02', 'cadoles_core_config_niveau02', 'fa-sitemap', 'ROLE_ADMIN,ROLE_MODO', ''),
(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'),
(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'),
(1520, 1500, 1520, 'Pages', 'cadoles_portal_config_page', 'fa-file', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1530, 1500, 1530, 'Items', 'cadoles_portal_config_item', 'fa-desktop', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1540, 1500, 1540, 'Annonces', 'cadoles_portal_config_alert', 'fa-bell', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1550, 1500, 1550, 'Calendriers', 'cadoles_portal_config_calendar', 'fa-calendar', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1560, 1500, 1560, 'Blogs', 'cadoles_portal_config_blog', 'fa-paper-plane', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1570, 1500, 1570, 'Flux', 'cadoles_portal_config_flux', 'fa-rss', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1580, 1500, 1580, 'Chartes', 'cadoles_portal_config_notice', 'fa-info', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1590, 1500, 1590, 'Icônes', 'cadoles_portal_config_icon', 'fa-bug', 'ROLE_ADMIN,ROLE_MODO', 'portal_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'),
(1520, 1500, 1520, 'Pages', 'cadoles_portal_config_page', 'fa-file', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1530, 1500, 1530, 'Items', 'cadoles_portal_config_item', 'fa-desktop', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1540, 1500, 1540, 'Annonces', 'cadoles_portal_config_alert', 'fa-bell', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1550, 1500, 1550, 'Calendriers', 'cadoles_portal_config_calendar', 'fa-calendar', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1560, 1500, 1560, 'Blogs', 'cadoles_portal_config_blog', 'fa-paper-plane', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1570, 1500, 1570, 'Projets', 'cadoles_portal_config_project', 'fa-suitcase', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1580, 1500, 1580, 'Flux', 'cadoles_portal_config_flux', 'fa-rss', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1590, 1500, 1590, 'Chartes', 'cadoles_portal_config_notice', 'fa-info', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(1600, 1500, 1600, 'Icônes', 'cadoles_portal_config_icon', 'fa-bug', 'ROLE_ADMIN,ROLE_MODO', 'portal_activate'),
(2500, NULL, 2500, 'MODULES', NULL, 'fa-cubes', 'ROLE_ADMIN,ROLE_MODO', 'module_activate'),
(2510, 2500, 2510, 'Pages', 'cadoles_portal_config_page', 'fa-file', 'ROLE_ADMIN,ROLE_MODO', 'page_activate'),
(2520, 2500, 2520, 'Items', 'cadoles_portal_config_item', 'fa-desktop', 'ROLE_ADMIN,ROLE_MODO', 'item_activate'),
(2530, 2500, 2530, 'Annonces', 'cadoles_portal_config_alert', 'fa-bell', 'ROLE_ADMIN,ROLE_MODO', 'alert_activate'),
(2540, 2500, 2540, 'Calendriers', 'cadoles_portal_config_calendar', 'fa-calendar', 'ROLE_ADMIN,ROLE_MODO', 'calendar_activate'),
(2550, 2500, 2550, 'Blogs', 'cadoles_portal_config_blog', 'fa-paper-plane', 'ROLE_ADMIN,ROLE_MODO', 'blog_activate'),
(2560, 2500, 2560, 'Flux', 'cadoles_portal_config_flux', 'fa-rss', 'ROLE_ADMIN,ROLE_MODO', 'flux_activate'),
(2570, 2500, 2570, 'Chartes', 'cadoles_portal_config_notice', 'fa-info', 'ROLE_ADMIN,ROLE_MODO', 'notice_activate'),
(2580, 2500, 2580, 'Icônes', 'cadoles_portal_config_icon', 'fa-bug', 'ROLE_ADMIN,ROLE_MODO', 'module_activate'),
(2500, NULL, 2500, 'MODULES', NULL, 'fa-cubes', 'ROLE_ADMIN,ROLE_MODO', 'module_activate'),
(2510, 2500, 2510, 'Pages', 'cadoles_portal_config_page', 'fa-file', 'ROLE_ADMIN,ROLE_MODO', 'page_activate'),
(2520, 2500, 2520, 'Items', 'cadoles_portal_config_item', 'fa-desktop', 'ROLE_ADMIN,ROLE_MODO', 'item_activate'),
(2530, 2500, 2530, 'Annonces', 'cadoles_portal_config_alert', 'fa-bell', 'ROLE_ADMIN,ROLE_MODO', 'alert_activate'),
(2540, 2500, 2540, 'Calendriers', 'cadoles_portal_config_calendar', 'fa-calendar', 'ROLE_ADMIN,ROLE_MODO', 'calendar_activate'),
(2550, 2500, 2550, 'Blogs', 'cadoles_portal_config_blog', 'fa-paper-plane', 'ROLE_ADMIN,ROLE_MODO', 'blog_activate'),
(2560, 2500, 2560, 'Projects', 'cadoles_portal_config_project', 'fa-suitcase', 'ROLE_ADMIN,ROLE_MODO', 'project_activate'),
(2570, 2500, 2570, 'Flux', 'cadoles_portal_config_flux', 'fa-rss', 'ROLE_ADMIN,ROLE_MODO', 'flux_activate'),
(2580, 2500, 2580, 'Chartes', 'cadoles_portal_config_notice', 'fa-info', 'ROLE_ADMIN,ROLE_MODO', 'notice_activate'),
(2590, 2500, 2590, 'Icônes', 'cadoles_portal_config_icon', 'fa-bug', 'ROLE_ADMIN,ROLE_MODO', 'module_activate'),
(3000, NULL, 3000, 'SYNCHRONISATION', NULL, 'fa-exchange', 'ROLE_ADMIN,ROLE_MODO', 'syncenvole_activate'),
(3001, 3000, 3001, 'Délégation', 'cadoles_portal_config_syncdelegation', 'fa-balance-scale', 'ROLE_ADMIN,ROLE_MODO', 'syncenvole_activate'),
(3120, 3000, 3120, 'Limesurvey', 'cadoles_portal_config_synclimesurvey', 'fa-question', 'ROLE_ADMIN,ROLE_MODO', 'activate_widlimesurvey'),
(3130, 3000, 3130, 'Moodle', 'cadoles_portal_config_syncmoodle', 'fa-graduation-cap', 'ROLE_ADMIN,ROLE_MODO', 'activate_widmoodle'),
(3160, 3000, 3160, 'Piwik', 'cadoles_portal_config_syncpiwik', 'fa-signal', 'ROLE_ADMIN,ROLE_MODO', 'activate_widpiwik'),
(3230, 3000, 3230, 'Wordpress', 'cadoles_portal_config_syncwordpress', 'fa-wordpress', 'ROLE_ADMIN,ROLE_MODO', 'activate_widwordpress'),
(3000, NULL, 3000, 'SYNCHRONISATION', NULL, 'fa-exchange', 'ROLE_ADMIN,ROLE_MODO', 'syncenvole_activate'),
(3001, 3000, 3001, 'Délégation', 'cadoles_portal_config_syncdelegation', 'fa-balance-scale', 'ROLE_ADMIN,ROLE_MODO', 'syncenvole_activate'),
(3110, 3000, 3110, 'Balado', 'cadoles_portal_config_syncbalado', 'fa-microphone', 'ROLE_ADMIN,ROLE_MODO', 'widbalado_activate_syncenvole'),
(3115, 3000, 3115, 'GEPI via Annuaire', 'cadoles_portal_config_syncgepiannu', 'fa-tags', 'ROLE_ADMIN,ROLE_MODO', 'widgepi_activate_syncenvole'),
(3116, 3000, 3116, 'GEPI via SIECLE', 'cadoles_portal_config_syncgepisiecle', 'fa-tags', 'ROLE_ADMIN,ROLE_MODO', 'widgepi_activate_syncenvole'),
(3120, 3000, 3120, 'Limesurvey', 'cadoles_portal_config_synclimesurvey', 'fa-question', 'ROLE_ADMIN,ROLE_MODO', 'activate_widlimesurvey'),
(3130, 3000, 3130, 'Moodle', 'cadoles_portal_config_syncmoodle', 'fa-graduation-cap', 'ROLE_ADMIN,ROLE_MODO', 'activate_widmoodle'),
(3140, 3000, 3140, 'Nexcloud', 'cadoles_portal_config_syncnextcloud', 'fa-cloud', 'ROLE_ADMIN,ROLE_MODO', 'widnextcloud_activate_syncenvole'),
(3150, 3000, 3150, 'Sacoche via SIECLE', 'cadoles_portal_config_syncsacoche', 'fa-suitcase', 'ROLE_ADMIN,ROLE_MODO', 'widsacoche_activate_syncenvole'),
(3160, 3000, 3160, 'Piwik', 'cadoles_portal_config_syncpiwik', 'fa-signal', 'ROLE_ADMIN,ROLE_MODO', 'widpiwik_activate_syncenvole'),
(3230, 3000, 3230, 'Wordpress', 'cadoles_portal_config_syncwordpress', 'fa-wordpress', 'ROLE_ADMIN,ROLE_MODO', 'activate_widwordpress'),
(7000, NULL, 7000, 'CRON', NULL, 'fa-bolt', 'ROLE_ADMIN,ROLE_MODO', 'cron_activate'),
(7010, 7000, 7010, 'Jobs', 'cadoles_cron_config', 'fa-bullseye', 'ROLE_ADMIN,ROLE_MODO', 'cron_activate'),
(7020, 7000, 7020, 'Logs', 'cadoles_cron_config_log', 'fa-list-alt', 'ROLE_ADMIN,ROLE_MODO', 'cron_activate');
(7000, NULL, 7000, 'CRON', NULL, 'fa-bolt', 'ROLE_ADMIN,ROLE_MODO', 'cron_activate'),
(7010, 7000, 7010, 'Jobs', 'cadoles_cron_config', 'fa-bullseye', 'ROLE_ADMIN,ROLE_MODO', 'cron_activate'),
(7020, 7000, 7020, 'Logs', 'cadoles_cron_config_log', 'fa-list-alt', 'ROLE_ADMIN,ROLE_MODO', 'cron_activate');

View File

@ -0,0 +1,57 @@
#!/bin/bash
echo "INSTALLATION NINEGATE HORS EOLE"
cd /var/www/html/ninegate
www_dir="/var/www/html"
yes | cp scripts/apache/ninegate.conf /etc/apache2/sites-available/
a2ensite ninegate
service apache2 restart
# Récuper les composer associés à la version de php installé
version72=`php -r 'echo version_compare(phpversion(), "7.2.0", ">=");'`
if [[ "$version72" == "1" ]]
then
cp -rf /var/www/html/ninegate/scripts/php72/composer.json /var/www/html/ninegate/composer.json
cp -rf /var/www/html/ninegate/scripts/php72/composer.lock /var/www/html/ninegate/composer.lock
else
version70=`php -r 'echo version_compare(phpversion(), "7.0.0", ">=");'`
if [[ "$version70" == "1" ]]
then
cp -rf /var/www/html/ninegate/scripts/php70/composer.json /var/www/html/ninegate/composer.json
cp -rf /var/www/html/ninegate/scripts/php70/composer.lock /var/www/html/ninegate/composer.lock
fi
fi
# Installation des dépendances composer
composer install
rm -f /var/www/html/ninegate/var/logs/dev.log
# Permissions
./perm.sh www-data
# Nettoyage du cache
rm /var/www/html/ninegate/var/cache -rf
php bin/console cache:clear --env=prod --no-debug
# Migration si nécessaire du schéma de la base
php bin/console doctrine:schema:update --force --env=prod --no-debug
# Insertion data de base
php bin/console Core:InitData --env=prod
php bin/console Cron:InitData --env=prod
php bin/console Portal:InitData --env=prod
# Passage des scripts
php bin/console Core:Script --env=prod
# Generation des assets
bin/console assetic:dump --env=prod
# Copie des polices du projet dans le rep web
cp -rf src/Cadoles/CoreBundle/Resources/public/fonts web/
bin/console Core:SetPassword admin admin
# Permissions
./perm.sh www-data

View File

@ -0,0 +1,11 @@
Alias /ninegate /var/www/html/ninegate/web
<Directory "/var/www/html/ninegate/web" >
AllowOverride All
Order Allow,Deny
Allow from All
Options Indexes FollowSymLinks MultiViews
php_admin_flag allow_url_fopen On
</Directory>

View File

@ -0,0 +1,139 @@
# This file is auto-generated during the composer install
parameters:
# Determine qui est le maitre de l'identitité = SQL / LDAP / SSO
# Si SQL cela veut dire que c'est l'applicatif qui gère les utilisateurs
# Sinon la source est externe soit via un annuaire soit via des attributs venant d'un SSO
# Si la source est externe de fait pas de module d'inscription ni de reset de password
# Et pas de synchronisation vers un annuaire ou vers ePortail
masteridentity: SQL
# Mode d'authentification soit SQL / LDAP / CAS / SAML
# Pour l'instant SQL - CAS - SAML Reste à faire LDAP
# Attention si le masteridentity est différent de SQL le mode d'authentification est forcement différent de SQL
# Car aucune synchronisation des password n'est possible
mode_auth: SQL
# Mode de registration : none / byuser / byadmin
# none = désactivation de l'inscription mais reset de password possible
# byuser = aucune validation par un administrateur, l'utilisateur valide son inscription par lui-même
# byadmin = validation de l'inscription par un administrateur, sauf si domaine de messagerie dans la liste blanche
moderegistration: byadmin
# Activation module
cron_activate: true
portal_activate: true
module_activate: false
page_activate: false
item_activate: false
alert_activate: false
calendar_activate: false
blog_activate: false
project_activate: false
flux_activate: false
notice_activate: false
# Mise en page
weburl: localhost
alias: ninegate
libelle_etab: ninegate
numero_etab: ~
colormain: 2c3e50 # Couleur principale
fontcolorhover: FFFFFF # Couleur des polices sur fond de couleur principale
keyterm: 8 # Taille mini du password
labelniveau01: Département # Label singulier du niveau 01 d'organisation
labelsniveau01: Départements # Label pluriel du niveau 01 d'organisation
iconniveau01: fa-building # Icon du niveau 01 d'organisation
labelsirenniveau01: SIREN # Label SIREN
viewniveau02: true # Gérer un niveau 02 d'organisation
labelniveau02: Service # Label singulier du niveau 02 d'organisation
labelsniveau02: Services # Label pluriel du niveau 02 d'organisation
iconniveau02: fa-sitemap # Icon du niveau 02 d'organisation
labelsiretniveau02: SIRET # Label SIRET
mailer_port: '2525'
mailer_encryption: null
mailer_authmode: null
noreply: noreply@ninegate.fr
websocket_activate: false
websocket_host: localhost
websocket_port: 5555
websocket_portinterne: 5556
activate_widadminer: false
activate_widbalado: false
activate_widdokuwiki: false
activate_wideconnect: false
activate_widetherhome: false
activate_widfluxbb: false
activate_widgepi: false
activate_widglpi: false
activate_widgrr: false
activate_widkanboard: false
activate_widlimesurvey: false
activate_widmindmaps: false
activate_widmoodle: false
activate_widnextcloud: false
activate_widonlyoffice: false
activate_widopensondage: false
activate_widphpldapadmin: false
activate_widpiwik: false
activate_widroundcube: false
activate_widsacoche: false
activate_widwordpress: false
syncenvole_activate: false
widbalado_activate_syncenvole: false
widgepi_activate_syncenvole: false
widnextcloud_activate_syncenvole: false
widonlyoffice_sync: false
widpiwik_activate_syncenvole: false
widsacoche_activate_syncenvole: false
activate_widsonde: false
widsonde_url:
saml_entityid: 'http://discovery'
saml_logout_url: 'http://localhost:8088/idp/profile/Logout'
saml_idps_list: ['http://localhost:8088/idp/shibboleth']
ldap_sync: false
ldap_template: open
ldap_host: 127.0.0.1
ldap_port: 389
ldap_user: cn=admin,o=gouv,c=fr
ldap_password: ~
ldap_basedn: o=gouv,c=fr
ldap_baseuser:
ldap_baseniveau01:
ldap_baseniveau02:
ldap_basegroup:
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: UTF8
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
CadolesCoreBundle: ~
CadolesCronBundle: ~
CadolesPortalBundle: ~
CadolesWebsocketBundle: ~

View File

@ -1,4 +1,4 @@
#!/bin/bash
cd /var/www/html/ninegate
php bin/console Cron:Exec
php bin/console Cron:Exec --env=prod

View File

@ -1,4 +1,10 @@
#!/bin/bash
cd /var/www/html/ninegate
php bin/console swiftmailer:spool:send --message-limit=100 --env=prod
ninegate_activer_localmail=$(CreoleGet ninegate_activer_localmail non)
if [[ "$ninegate_activer_localmail" = 'oui' ]]
then
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=200 --env=prod
fi

View File

@ -1,6 +1,5 @@
#!/bin/bash
ninegate_synceportail=$(CreoleGet ninegate_synceportail non)
moderegistration=$(CreoleGet ninegate_moderegistration none)
labelsniveau01=$(CreoleGet ninegate_niveau01labels non)
iconniveau01=$(CreoleGet ninegate_niveau01icon non)
@ -13,48 +12,62 @@ websocket_url=$(CreoleGet adresse_ip_eth0 non)
websocket_portinterne=$(CreoleGet ninegate_websocket_portinterne non)
www_dir="$container_path_web/var/www/html"
eportail_dir="$www_dir/eportail"
# Récuper les composer associés à la version de php installé
version72=`php -r 'echo version_compare(phpversion(), "7.2.0", ">=");'`
if [[ "$version72" == "1" ]]
then
cp -rf /var/www/html/ninegate/scripts/php72/composer.json /var/www/html/ninegate/composer.json
cp -rf /var/www/html/ninegate/scripts/php72/composer.lock /var/www/html/ninegate/composer.lock
else
version70=`php -r 'echo version_compare(phpversion(), "7.0.0", ">=");'`
if [[ "$version70" == "1" ]]
then
cp -rf /var/www/html/ninegate/scripts/php70/composer.json /var/www/html/ninegate/composer.json
cp -rf /var/www/html/ninegate/scripts/php70/composer.lock /var/www/html/ninegate/composer.lock
fi
fi
# Installation des dépendances composer
composer install
echo COMPOSER = Install
composer install --quiet
rm -f /var/www/html/ninegate/var/logs/dev.log
# Permissions
./perm.sh www-data
# Nettoyage du cache
rm /var/www/html/ninegate/var/cache/* -rf
php bin/console cache:clear --env=prod --no-debug
echo
echo CACHE = Refresh
rm /var/www/html/ninegate/var/cache -rf > /dev/null
php bin/console cache:clear --env=prod --no-debug --quiet
# Migration si nécessaire du schéma de la base
php bin/console doctrine:schema:update --force --env=prod --no-debug
php bin/console doctrine:schema:update --force --env=prod --no-debug --quiet
# Insertion data de base
php bin/console Core:InitData
php bin/console Cron:InitData
php bin/console Portal:InitData
php bin/console Core:InitData --env=prod
php bin/console Cron:InitData --env=prod
php bin/console Portal:InitData --env=prod
# Passage des scripts
php bin/console Core:Script --env=prod
# Generation des assets
bin/console --env=dev assetic:dump
echo ASSET = Dump
bin/console assetic:dump --env=prod --quiet
# Copie des polices du projet dans le rep web
cp -rf src/Cadoles/CoreBundle/Resources/public/fonts web/
# Pointer le repertoire des avatar d'eportail sur celui de draaf
# Paramétrage eportail
if [[ "$ninegate_synceportail" = 'oui' ]]
then
if [[ ! -L /var/www/html/eportail/local/images/avatar ]]
then
rm -rf /var/www/html/eportail/local/images/avatar
ln -s /var/www/html/ninegate/web/uploads/avatar /var/www/html/eportail/local/images/avatar
fi
fi
# Permissions
./perm.sh www-data
# Server Websocket
if [[ "$ninegate_websocket" = 'oui' ]]
then
echo
/var/www/html/ninegate/scripts/ninegate-websocket.sh
fi
fi
echo

View File

@ -19,7 +19,7 @@ if [ "$1" == "restartifdown" ] && [ -n "${pid}" ] ; then
restart="no"
fi
if [[ "$restart" == "yes" ]]; then
if [ "$restart" == "yes" ] && [ "$1" != "stop" ] ; then
echo WEBSOCKET = START
cd /var/www/html/ninegate
bin/console gos:websocket:server --port $websocket_portinterne -a $websocket_url --no-debug -n -q --env=prod & disown

View File

@ -0,0 +1,87 @@
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
"autoload-dev": {
"psr-4": { "Tests\\": "tests/" },
"files": [ "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" ]
},
"require": {
"php": ">=7",
"debril/rss-atom-bundle": "^4.0",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"doctrine/doctrine-fixtures-bundle": "^2.3",
"doctrine/doctrine-migrations-bundle": "^1.2",
"doctrine/orm": "^2.5",
"egeloen/ckeditor-bundle": "^6.0",
"gos/web-socket-bundle": "1.*",
"gregwar/captcha-bundle": "^2.0",
"incenteev/composer-parameter-handler": "^2.0",
"jasig/phpcas": "~1.3",
"lightsaml/sp-bundle": "^1.2",
"oneup/uploader-bundle": "^1.7",
"ramsey/uuid": "^3.7",
"sensio/distribution-bundle": "^5.0.19",
"sensio/framework-extra-bundle": "^5.0.0",
"symfony/assetic-bundle": "^2.8",
"symfony/ldap": "^3.4",
"symfony/monolog-bundle": "^3.1.0",
"symfony/orm-pack": "^1.0",
"symfony/polyfill-apcu": "^1.0",
"symfony/swiftmailer-bundle": "^2.6.4",
"symfony/symfony": "3.4.*",
"tetranz/select2entity-bundle": "2.*",
"thecsea/simple-caldav-client": "^0.1.10",
"mashape/unirest-php": "3.*",
"twig/twig": "^1.0||^2.0"
},
"require-dev": {
"sensio/generator-bundle": "^3.0",
"symfony/maker-bundle": "^1.5",
"symfony/phpunit-bridge": "^3.0"
},
"scripts": {
"symfony-scripts": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
],
"post-install-cmd": [
"@symfony-scripts"
],
"post-update-cmd": [
"@symfony-scripts"
]
},
"config": {
"platform": {
"php": "7.0.30"
},
"sort-packages": true
},
"extra": {
"symfony-app-dir": "app",
"symfony-bin-dir": "bin",
"symfony-var-dir": "var",
"symfony-web-dir": "web",
"symfony-tests-dir": "tests",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "3.4-dev"
}
}
}

View File

@ -0,0 +1,5049 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "e008822a96a469e24963e22d66f34c98",
"content-hash": "589f314a10ca56596cf580254885bd7c",
"packages": [
{
"name": "cboden/ratchet",
"version": "v0.4.1",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/Ratchet.git",
"reference": "0d31f3a8ad4795fd48397712709e55cd07f51360"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/Ratchet/zipball/0d31f3a8ad4795fd48397712709e55cd07f51360",
"reference": "0d31f3a8ad4795fd48397712709e55cd07f51360",
"shasum": ""
},
"require": {
"guzzlehttp/psr7": "^1.0",
"php": ">=5.4.2",
"ratchet/rfc6455": "^0.2",
"react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5",
"symfony/http-foundation": "^2.6|^3.0|^4.0",
"symfony/routing": "^2.6|^3.0|^4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8"
},
"type": "library",
"autoload": {
"psr-4": {
"Ratchet\\": "src/Ratchet"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"role": "Developer"
}
],
"description": "PHP WebSocket library",
"homepage": "http://socketo.me",
"keywords": [
"Ratchet",
"WebSockets",
"server",
"sockets",
"websocket"
],
"time": "2017-12-12 00:49:31"
},
{
"name": "composer/ca-bundle",
"version": "1.2.4",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
"reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"ext-pcre": "*",
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
"psr/log": "^1.0",
"symfony/process": "^2.5 || ^3.0 || ^4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\CaBundle\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
"keywords": [
"cabundle",
"cacert",
"certificate",
"ssl",
"tls"
],
"time": "2019-08-30 08:44:50"
},
{
"name": "debril/feed-io",
"version": "v3.1.5",
"source": {
"type": "git",
"url": "https://github.com/alexdebril/feed-io.git",
"reference": "a8ae664c948f0ca926150cc4597f343af797b4b0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alexdebril/feed-io/zipball/a8ae664c948f0ca926150cc4597f343af797b4b0",
"reference": "a8ae664c948f0ca926150cc4597f343af797b4b0",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "~6.2",
"php": ">=5.6.0",
"psr/log": "~1.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.4",
"monolog/monolog": "1.*",
"phpunit/phpunit": "~5.6.0"
},
"suggest": {
"monolog/monolog": "Allows to handle logs",
"symfony/console": "Allows to use the command line interface"
},
"bin": [
"bin/feedio"
],
"type": "library",
"autoload": {
"psr-4": {
"FeedIo\\": "src/FeedIo"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Alexandre Debril",
"email": "alex.debril@gmail.com"
}
],
"description": "PHP library built to consume and serve JSONFeed / RSS / Atom feeds",
"homepage": "https://feed-io.net",
"keywords": [
"atom",
"cli",
"client",
"feed",
"jsonfeed",
"news",
"rss"
],
"time": "2019-04-12 11:48:51"
},
{
"name": "debril/rss-atom-bundle",
"version": "v4.1.1",
"target-dir": "Debril/RssAtomBundle",
"source": {
"type": "git",
"url": "https://github.com/alexdebril/rss-atom-bundle.git",
"reference": "49bcc3e5f2baef47374bf07c7535dc4aca6573ef"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alexdebril/rss-atom-bundle/zipball/49bcc3e5f2baef47374bf07c7535dc4aca6573ef",
"reference": "49bcc3e5f2baef47374bf07c7535dc4aca6573ef",
"shasum": ""
},
"require": {
"debril/feed-io": "~3.0|~4.0",
"php": ">=5.6",
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4|~4.0",
"symfony/framework-bundle": "~3.4|~4.0",
"symfony/http-foundation": "~3.4|~4.0",
"symfony/http-kernel": "~3.4|~4.0"
},
"require-dev": {
"doctrine/common": "~2.3",
"doctrine/doctrine-bundle": "~1.2",
"phpunit/phpunit": "~5.5",
"symfony/browser-kit": ">3.0",
"symfony/finder": ">3.0",
"symfony/validator": ">3.0"
},
"suggest": {
"doctrine/doctrine-bundle": "allow to provide feeds' content from database"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"Debril\\RssAtomBundle": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "RSS / Atom and JSONFeed support for Symfony",
"homepage": "http://debril.org/category/rss-atom-bundle/",
"keywords": [
"Syndication",
"atom",
"feed",
"jsonfeed",
"rss"
],
"time": "2018-01-12 23:30:55"
},
{
"name": "doctrine/annotations",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
"reference": "54cacc9b81758b14e3ce750f205a393d52339e97"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97",
"reference": "54cacc9b81758b14e3ce750f205a393d52339e97",
"shasum": ""
},
"require": {
"doctrine/lexer": "1.*",
"php": "^5.6 || ^7.0"
},
"require-dev": {
"doctrine/cache": "1.*",
"phpunit/phpunit": "^5.7"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Docblock Annotations Parser",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"annotations",
"docblock",
"parser"
],
"time": "2017-02-24 16:22:25"
},
{
"name": "doctrine/cache",
"version": "v1.6.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/eb152c5100571c7a45470ff2a35095ab3f3b900b",
"reference": "eb152c5100571c7a45470ff2a35095ab3f3b900b",
"shasum": ""
},
"require": {
"php": "~5.5|~7.0"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"phpunit/phpunit": "~4.8|~5.0",
"predis/predis": "~1.0",
"satooshi/php-coveralls": "~0.6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Caching library offering an object-oriented API for many cache backends",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"cache",
"caching"
],
"time": "2017-07-22 12:49:21"
},
{
"name": "doctrine/collections",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
"reference": "1a4fb7e902202c33cce8c55989b945612943c2ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba",
"reference": "1a4fb7e902202c33cce8c55989b945612943c2ba",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
},
"require-dev": {
"doctrine/coding-standard": "~0.1@dev",
"phpunit/phpunit": "^5.7"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"psr-0": {
"Doctrine\\Common\\Collections\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Collections Abstraction library",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"array",
"collections",
"iterator"
],
"time": "2017-01-03 10:49:41"
},
{
"name": "doctrine/common",
"version": "v2.7.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
"reference": "4acb8f89626baafede6ee5475bc5844096eba8a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/common/zipball/4acb8f89626baafede6ee5475bc5844096eba8a9",
"reference": "4acb8f89626baafede6ee5475bc5844096eba8a9",
"shasum": ""
},
"require": {
"doctrine/annotations": "1.*",
"doctrine/cache": "1.*",
"doctrine/collections": "1.*",
"doctrine/inflector": "1.*",
"doctrine/lexer": "1.*",
"php": "~5.6|~7.0"
},
"require-dev": {
"phpunit/phpunit": "^5.4.6"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.7.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Common Library for Doctrine projects",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"annotations",
"collections",
"eventmanager",
"persistence",
"spl"
],
"time": "2017-07-22 08:35:12"
},
{
"name": "doctrine/data-fixtures",
"version": "v1.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/data-fixtures.git",
"reference": "17fa5bfe6ff52e35cb3d9ec37c934a2f4bd1fa2e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/17fa5bfe6ff52e35cb3d9ec37c934a2f4bd1fa2e",
"reference": "17fa5bfe6ff52e35cb3d9ec37c934a2f4bd1fa2e",
"shasum": ""
},
"require": {
"doctrine/common": "~2.2",
"php": "^5.6 || ^7.0"
},
"conflict": {
"doctrine/orm": "< 2.4"
},
"require-dev": {
"doctrine/dbal": "^2.5.4",
"doctrine/orm": "^2.5.4",
"phpunit/phpunit": "^5.4.6"
},
"suggest": {
"doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
"doctrine/orm": "For loading ORM fixtures",
"doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"psr-0": {
"Doctrine\\Common\\DataFixtures": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Data Fixtures for all Doctrine Object Managers",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database"
],
"time": "2016-09-20 10:07:57"
},
{
"name": "doctrine/dbal",
"version": "v2.5.13",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "729340d8d1eec8f01bff708e12e449a3415af873"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/729340d8d1eec8f01bff708e12e449a3415af873",
"reference": "729340d8d1eec8f01bff708e12e449a3415af873",
"shasum": ""
},
"require": {
"doctrine/common": ">=2.4,<2.8-dev",
"php": ">=5.3.2"
},
"require-dev": {
"phpunit/phpunit": "4.*",
"symfony/console": "2.*||^3.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
},
"bin": [
"bin/doctrine-dbal"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.5.x-dev"
}
},
"autoload": {
"psr-0": {
"Doctrine\\DBAL\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Database Abstraction Layer",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database",
"dbal",
"persistence",
"queryobject"
],
"time": "2017-07-22 20:44:48"
},
{
"name": "doctrine/doctrine-bundle",
"version": "1.10.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git",
"reference": "907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c",
"reference": "907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c",
"shasum": ""
},
"require": {
"doctrine/dbal": "^2.5.12",
"doctrine/doctrine-cache-bundle": "~1.2",
"jdorn/sql-formatter": "^1.2.16",
"php": "^5.5.9|^7.0",
"symfony/console": "~2.7|~3.0|~4.0",
"symfony/dependency-injection": "~2.7|~3.0|~4.0",
"symfony/doctrine-bridge": "~2.7|~3.0|~4.0",
"symfony/framework-bundle": "^2.7.22|~3.0|~4.0"
},
"conflict": {
"symfony/http-foundation": "<2.6"
},
"require-dev": {
"doctrine/orm": "~2.4",
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^4.8.36|^5.7|^6.4",
"symfony/phpunit-bridge": "~2.7|~3.0|~4.0",
"symfony/property-info": "~2.8|~3.0|~4.0",
"symfony/validator": "~2.7|~3.0|~4.0",
"symfony/web-profiler-bundle": "~2.7|~3.0|~4.0",
"symfony/yaml": "~2.7|~3.0|~4.0",
"twig/twig": "~1.26|~2.0"
},
"suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
"symfony/web-profiler-bundle": "To use the data collector."
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.9.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org/"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database",
"dbal",
"orm",
"persistence"
],
"time": "2019-04-04 08:03:53"
},
{
"name": "doctrine/doctrine-cache-bundle",
"version": "1.3.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineCacheBundle.git",
"reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927",
"reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927",
"shasum": ""
},
"require": {
"doctrine/cache": "^1.4.2",
"doctrine/inflector": "~1.0",
"php": ">=5.3.2",
"symfony/doctrine-bridge": "~2.7|~3.3|~4.0"
},
"require-dev": {
"instaclick/coding-standard": "~1.1",
"instaclick/object-calisthenics-sniffs": "dev-master",
"instaclick/symfony2-coding-standard": "dev-remaster",
"phpunit/phpunit": "~4.8.36|~5.6|~6.5|~7.0",
"predis/predis": "~0.8",
"satooshi/php-coveralls": "^1.0",
"squizlabs/php_codesniffer": "~1.5",
"symfony/console": "~2.7|~3.3|~4.0",
"symfony/finder": "~2.7|~3.3|~4.0",
"symfony/framework-bundle": "~2.7|~3.3|~4.0",
"symfony/phpunit-bridge": "~2.7|~3.3|~4.0",
"symfony/security-acl": "~2.7|~3.3",
"symfony/validator": "~2.7|~3.3|~4.0",
"symfony/yaml": "~2.7|~3.3|~4.0"
},
"suggest": {
"symfony/security-acl": "For using this bundle to cache ACLs"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineCacheBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Fabio B. Silva",
"email": "fabio.bat.silva@gmail.com"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@hotmail.com"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org/"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony Bundle for Doctrine Cache",
"homepage": "https://www.doctrine-project.org",
"keywords": [
"cache",
"caching"
],
"time": "2018-11-09 06:25:35"
},
{
"name": "doctrine/doctrine-fixtures-bundle",
"version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
"reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273",
"reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273",
"shasum": ""
},
"require": {
"doctrine/data-fixtures": "~1.0",
"doctrine/doctrine-bundle": "~1.0",
"php": ">=5.3.2",
"symfony/doctrine-bridge": "~2.7|~3.0|~4.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\FixturesBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineFixturesBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"Fixture",
"persistence"
],
"time": "2017-10-30 19:26:42"
},
{
"name": "doctrine/doctrine-migrations-bundle",
"version": "v1.3.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineMigrationsBundle.git",
"reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce",
"reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "~1.0",
"doctrine/migrations": "^1.1",
"php": ">=5.4.0",
"symfony/framework-bundle": "~2.7|~3.3|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^7.4"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\MigrationsBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineMigrationsBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"dbal",
"migrations",
"schema"
],
"time": "2018-12-03 11:55:33"
},
{
"name": "doctrine/inflector",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "e11d84c6e018beedd929cff5220969a3c6d1d462"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462",
"reference": "e11d84c6e018beedd929cff5220969a3c6d1d462",
"shasum": ""
},
"require": {
"php": "^7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Common String Manipulations with regard to casing and singular/plural rules.",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"inflection",
"pluralize",
"singularize",
"string"
],
"time": "2017-07-22 12:18:28"
},
{
"name": "doctrine/instantiator",
"version": "1.0.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
"reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
"reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
"shasum": ""
},
"require": {
"php": ">=5.3,<8.0-DEV"
},
"require-dev": {
"athletic/athletic": "~0.1.8",
"ext-pdo": "*",
"ext-phar": "*",
"phpunit/phpunit": "~4.0",
"squizlabs/php_codesniffer": "~2.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "http://ocramius.github.com/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
"homepage": "https://github.com/doctrine/instantiator",
"keywords": [
"constructor",
"instantiate"
],
"time": "2015-06-14 21:17:01"
},
{
"name": "doctrine/lexer",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
"reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8",
"reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
"require-dev": {
"phpunit/phpunit": "^4.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
"homepage": "https://www.doctrine-project.org/projects/lexer.html",
"keywords": [
"annotations",
"docblock",
"lexer",
"parser",
"php"
],
"time": "2019-06-08 11:03:04"
},
{
"name": "doctrine/migrations",
"version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/migrations.git",
"reference": "c81147c0f2938a6566594455367e095150547f72"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/migrations/zipball/c81147c0f2938a6566594455367e095150547f72",
"reference": "c81147c0f2938a6566594455367e095150547f72",
"shasum": ""
},
"require": {
"doctrine/dbal": "~2.2",
"ocramius/proxy-manager": "^1.0|^2.0",
"php": "^5.5|^7.0",
"symfony/console": "~2.3|~3.0",
"symfony/yaml": "~2.3|~3.0"
},
"require-dev": {
"doctrine/coding-standard": "dev-master",
"doctrine/orm": "2.*",
"jdorn/sql-formatter": "~1.1",
"johnkary/phpunit-speedtrap": "~1.0@dev",
"mikey179/vfsstream": "^1.6",
"mockery/mockery": "^0.9.4",
"phpunit/phpunit": "~4.7",
"satooshi/php-coveralls": "^1.0"
},
"suggest": {
"jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command."
},
"bin": [
"bin/doctrine-migrations"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "v1.6.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1"
],
"authors": [
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Michael Simonson",
"email": "contact@mikesimonson.com"
}
],
"description": "Database Schema migrations using Doctrine DBAL",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database",
"migrations"
],
"time": "2016-12-25 22:54:00"
},
{
"name": "doctrine/orm",
"version": "v2.5.14",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
"reference": "810a7baf81462a5ddf10e8baa8cb94b6eec02754"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/orm/zipball/810a7baf81462a5ddf10e8baa8cb94b6eec02754",
"reference": "810a7baf81462a5ddf10e8baa8cb94b6eec02754",
"shasum": ""
},
"require": {
"doctrine/cache": "~1.4",
"doctrine/collections": "~1.2",
"doctrine/common": ">=2.5-dev,<2.9-dev",
"doctrine/dbal": ">=2.5-dev,<2.7-dev",
"doctrine/instantiator": "^1.0.1",
"ext-pdo": "*",
"php": ">=5.4",
"symfony/console": "~2.5|~3.0|~4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"symfony/yaml": "~2.3|~3.0|~4.0"
},
"suggest": {
"symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
},
"bin": [
"bin/doctrine",
"bin/doctrine.php"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6.x-dev"
}
},
"autoload": {
"psr-0": {
"Doctrine\\ORM\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Object-Relational-Mapper for PHP",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database",
"orm"
],
"time": "2017-12-17 02:57:51"
},
{
"name": "egeloen/ckeditor-bundle",
"version": "6.0.1",
"source": {
"type": "git",
"url": "https://github.com/egeloen/IvoryCKEditorBundle.git",
"reference": "9c9926918d3ae4b4d89ca2db578766ab9829ee7a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egeloen/IvoryCKEditorBundle/zipball/9c9926918d3ae4b4d89ca2db578766ab9829ee7a",
"reference": "9c9926918d3ae4b4d89ca2db578766ab9829ee7a",
"shasum": ""
},
"require": {
"egeloen/json-builder": "^2.0|^3.0",
"php": "^5.6|^7.0",
"symfony/dependency-injection": "^2.7|^3.0",
"symfony/form": "^2.7|^3.0",
"symfony/framework-bundle": "^2.7|^3.0"
},
"require-dev": {
"composer/composer": "^1.0",
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^5.0|^6.0",
"sensio/distribution-bundle": "^3.0.12|^4.0|^5.0",
"symfony/asset": "^2.7|^3.0",
"symfony/console": "^2.7|^3.0",
"symfony/phpunit-bridge": "^2.7|^3.0",
"symfony/templating": "^2.7|^3.0",
"symfony/twig-bridge": "^2.7|^3.0",
"symfony/yaml": "^2.7|^3.0",
"twig/twig": "^1.12"
},
"suggest": {
"egeloen/form-extra-bundle": "Allows to load CKEditor asynchronously",
"sensio/distribution-bundle": "Allows to install CKEditor via a script handler",
"symfony/asset": "Allows to rewrite/version assets",
"symfony/templating": "Allows to use PHP templates",
"symfony/twig-bridge": "Allows to use Twig templates",
"twig/twig": "Allows to use Twig templates"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "6.0-dev"
}
},
"autoload": {
"psr-4": {
"Ivory\\CKEditorBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
}
],
"description": "Provides a CKEditor integration for your Symfony2 Project.",
"keywords": [
"CKEditor"
],
"time": "2017-08-18 08:19:45"
},
{
"name": "egeloen/json-builder",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/egeloen/ivory-json-builder.git",
"reference": "3e70bc681891d8aca88dd72164caea659739f284"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egeloen/ivory-json-builder/zipball/3e70bc681891d8aca88dd72164caea659739f284",
"reference": "3e70bc681891d8aca88dd72164caea659739f284",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^5.6|^7.0",
"symfony/property-access": "^2.7|^3.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^5.0",
"symfony/phpunit-bridge": "^2.7|^3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"Ivory\\JsonBuilder\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
}
],
"description": "JSON builder with escaping control for PHP 5.6+",
"keywords": [
"Escape",
"builder",
"json"
],
"time": "2017-02-27 20:18:54"
},
{
"name": "evenement/evenement",
"version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/igorw/evenement.git",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
},
"type": "library",
"autoload": {
"psr-0": {
"Evenement": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Igor Wiedler",
"email": "igor@wiedler.ch"
}
],
"description": "Événement is a very simple event dispatching library for PHP",
"keywords": [
"event-dispatcher",
"event-emitter"
],
"time": "2017-07-23 21:35:13"
},
{
"name": "fig/link-util",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link-util.git",
"reference": "1a07821801a148be4add11ab0603e4af55a72fac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac",
"reference": "1a07821801a148be4add11ab0603e4af55a72fac",
"shasum": ""
},
"require": {
"php": ">=5.5.0",
"psr/link": "~1.0@dev"
},
"require-dev": {
"phpunit/phpunit": "^5.1",
"squizlabs/php_codesniffer": "^2.3.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Fig\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common utility implementations for HTTP links",
"keywords": [
"http",
"http-link",
"link",
"psr",
"psr-13",
"rest"
],
"time": "2016-10-17 18:31:11"
},
{
"name": "gos/pnctl-event-loop-emitter",
"version": "v0.1.7",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/PNCTLEventLoopEmitter.git",
"reference": "93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/PNCTLEventLoopEmitter/zipball/93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3",
"reference": "93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3",
"shasum": ""
},
"require": {
"evenement/evenement": "~2.0|~3.0",
"php": ">=5.4",
"react/event-loop": "~0.4.0|^0.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Component\\PnctlEventLoopEmitter\\": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Pnctl event emitter for event loop",
"homepage": "https://github.com/GeniusesOfSymfony/PnctlEventLoopEmitter",
"keywords": [
"Pnctl",
"event loop",
"reactphp"
],
"time": "2018-04-09 11:12:07"
},
{
"name": "gos/pubsub-router-bundle",
"version": "v0.3.5",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle.git",
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/PubSubRouterBundle/zipball/a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
"shasum": ""
},
"require": {
"doctrine/cache": "~1.4",
"php": ">=5.5",
"symfony/console": "~3.4|~4.0",
"symfony/framework-bundle": "~3.4|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "0.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Bundle\\PubSubRouterBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Symfony PubSub Router Bundle",
"homepage": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle",
"keywords": [
"PubSub Bundle",
"WAMP",
"bundle",
"pubsub",
"redis",
"zmq"
],
"time": "2018-10-04 17:09:23"
},
{
"name": "gos/web-socket-bundle",
"version": "v1.8.13",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/WebSocketBundle.git",
"reference": "016f4b49a16731945fc3ee1e0781f53167e393cf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/016f4b49a16731945fc3ee1e0781f53167e393cf",
"reference": "016f4b49a16731945fc3ee1e0781f53167e393cf",
"shasum": ""
},
"require": {
"cboden/ratchet": "^0.4.1",
"gos/pnctl-event-loop-emitter": "^0.1",
"gos/pubsub-router-bundle": "^0.3",
"gos/websocket-client": "^0.1",
"ocramius/proxy-manager": "^1.0|^2.1",
"php": ">=5.4",
"symfony/framework-bundle": "^2.3|^3.0|^4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8"
},
"suggest": {
"doctrine/cache": "* to use doctrine/cache as a client driver",
"ext-amqp": "*",
"ext-libev": "*",
"ext-libevent": ">=0.0.5",
"ext-zmq": "*",
"symfony/cache": ">=3.1 to use symfony/cache as a client driver",
"symfony/proxy-manager-bridge": "~2.3"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.8.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Bundle\\WebSocketBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dare",
"email": "jeremy.d.dare@gmail.com"
},
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Symfony Web Socket Bundle",
"homepage": "https://github.com/GeniusesOfSymfony/WebSocketBundle",
"keywords": [
"Ratchet",
"WAMP",
"Web Socket Bundle",
"io",
"websocket"
],
"time": "2018-07-29 14:31:46"
},
{
"name": "gos/websocket-client",
"version": "v0.1.2",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/WebSocketPhpClient.git",
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketPhpClient/zipball/13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Component\\WebSocketClient\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
},
{
"name": "Martin Bažík",
"email": "martin@bazo.sk"
}
],
"description": "WAMP client in PHP",
"keywords": [
"Ratchet",
"WAMP",
"websocket"
],
"time": "2015-08-04 11:43:11"
},
{
"name": "gregwar/captcha",
"version": "v1.1.7",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/Captcha.git",
"reference": "cf953dd79748406e0292cea8c565399681e4d345"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/Captcha/zipball/cf953dd79748406e0292cea8c565399681e4d345",
"reference": "cf953dd79748406e0292cea8c565399681e4d345",
"shasum": ""
},
"require": {
"ext-gd": "*",
"ext-mbstring": "*",
"php": ">=5.3.0",
"symfony/finder": "*"
},
"require-dev": {
"phpunit/phpunit": "^6.4"
},
"type": "captcha",
"autoload": {
"psr-4": {
"Gregwar\\": "src/Gregwar"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Passault",
"email": "g.passault@gmail.com",
"homepage": "http://www.gregwar.com/"
},
{
"name": "Jeremy Livingston",
"email": "jeremy.j.livingston@gmail.com"
}
],
"description": "Captcha generator",
"homepage": "https://github.com/Gregwar/Captcha",
"keywords": [
"bot",
"captcha",
"spam"
],
"time": "2018-08-17 22:57:28"
},
{
"name": "gregwar/captcha-bundle",
"version": "v2.0.6",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/CaptchaBundle.git",
"reference": "c2d5468556890dd25e0b53bd345fc205562c86f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/c2d5468556890dd25e0b53bd345fc205562c86f7",
"reference": "c2d5468556890dd25e0b53bd345fc205562c86f7",
"shasum": ""
},
"require": {
"gregwar/captcha": "~1.1",
"php": ">=5.3.9",
"symfony/form": "~2.8|~3.0|~4.0",
"symfony/framework-bundle": "~2.8|~3.0|~4.0"
},
"type": "captcha-bundle",
"autoload": {
"psr-4": {
"Gregwar\\CaptchaBundle\\": "/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Passault",
"email": "g.passault@gmail.com",
"homepage": "http://www.gregwar.com/"
},
{
"name": "Jeremy Livingston",
"email": "jeremy.j.livingston@gmail.com"
}
],
"description": "Captcha bundle",
"homepage": "https://github.com/Gregwar/CaptchaBundle",
"keywords": [
"Symfony2",
"bot",
"captcha",
"code",
"security",
"spam",
"visual"
],
"time": "2018-11-20 10:41:34"
},
{
"name": "guzzlehttp/guzzle",
"version": "6.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "0895c932405407fd3a7368b6910c09a24d26db11"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/0895c932405407fd3a7368b6910c09a24d26db11",
"reference": "0895c932405407fd3a7368b6910c09a24d26db11",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1",
"php": ">=5.5"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
"psr/log": "^1.1"
},
"suggest": {
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.3-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Guzzle is a PHP HTTP client library",
"homepage": "http://guzzlephp.org/",
"keywords": [
"client",
"curl",
"framework",
"http",
"http client",
"rest",
"web service"
],
"time": "2019-10-23 15:58:00"
},
{
"name": "guzzlehttp/promises",
"version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"shasum": ""
},
"require": {
"php": ">=5.5.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Guzzle promises library",
"keywords": [
"promise"
],
"time": "2016-12-20 10:07:11"
},
{
"name": "guzzlehttp/psr7",
"version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "239400de7a173fe9901b9ac7c06497751f00727a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
"reference": "239400de7a173fe9901b9ac7c06497751f00727a",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"psr/http-message": "~1.0",
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"ext-zlib": "*",
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
},
"suggest": {
"zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Tobias Schultze",
"homepage": "https://github.com/Tobion"
}
],
"description": "PSR-7 message implementation that also provides common utility methods",
"keywords": [
"http",
"message",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"time": "2019-07-01 23:21:34"
},
{
"name": "incenteev/composer-parameter-handler",
"version": "v2.1.3",
"source": {
"type": "git",
"url": "https://github.com/Incenteev/ParameterHandler.git",
"reference": "933c45a34814f27f2345c11c37d46b3ca7303550"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550",
"reference": "933c45a34814f27f2345c11c37d46b3ca7303550",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/yaml": "^2.3 || ^3.0 || ^4.0"
},
"require-dev": {
"composer/composer": "^1.0@dev",
"symfony/filesystem": "^2.3 || ^3 || ^4",
"symfony/phpunit-bridge": "^4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Incenteev\\ParameterHandler\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christophe Coevoet",
"email": "stof@notk.org"
}
],
"description": "Composer script handling your ignored parameter file",
"homepage": "https://github.com/Incenteev/ParameterHandler",
"keywords": [
"parameters management"
],
"time": "2018-02-13 18:05:56"
},
{
"name": "jasig/phpcas",
"version": "1.3.8",
"source": {
"type": "git",
"url": "https://github.com/apereo/phpCAS.git",
"reference": "40c0769ce05a30c8172b36ceab11124375c8366e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/apereo/phpCAS/zipball/40c0769ce05a30c8172b36ceab11124375c8366e",
"reference": "40c0769ce05a30c8172b36ceab11124375c8366e",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "~3.7.10"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"source/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Joachim Fritschi",
"homepage": "https://wiki.jasig.org/display/~fritschi"
},
{
"name": "Adam Franco",
"homepage": "https://wiki.jasig.org/display/~adamfranco"
}
],
"description": "Provides a simple API for authenticating users against a CAS server",
"homepage": "https://wiki.jasig.org/display/CASC/phpCAS",
"keywords": [
"apereo",
"cas",
"jasig"
],
"time": "2019-08-18 20:01:55"
},
{
"name": "jdorn/sql-formatter",
"version": "v1.2.17",
"source": {
"type": "git",
"url": "https://github.com/jdorn/sql-formatter.git",
"reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
"reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
"shasum": ""
},
"require": {
"php": ">=5.2.4"
},
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"lib"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dorn",
"email": "jeremy@jeremydorn.com",
"homepage": "http://jeremydorn.com/"
}
],
"description": "a PHP SQL highlighting library",
"homepage": "https://github.com/jdorn/sql-formatter/",
"keywords": [
"highlight",
"sql"
],
"time": "2014-01-12 16:20:24"
},
{
"name": "kriswallsmith/assetic",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/kriswallsmith/assetic.git",
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
"shasum": ""
},
"require": {
"php": ">=5.3.1",
"symfony/process": "~2.1|~3.0"
},
"conflict": {
"twig/twig": "<1.27"
},
"require-dev": {
"leafo/lessphp": "^0.3.7",
"leafo/scssphp": "~0.1",
"meenie/javascript-packer": "^1.1",
"mrclay/minify": "<2.3",
"natxet/cssmin": "3.0.4",
"patchwork/jsqueeze": "~1.0|~2.0",
"phpunit/phpunit": "~4.8 || ^5.6",
"psr/log": "~1.0",
"ptachoire/cssembed": "~1.0",
"symfony/phpunit-bridge": "~2.7|~3.0",
"twig/twig": "~1.23|~2.0",
"yfix/packager": "dev-master"
},
"suggest": {
"leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
"leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
"leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
"patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
"ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
"twig/twig": "Assetic provides the integration with the Twig templating engine"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"psr-0": {
"Assetic": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "kris.wallsmith@gmail.com",
"homepage": "http://kriswallsmith.net/"
}
],
"description": "Asset Management for PHP",
"homepage": "https://github.com/kriswallsmith/assetic",
"keywords": [
"assets",
"compression",
"minification"
],
"time": "2016-11-11 18:43:20"
},
{
"name": "lightsaml/lightsaml",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/lightSAML.git",
"reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/lightSAML/zipball/377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5",
"reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5",
"shasum": ""
},
"require": {
"php": ">=5.6",
"robrichards/xmlseclibs": "~2.0|~3.0|~4.0",
"symfony/event-dispatcher": "~2.3|~3.0|~4.0",
"symfony/http-foundation": "~2.3|~3.0|~4.0"
},
"require-dev": {
"monolog/monolog": "~1.3",
"phpunit/phpunit": ">=5.7",
"pimple/pimple": "~3.0",
"symfony/css-selector": "~2.3|~3.0|~4.0",
"symfony/dom-crawler": "~2.3|~3.0|~4.0"
},
"suggest": {
"lightsaml/sp-bundle": "Symfony 2 SP security bundle",
"lightsaml/symfony-bridge": "Symfony 2 build container bridge"
},
"type": "library",
"autoload": {
"psr-0": {
"LightSaml\\Tests\\": "tests/",
"LightSaml\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "https://github.com/tmilos/",
"role": "Developer"
}
],
"description": "Light SAML 2.0 PHP library",
"homepage": "https://www.lightsaml.com/",
"keywords": [
"SAML 2.0",
"Single Logout",
"Single SignOn",
"library",
"lightSAML",
"php"
],
"time": "2018-05-28 11:21:22"
},
{
"name": "lightsaml/sp-bundle",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SpBundle.git",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"shasum": ""
},
"require": {
"lightsaml/symfony-bridge": "~1.3",
"php": ">=5.6",
"symfony/framework-bundle": "~2.7|~3.0|~4.0",
"symfony/security-bundle": "~2.7|~3.0|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7",
"sebastian/comparator": "^1.2.4|~2.0|~3.0",
"symfony/monolog-bundle": "~2.7|~3.0|~4.0",
"symfony/symfony": "~2.7|~3.0|~4.0"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"LightSaml\\SpBundle\\Tests\\": "tests/",
"LightSaml\\SpBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "http://github.com/tmilos",
"role": "Developer"
}
],
"description": "Light SAML2 SP Symfony Bundle",
"homepage": "http://www.lightsaml.com/SP-Bundle/",
"time": "2019-11-13 19:05:47"
},
{
"name": "lightsaml/symfony-bridge",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SymfonyBridgeBundle.git",
"reference": "8d3120825032a7468e894d0ae68630f21cd6035b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SymfonyBridgeBundle/zipball/8d3120825032a7468e894d0ae68630f21cd6035b",
"reference": "8d3120825032a7468e894d0ae68630f21cd6035b",
"shasum": ""
},
"require": {
"lightsaml/lightsaml": "~1.1",
"php": ">=5.5.1",
"symfony/dependency-injection": "~2.7|~3.0|~4.0",
"symfony/framework-bundle": "~2.7|~3.0|~4.0",
"symfony/yaml": "~2.7|~3.0|~4.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "~2.0",
"phpunit/phpunit": "^5.7",
"symfony/browser-kit": "~2.7|~3.0|~4.0",
"symfony/filesystem": "~2.7|~3.0|~4.0",
"symfony/finder": "~2.7|~3.0|~4.0",
"symfony/routing": "~2.7|~3.0|~4.0"
},
"suggest": {
"lightsaml/lightsamp-idp": "If you will be using IDP LightSAML services"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"LightSaml\\SymfonyBridgeBundle\\Tests\\": "tests/",
"LightSaml\\SymfonyBridgeBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "http://github.com/tmilos",
"role": "Developer"
}
],
"description": "Light SAML Symfony bridge bundle",
"homepage": "http://www.lightsaml.com",
"time": "2018-05-23 08:11:59"
},
{
"name": "mashape/unirest-php",
"version": "v3.0.4",
"source": {
"type": "git",
"url": "https://github.com/Mashape/unirest-php.git",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Mashape/unirest-php/zipball/842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0"
},
"require-dev": {
"codeclimate/php-test-reporter": "0.1.*",
"phpunit/phpunit": "~4.4"
},
"suggest": {
"ext-json": "Allows using JSON Bodies for sending and parsing requests"
},
"type": "library",
"autoload": {
"psr-0": {
"Unirest\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Unirest PHP",
"homepage": "https://github.com/Mashape/unirest-php",
"keywords": [
"client",
"curl",
"http",
"https",
"rest"
],
"time": "2016-08-11 17:49:21"
},
{
"name": "monolog/monolog",
"version": "1.25.2",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
"reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"psr/log": "~1.0"
},
"provide": {
"psr/log-implementation": "1.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"jakub-onderka/php-parallel-lint": "0.9",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpunit/phpunit": "~4.5",
"phpunit/phpunit-mock-objects": "2.3.0",
"ruflin/elastica": ">=0.90 <3.0",
"sentry/sentry": "^0.13",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mongo": "Allow sending log messages to a MongoDB server",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
"sentry/sentry": "Allow sending log messages to a Sentry server"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "http://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"time": "2019-11-13 10:00:05"
},
{
"name": "ocramius/proxy-manager",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/Ocramius/ProxyManager.git",
"reference": "57e9272ec0e8deccf09421596e0e2252df440e11"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/57e9272ec0e8deccf09421596e0e2252df440e11",
"reference": "57e9272ec0e8deccf09421596e0e2252df440e11",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"zendframework/zend-code": ">2.2.5,<3.0"
},
"require-dev": {
"ext-phar": "*",
"phpunit/phpunit": "~4.0",
"squizlabs/php_codesniffer": "1.5.*"
},
"suggest": {
"ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
"zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)",
"zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)",
"zendframework/zend-stdlib": "To use the hydrator proxy",
"zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-0": {
"ProxyManager\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "http://ocramius.github.com/"
}
],
"description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
"homepage": "https://github.com/Ocramius/ProxyManager",
"keywords": [
"aop",
"lazy loading",
"proxy",
"proxy pattern",
"service proxies"
],
"time": "2015-08-09 04:28:19"
},
{
"name": "oneup/uploader-bundle",
"version": "1.9.2",
"target-dir": "Oneup/UploaderBundle",
"source": {
"type": "git",
"url": "https://github.com/1up-lab/OneupUploaderBundle.git",
"reference": "a32bc98019abfd51531d08cc79be19f849d87b84"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/1up-lab/OneupUploaderBundle/zipball/a32bc98019abfd51531d08cc79be19f849d87b84",
"reference": "a32bc98019abfd51531d08cc79be19f849d87b84",
"shasum": ""
},
"require": {
"paragonie/random_compat": "^1.1|^2.0",
"php": ">=5.4",
"symfony/asset": "^2.4|^3.0",
"symfony/finder": "^2.4|^3.0",
"symfony/framework-bundle": "^2.4|^3.0",
"symfony/templating": "^2.4|^3.0",
"symfony/translation": "^2.4|^3.0"
},
"require-dev": {
"amazonwebservices/aws-sdk-for-php": "1.5.*",
"knplabs/gaufrette": "0.2.*@dev",
"oneup/flysystem-bundle": "^1.2",
"phpunit/phpunit": "^4.4",
"sensio/framework-extra-bundle": "2.*|^3.0",
"symfony/browser-kit": "2.*|^3.0",
"symfony/class-loader": "2.*|^3.0",
"symfony/security-bundle": "2.*|^3.0",
"twistor/flysystem-stream-wrapper": "^1.0"
},
"suggest": {
"knplabs/knp-gaufrette-bundle": "0.1.*",
"oneup/flysystem-bundle": "^1.2",
"twistor/flysystem-stream-wrapper": "^1.0 (Required when using Flysystem)"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"Oneup\\UploaderBundle": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jim Schmid",
"email": "js@1up.io",
"homepage": "http://1up.io",
"role": "Developer"
}
],
"description": "Handles multi file uploads in Symfony2. Features included: Chunked upload, Orphans management, Gaufrette support.",
"homepage": "http://1up.io",
"keywords": [
"FancyUpload",
"FineUploader",
"MooUpload",
"Uploadify",
"YUI3 Uploader",
"blueimp",
"dropzone",
"fileupload",
"jQuery File Uploader",
"plupload",
"upload"
],
"time": "2017-12-18 12:41:59"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.18",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
"reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
"shasum": ""
},
"require": {
"php": ">=5.2.0"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"autoload": {
"files": [
"lib/random.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"time": "2019-01-03 20:59:08"
},
{
"name": "psr/cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
"reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
"keywords": [
"cache",
"psr",
"psr-6"
],
"time": "2016-08-06 20:24:11"
},
{
"name": "psr/container",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common Container Interface (PHP FIG PSR-11)",
"homepage": "https://github.com/php-fig/container",
"keywords": [
"PSR-11",
"container",
"container-interface",
"container-interop",
"psr"
],
"time": "2017-02-14 16:28:37"
},
{
"name": "psr/http-message",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
"homepage": "https://github.com/php-fig/http-message",
"keywords": [
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"time": "2016-08-06 14:39:51"
},
{
"name": "psr/link",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link.git",
"reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562",
"reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for HTTP links",
"keywords": [
"http",
"http-link",
"link",
"psr",
"psr-13",
"rest"
],
"time": "2016-10-28 16:06:13"
},
{
"name": "psr/log",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2019-11-01 11:05:21"
},
{
"name": "psr/simple-cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\SimpleCache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for simple caching",
"keywords": [
"cache",
"caching",
"psr",
"psr-16",
"simple-cache"
],
"time": "2017-10-23 01:57:42"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "120b605dfeb996808c31b6477290a714d356e822"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
"reference": "120b605dfeb996808c31b6477290a714d356e822",
"shasum": ""
},
"require": {
"php": ">=5.6"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^5 || ^6.5"
},
"type": "library",
"autoload": {
"files": [
"src/getallheaders.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph Khattar",
"email": "ralph.khattar@gmail.com"
}
],
"description": "A polyfill for getallheaders.",
"time": "2019-03-08 08:55:37"
},
{
"name": "ramsey/uuid",
"version": "3.8.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
"reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
"reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
"shasum": ""
},
"require": {
"paragonie/random_compat": "^1.0|^2.0|9.99.99",
"php": "^5.4 || ^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"replace": {
"rhumsaa/uuid": "self.version"
},
"require-dev": {
"codeception/aspect-mock": "^1.0 | ~2.0.0",
"doctrine/annotations": "~1.2.0",
"goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0",
"ircmaxell/random-lib": "^1.1",
"jakub-onderka/php-parallel-lint": "^0.9.0",
"mockery/mockery": "^0.9.9",
"moontoast/math": "^1.1",
"php-mock/php-mock-phpunit": "^0.3|^1.1",
"phpunit/phpunit": "^4.7|^5.0|^6.5",
"squizlabs/php_codesniffer": "^2.3"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
"ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
"ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
"ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
"ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Ramsey\\Uuid\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marijn Huizendveld",
"email": "marijn.huizendveld@gmail.com"
},
{
"name": "Thibaud Fabre",
"email": "thibaud@aztech.io"
},
{
"name": "Ben Ramsey",
"email": "ben@benramsey.com",
"homepage": "https://benramsey.com"
}
],
"description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
"homepage": "https://github.com/ramsey/uuid",
"keywords": [
"guid",
"identifier",
"uuid"
],
"time": "2018-07-19 23:38:55"
},
{
"name": "ratchet/rfc6455",
"version": "v0.2.5",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/RFC6455.git",
"reference": "c62f7cd95ffbb6e94fd657be694fc7372ecd6e62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/c62f7cd95ffbb6e94fd657be694fc7372ecd6e62",
"reference": "c62f7cd95ffbb6e94fd657be694fc7372ecd6e62",
"shasum": ""
},
"require": {
"guzzlehttp/psr7": "^1.0",
"php": ">=5.4.2"
},
"require-dev": {
"phpunit/phpunit": "4.8.*",
"react/http": "^0.4.1",
"react/socket-client": "^0.4.3"
},
"type": "library",
"autoload": {
"psr-4": {
"Ratchet\\RFC6455\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"role": "Developer"
}
],
"description": "RFC6455 WebSocket protocol handler",
"homepage": "http://socketo.me",
"keywords": [
"WebSockets",
"rfc6455",
"websocket"
],
"time": "2019-03-10 17:10:42"
},
{
"name": "react/cache",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/cache.git",
"reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466",
"reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/promise": "~2.0|~1.1"
},
"require-dev": {
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Async, Promise-based cache interface for ReactPHP",
"keywords": [
"cache",
"caching",
"promise",
"reactphp"
],
"time": "2019-07-11 13:45:28"
},
{
"name": "react/dns",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/dns.git",
"reference": "a214d90c2884dac18d0cac6176202f247b66d762"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/dns/zipball/a214d90c2884dac18d0cac6176202f247b66d762",
"reference": "a214d90c2884dac18d0cac6176202f247b66d762",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/cache": "^1.0 || ^0.6 || ^0.5",
"react/event-loop": "^1.0 || ^0.5",
"react/promise": "^2.7 || ^1.2.1",
"react/promise-timer": "^1.2"
},
"require-dev": {
"clue/block-react": "^1.2",
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Dns\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Async DNS resolver for ReactPHP",
"keywords": [
"async",
"dns",
"dns-resolver",
"reactphp"
],
"time": "2019-08-15 09:06:31"
},
{
"name": "react/event-loop",
"version": "v0.5.3",
"source": {
"type": "git",
"url": "https://github.com/reactphp/event-loop.git",
"reference": "228178a947de1f7cd9296d691878569628288c6f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/event-loop/zipball/228178a947de1f7cd9296d691878569628288c6f",
"reference": "228178a947de1f7cd9296d691878569628288c6f",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8.35 || ^5.7 || ^6.4"
},
"suggest": {
"ext-event": "~1.0 for ExtEventLoop",
"ext-pcntl": "For signal handling support when using the StreamSelectLoop"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\EventLoop\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.",
"keywords": [
"asynchronous",
"event-loop"
],
"time": "2018-07-09 13:51:04"
},
{
"name": "react/promise",
"version": "v2.7.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com"
}
],
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
"keywords": [
"promise",
"promises"
],
"time": "2019-01-07 21:25:54"
},
{
"name": "react/promise-timer",
"version": "v1.5.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise-timer.git",
"reference": "35fb910604fd86b00023fc5cda477c8074ad0abc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise-timer/zipball/35fb910604fd86b00023fc5cda477c8074ad0abc",
"reference": "35fb910604fd86b00023fc5cda477c8074ad0abc",
"shasum": ""
},
"require": {
"php": ">=5.3",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/promise": "^2.7.0 || ^1.2.1"
},
"require-dev": {
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Promise\\Timer\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@lueck.tv"
}
],
"description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.",
"homepage": "https://github.com/reactphp/promise-timer",
"keywords": [
"async",
"event-loop",
"promise",
"reactphp",
"timeout",
"timer"
],
"time": "2019-03-27 18:10:32"
},
{
"name": "react/socket",
"version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/socket.git",
"reference": "10f0629ec83ea0fa22597f348623f554227e3ca0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/socket/zipball/10f0629ec83ea0fa22597f348623f554227e3ca0",
"reference": "10f0629ec83ea0fa22597f348623f554227e3ca0",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.0",
"react/dns": "^1.0 || ^0.4.13",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/promise": "^2.6.0 || ^1.2.1",
"react/promise-timer": "^1.4.0",
"react/stream": "^1.1"
},
"require-dev": {
"clue/block-react": "^1.2",
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Socket\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP",
"keywords": [
"Connection",
"Socket",
"async",
"reactphp",
"stream"
],
"time": "2019-07-10 10:11:14"
},
{
"name": "react/stream",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/stream.git",
"reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/stream/zipball/50426855f7a77ddf43b9266c22320df5bf6c6ce6",
"reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.8",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5"
},
"require-dev": {
"clue/stream-filter": "~1.2",
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Stream\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP",
"keywords": [
"event-driven",
"io",
"non-blocking",
"pipe",
"reactphp",
"readable",
"stream",
"writable"
],
"time": "2019-01-01 16:15:09"
},
{
"name": "robrichards/xmlseclibs",
"version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/robrichards/xmlseclibs.git",
"reference": "0a53d3c3aa87564910cae4ed01416441d3ae0db5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/0a53d3c3aa87564910cae4ed01416441d3ae0db5",
"reference": "0a53d3c3aa87564910cae4ed01416441d3ae0db5",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"php": ">= 5.4"
},
"type": "library",
"autoload": {
"psr-4": {
"RobRichards\\XMLSecLibs\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "A PHP library for XML Security",
"homepage": "https://github.com/robrichards/xmlseclibs",
"keywords": [
"security",
"signature",
"xml",
"xmldsig"
],
"time": "2019-11-05 11:44:22"
},
{
"name": "sensio/distribution-bundle",
"version": "v5.0.25",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
"reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/80a38234bde8321fb92aa0b8c27978a272bb4baf",
"reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"sensiolabs/security-checker": "~5.0|~6.0",
"symfony/class-loader": "~2.3|~3.0",
"symfony/config": "~2.3|~3.0",
"symfony/dependency-injection": "~2.3|~3.0",
"symfony/filesystem": "~2.3|~3.0",
"symfony/http-kernel": "~2.3|~3.0",
"symfony/process": "~2.3|~3.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "5.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\DistributionBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Base bundle for Symfony Distributions",
"keywords": [
"configuration",
"distribution"
],
"time": "2019-06-18 15:43:58"
},
{
"name": "sensio/framework-extra-bundle",
"version": "v5.2.4",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
"reference": "1fdf591c4b388e62dbb2579de89c1560b33f865d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/1fdf591c4b388e62dbb2579de89c1560b33f865d",
"reference": "1fdf591c4b388e62dbb2579de89c1560b33f865d",
"shasum": ""
},
"require": {
"doctrine/common": "^2.2",
"symfony/config": "^3.3|^4.0",
"symfony/dependency-injection": "^3.3|^4.0",
"symfony/framework-bundle": "^3.4|^4.0",
"symfony/http-kernel": "^3.3|^4.0"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
"symfony/browser-kit": "^3.3|^4.0",
"symfony/dom-crawler": "^3.3|^4.0",
"symfony/expression-language": "^3.3|^4.0",
"symfony/finder": "^3.3|^4.0",
"symfony/monolog-bridge": "^3.0|^4.0",
"symfony/monolog-bundle": "^3.2",
"symfony/phpunit-bridge": "^3.4.19|^4.1.8",
"symfony/psr-http-message-bridge": "^0.3",
"symfony/security-bundle": "^3.3|^4.0",
"symfony/twig-bundle": "^3.3|^4.0",
"symfony/yaml": "^3.3|^4.0",
"twig/twig": "~1.12|~2.0",
"zendframework/zend-diactoros": "^1.3"
},
"suggest": {
"symfony/expression-language": "",
"symfony/psr-http-message-bridge": "To use the PSR-7 converters",
"symfony/security-bundle": ""
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "5.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\FrameworkExtraBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle provides a way to configure your controllers with annotations",
"keywords": [
"annotations",
"controllers"
],
"time": "2018-12-11 16:59:23"
},
{
"name": "sensiolabs/security-checker",
"version": "v5.0.3",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/security-checker.git",
"reference": "46be3f58adac13084497961e10eed9a7fb4d44d1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/46be3f58adac13084497961e10eed9a7fb4d44d1",
"reference": "46be3f58adac13084497961e10eed9a7fb4d44d1",
"shasum": ""
},
"require": {
"composer/ca-bundle": "^1.0",
"php": ">=5.5.9",
"symfony/console": "~2.7|~3.0|~4.0"
},
"bin": [
"security-checker"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.0-dev"
}
},
"autoload": {
"psr-4": {
"SensioLabs\\Security\\": "SensioLabs/Security"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien.potencier@gmail.com"
}
],
"description": "A security checker for your composer.lock",
"time": "2018-12-19 17:14:59"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950",
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"mockery/mockery": "~0.9.1",
"symfony/phpunit-bridge": "~3.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.4-dev"
}
},
"autoload": {
"files": [
"lib/swift_required.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Corbyn"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Swiftmailer, free feature-rich PHP mailer",
"homepage": "https://swiftmailer.symfony.com",
"keywords": [
"email",
"mail",
"mailer"
],
"time": "2018-07-31 09:26:32"
},
{
"name": "symfony/assetic-bundle",
"version": "v2.8.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/assetic-bundle.git",
"reference": "2e0a23a4874838e26de6f025e02fc63328921a4c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/assetic-bundle/zipball/2e0a23a4874838e26de6f025e02fc63328921a4c",
"reference": "2e0a23a4874838e26de6f025e02fc63328921a4c",
"shasum": ""
},
"require": {
"kriswallsmith/assetic": "~1.4",
"php": ">=5.3.0",
"symfony/console": "~2.3|~3.0",
"symfony/dependency-injection": "~2.3|~3.0",
"symfony/framework-bundle": "~2.3|~3.0",
"symfony/yaml": "~2.3|~3.0"
},
"conflict": {
"kriswallsmith/spork": "<=0.2",
"twig/twig": "<1.27"
},
"require-dev": {
"kriswallsmith/spork": "~0.3",
"patchwork/jsqueeze": "~1.0",
"symfony/class-loader": "~2.3|~3.0",
"symfony/css-selector": "~2.3|~3.0",
"symfony/dom-crawler": "~2.3|~3.0",
"symfony/phpunit-bridge": "~2.7|~3.0",
"symfony/twig-bundle": "~2.3|~3.0"
},
"suggest": {
"kriswallsmith/spork": "to be able to dump assets in parallel",
"symfony/twig-bundle": "to use the Twig integration"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.8-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\AsseticBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "kris.wallsmith@gmail.com",
"homepage": "http://kriswallsmith.net/"
}
],
"description": "Integrates Assetic into Symfony2",
"homepage": "https://github.com/symfony/AsseticBundle",
"keywords": [
"assets",
"compression",
"minification"
],
"time": "2017-07-14 07:26:46"
},
{
"name": "symfony/monolog-bundle",
"version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bundle.git",
"reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/dd80460fcfe1fa2050a7103ad818e9d0686ce6fd",
"reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd",
"shasum": ""
},
"require": {
"monolog/monolog": "~1.22 || ~2.0",
"php": ">=5.6",
"symfony/config": "~3.4 || ~4.0 || ^5.0",
"symfony/dependency-injection": "~3.4.10 || ^4.0.10 || ^5.0",
"symfony/http-kernel": "~3.4 || ~4.0 || ^5.0",
"symfony/monolog-bridge": "~3.4 || ~4.0 || ^5.0"
},
"require-dev": {
"symfony/console": "~3.4 || ~4.0 || ^5.0",
"symfony/phpunit-bridge": "^3.4.19 || ^4.0 || ^5.0",
"symfony/yaml": "~3.4 || ~4.0 || ^5.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MonologBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
}
],
"description": "Symfony MonologBundle",
"homepage": "http://symfony.com",
"keywords": [
"log",
"logging"
],
"time": "2019-11-13 13:11:14"
},
{
"name": "symfony/orm-pack",
"version": "v1.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/orm-pack.git",
"reference": "c57f5e05232ca40626eb9fa52a32bc8565e9231c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/orm-pack/zipball/c57f5e05232ca40626eb9fa52a32bc8565e9231c",
"reference": "c57f5e05232ca40626eb9fa52a32bc8565e9231c",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "^1.6.10|^2.0",
"doctrine/doctrine-migrations-bundle": "^1.3|^2.0",
"doctrine/orm": "^2.5.11",
"php": "^7.0"
},
"type": "symfony-pack",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A pack for the Doctrine ORM",
"time": "2019-10-18 05:41:09"
},
{
"name": "symfony/polyfill-apcu",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-apcu.git",
"reference": "71ce80635d5dcd67772b4dda00b86068595f64d5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/71ce80635d5dcd67772b4dda00b86068595f64d5",
"reference": "71ce80635d5dcd67772b4dda00b86068595f64d5",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Apcu\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"apcu",
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "550ebaac289296ce228a706d0867afc34687e3f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
"reference": "550ebaac289296ce228a706d0867afc34687e3f4",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "66810b9d6eb4af54d543867909d65ab9af654d7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/66810b9d6eb4af54d543867909d65ab9af654d7e",
"reference": "66810b9d6eb4af54d543867909d65ab9af654d7e",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/intl": "~2.3|~3.0|~4.0|~5.0"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's ICU-related data and classes",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"icu",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "0e3b212e96a51338639d8ce175c046d7729c3403"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/0e3b212e96a51338639d8ce175c046d7729c3403",
"reference": "0e3b212e96a51338639d8ce175c046d7729c3403",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-util": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php56\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-php70",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php70.git",
"reference": "54b4c428a0054e254223797d2713c31e08610831"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/54b4c428a0054e254223797d2713c31e08610831",
"reference": "54b4c428a0054e254223797d2713c31e08610831",
"shasum": ""
},
"require": {
"paragonie/random_compat": "~1.0|~2.0|~9.99",
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php70\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/polyfill-util",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
"reference": "4317de1386717b4c22caed7725350a8887ab205c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4317de1386717b4c22caed7725350a8887ab205c",
"reference": "4317de1386717b4c22caed7725350a8887ab205c",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Util\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony utilities for portability of PHP codes",
"homepage": "https://symfony.com",
"keywords": [
"compat",
"compatibility",
"polyfill",
"shim"
],
"time": "2019-08-06 08:03:45"
},
{
"name": "symfony/swiftmailer-bundle",
"version": "v2.6.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/swiftmailer-bundle.git",
"reference": "c4808f5169efc05567be983909d00f00521c53ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec",
"reference": "c4808f5169efc05567be983909d00f00521c53ec",
"shasum": ""
},
"require": {
"php": ">=5.3.2",
"swiftmailer/swiftmailer": "~4.2|~5.0",
"symfony/config": "~2.7|~3.0",
"symfony/dependency-injection": "~2.7|~3.0",
"symfony/http-kernel": "~2.7|~3.0"
},
"require-dev": {
"symfony/console": "~2.7|~3.0",
"symfony/framework-bundle": "~2.7|~3.0",
"symfony/phpunit-bridge": "~3.3@dev",
"symfony/yaml": "~2.7|~3.0"
},
"suggest": {
"psr/log": "Allows logging"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\SwiftmailerBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony SwiftmailerBundle",
"homepage": "http://symfony.com",
"time": "2017-10-19 01:06:41"
},
{
"name": "symfony/symfony",
"version": "v3.4.35",
"source": {
"type": "git",
"url": "https://github.com/symfony/symfony.git",
"reference": "2adc85d49cbe14e346068fa7e9c2e1f08ab31de6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/symfony/zipball/2adc85d49cbe14e346068fa7e9c2e1f08ab31de6",
"reference": "2adc85d49cbe14e346068fa7e9c2e1f08ab31de6",
"shasum": ""
},
"require": {
"doctrine/common": "~2.4",
"ext-xml": "*",
"fig/link-util": "^1.0",
"php": "^5.5.9|>=7.0.8",
"psr/cache": "~1.0",
"psr/container": "^1.0",
"psr/link": "^1.0",
"psr/log": "~1.0",
"psr/simple-cache": "^1.0",
"symfony/polyfill-apcu": "~1.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "~1.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.6",
"twig/twig": "^1.41|^2.10"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
"phpdocumentor/type-resolver": "<0.3.0",
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"provide": {
"psr/cache-implementation": "1.0",
"psr/container-implementation": "1.0",
"psr/log-implementation": "1.0",
"psr/simple-cache-implementation": "1.0"
},
"replace": {
"symfony/asset": "self.version",
"symfony/browser-kit": "self.version",
"symfony/cache": "self.version",
"symfony/class-loader": "self.version",
"symfony/config": "self.version",
"symfony/console": "self.version",
"symfony/css-selector": "self.version",
"symfony/debug": "self.version",
"symfony/debug-bundle": "self.version",
"symfony/dependency-injection": "self.version",
"symfony/doctrine-bridge": "self.version",
"symfony/dom-crawler": "self.version",
"symfony/dotenv": "self.version",
"symfony/event-dispatcher": "self.version",
"symfony/expression-language": "self.version",
"symfony/filesystem": "self.version",
"symfony/finder": "self.version",
"symfony/form": "self.version",
"symfony/framework-bundle": "self.version",
"symfony/http-foundation": "self.version",
"symfony/http-kernel": "self.version",
"symfony/inflector": "self.version",
"symfony/intl": "self.version",
"symfony/ldap": "self.version",
"symfony/lock": "self.version",
"symfony/monolog-bridge": "self.version",
"symfony/options-resolver": "self.version",
"symfony/process": "self.version",
"symfony/property-access": "self.version",
"symfony/property-info": "self.version",
"symfony/proxy-manager-bridge": "self.version",
"symfony/routing": "self.version",
"symfony/security": "self.version",
"symfony/security-bundle": "self.version",
"symfony/security-core": "self.version",
"symfony/security-csrf": "self.version",
"symfony/security-guard": "self.version",
"symfony/security-http": "self.version",
"symfony/serializer": "self.version",
"symfony/stopwatch": "self.version",
"symfony/templating": "self.version",
"symfony/translation": "self.version",
"symfony/twig-bridge": "self.version",
"symfony/twig-bundle": "self.version",
"symfony/validator": "self.version",
"symfony/var-dumper": "self.version",
"symfony/web-link": "self.version",
"symfony/web-profiler-bundle": "self.version",
"symfony/web-server-bundle": "self.version",
"symfony/workflow": "self.version",
"symfony/yaml": "self.version"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/annotations": "~1.0",
"doctrine/cache": "~1.6",
"doctrine/data-fixtures": "1.0.*",
"doctrine/dbal": "~2.4",
"doctrine/doctrine-bundle": "~1.4",
"doctrine/orm": "~2.4,>=2.4.5",
"egulias/email-validator": "~1.2,>=1.2.8|~2.0",
"monolog/monolog": "~1.11",
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0",
"predis/predis": "~1.0",
"symfony/phpunit-bridge": "^3.4.31|^4.3.4|~5.0",
"symfony/security-acl": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
"Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
"Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
"Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
"Symfony\\Bundle\\": "src/Symfony/Bundle/",
"Symfony\\Component\\": "src/Symfony/Component/"
},
"classmap": [
"src/Symfony/Component/Intl/Resources/stubs"
],
"exclude-from-classmap": [
"**/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "The Symfony PHP framework",
"homepage": "https://symfony.com",
"keywords": [
"framework"
],
"time": "2019-11-13 08:45:05"
},
{
"name": "tetranz/select2entity-bundle",
"version": "v2.10.1",
"source": {
"type": "git",
"url": "https://github.com/tetranz/select2entity-bundle.git",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"shasum": ""
},
"require": {
"doctrine/orm": ">=2.4",
"php": ">=5.4.0",
"twig/twig": ">=2.9"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": []
},
"autoload": {
"psr-4": {
"Tetranz\\Select2EntityBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ross Keatinge",
"email": "tetranz@gmail.com"
}
],
"description": "A Symfony bundle that integrates Select2 as a drop-in replacement for a standard entity field on a Symfony form.",
"keywords": [
"autocomplete",
"select2",
"symfony",
"typeahead"
],
"time": "2019-07-14 02:30:34"
},
{
"name": "thecsea/simple-caldav-client",
"version": "v0.1.10",
"source": {
"type": "git",
"url": "https://github.com/thecsea/simpleCalDAV.git",
"reference": "dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thecsea/simpleCalDAV/zipball/dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9",
"reference": "dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"it\\thecsea\\simple_caldav_client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0"
],
"authors": [
{
"name": "claudio cardinale",
"email": "cardi@thecsea.it",
"homepage": "http://thecsea.it"
}
],
"description": "A simple and complete php caldav client",
"homepage": "http://www.thecsea.it",
"keywords": [
"CalDAV",
"Simple",
"client"
],
"time": "2019-04-25 19:55:16"
},
{
"name": "twig/twig",
"version": "v2.12.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed",
"reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed",
"shasum": ""
},
"require": {
"php": "^7.0",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"psr/container": "^1.0",
"symfony/debug": "^3.4|^4.2",
"symfony/phpunit-bridge": "^4.4@dev|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.12-dev"
}
},
"autoload": {
"psr-0": {
"Twig_": "lib/"
},
"psr-4": {
"Twig\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com",
"homepage": "http://fabien.potencier.org",
"role": "Lead Developer"
},
{
"name": "Twig Team",
"homepage": "https://twig.symfony.com/contributors",
"role": "Contributors"
},
{
"name": "Armin Ronacher",
"email": "armin.ronacher@active-4.com",
"role": "Project Founder"
}
],
"description": "Twig, the flexible, fast, and secure template language for PHP",
"homepage": "https://twig.symfony.com",
"keywords": [
"templating"
],
"time": "2019-11-11 16:52:09"
},
{
"name": "zendframework/zend-code",
"version": "2.6.3",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-code.git",
"reference": "95033f061b083e16cdee60530ec260d7d628b887"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-code/zipball/95033f061b083e16cdee60530ec260d7d628b887",
"reference": "95033f061b083e16cdee60530ec260d7d628b887",
"shasum": ""
},
"require": {
"php": "^5.5 || 7.0.0 - 7.0.4 || ^7.0.6",
"zendframework/zend-eventmanager": "^2.6 || ^3.0"
},
"require-dev": {
"doctrine/annotations": "~1.0",
"fabpot/php-cs-fixer": "1.7.*",
"phpunit/phpunit": "^4.8.21",
"zendframework/zend-stdlib": "^2.7 || ^3.0"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
"zendframework/zend-stdlib": "Zend\\Stdlib component"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev",
"dev-develop": "2.7-dev"
}
},
"autoload": {
"psr-4": {
"Zend\\Code\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "provides facilities to generate arbitrary code using an object oriented interface",
"homepage": "https://github.com/zendframework/zend-code",
"keywords": [
"code",
"zf2"
],
"time": "2016-04-20 17:26:42"
},
{
"name": "zendframework/zend-eventmanager",
"version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-eventmanager.git",
"reference": "a5e2583a211f73604691586b8406ff7296a946dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd",
"reference": "a5e2583a211f73604691586b8406ff7296a946dd",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
},
"require-dev": {
"athletic/athletic": "^0.1",
"container-interop/container-interop": "^1.1.0",
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
"zendframework/zend-coding-standard": "~1.0.0",
"zendframework/zend-stdlib": "^2.7.3 || ^3.0"
},
"suggest": {
"container-interop/container-interop": "^1.1.0, to use the lazy listeners feature",
"zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.2-dev",
"dev-develop": "3.3-dev"
}
},
"autoload": {
"psr-4": {
"Zend\\EventManager\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Trigger and listen to events within a PHP application",
"homepage": "https://github.com/zendframework/zend-eventmanager",
"keywords": [
"event",
"eventmanager",
"events",
"zf2"
],
"time": "2018-04-25 15:33:34"
}
],
"packages-dev": [
{
"name": "nikic/php-parser",
"version": "v4.3.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc",
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=7.0"
},
"require-dev": {
"ircmaxell/php-yacc": "0.0.5",
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
},
"bin": [
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.3-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Nikita Popov"
}
],
"description": "A PHP parser written in PHP",
"keywords": [
"parser",
"php"
],
"time": "2019-11-08 13:50:10"
},
{
"name": "sensio/generator-bundle",
"version": "v3.1.7",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
"reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65",
"reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65",
"shasum": ""
},
"require": {
"symfony/console": "~2.7|~3.0",
"symfony/framework-bundle": "~2.7|~3.0",
"symfony/process": "~2.7|~3.0",
"symfony/yaml": "~2.7|~3.0",
"twig/twig": "^1.28.2|^2.0"
},
"require-dev": {
"doctrine/orm": "~2.4",
"symfony/doctrine-bridge": "~2.7|~3.0",
"symfony/filesystem": "~2.7|~3.0",
"symfony/phpunit-bridge": "^3.3"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\GeneratorBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle generates code for you",
"time": "2017-12-07 15:36:41"
},
{
"name": "symfony/maker-bundle",
"version": "v1.14.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
"reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c864e7f9b8d1e1f5f60acc3beda11299f637aded",
"reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded",
"shasum": ""
},
"require": {
"doctrine/inflector": "^1.2",
"nikic/php-parser": "^4.0",
"php": "^7.0.8",
"symfony/config": "^3.4|^4.0|^5.0",
"symfony/console": "^3.4|^4.0|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0",
"symfony/filesystem": "^3.4|^4.0|^5.0",
"symfony/finder": "^3.4|^4.0|^5.0",
"symfony/framework-bundle": "^3.4|^4.0|^5.0",
"symfony/http-kernel": "^3.4|^4.0|^5.0"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.8|^2.0",
"doctrine/orm": "^2.3",
"friendsofphp/php-cs-fixer": "^2.8",
"friendsoftwig/twigcs": "^3.1.2",
"symfony/http-client": "^4.3|^5.0",
"symfony/phpunit-bridge": "^4.3|^5.0",
"symfony/process": "^3.4|^4.0|^5.0",
"symfony/security-core": "^3.4|^4.0|^5.0",
"symfony/yaml": "^3.4|^4.0|^5.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MakerBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.",
"homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html",
"keywords": [
"code generator",
"generator",
"scaffold",
"scaffolding"
],
"time": "2019-11-07 00:56:03"
},
{
"name": "symfony/phpunit-bridge",
"version": "v3.4.35",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7",
"reference": "cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"conflict": {
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"suggest": {
"symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
},
"bin": [
"bin/simple-phpunit"
],
"type": "symfony-bridge",
"extra": {
"branch-alias": {
"dev-master": "3.4-dev"
},
"thanks": {
"name": "phpunit/phpunit",
"url": "https://github.com/sebastianbergmann/phpunit"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Bridge\\PhpUnit\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"time": "2019-09-30 20:33:19"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=7"
},
"platform-dev": [],
"platform-overrides": {
"php": "7.0.30"
}
}

View File

@ -0,0 +1,87 @@
{
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
"autoload-dev": {
"psr-4": { "Tests\\": "tests/" },
"files": [ "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" ]
},
"require": {
"php": ">=7",
"debril/rss-atom-bundle": "^4.0",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"doctrine/doctrine-fixtures-bundle": "^2.3",
"doctrine/doctrine-migrations-bundle": "^1.2",
"doctrine/orm": "^2.5",
"egeloen/ckeditor-bundle": "^6.0",
"gos/web-socket-bundle": "1.*",
"gregwar/captcha-bundle": "^2.0",
"incenteev/composer-parameter-handler": "^2.0",
"jasig/phpcas": "~1.3",
"lightsaml/sp-bundle": "^1.2",
"oneup/uploader-bundle": "^1.7",
"ramsey/uuid": "^3.7",
"sensio/distribution-bundle": "^5.0.19",
"sensio/framework-extra-bundle": "^5.0.0",
"symfony/assetic-bundle": "^2.8",
"symfony/ldap": "^3.4",
"symfony/monolog-bundle": "3.4.*",
"symfony/orm-pack": "^1.0",
"symfony/polyfill-apcu": "^1.0",
"symfony/swiftmailer-bundle": "^2.6.4",
"symfony/symfony": "3.4.*",
"tetranz/select2entity-bundle": "2.*",
"thecsea/simple-caldav-client": "^0.1.10",
"mashape/unirest-php": "3.*",
"twig/twig": "^1.0||^2.0"
},
"require-dev": {
"sensio/generator-bundle": "^3.0",
"symfony/maker-bundle": "^1.5",
"symfony/phpunit-bridge": "^3.0"
},
"scripts": {
"symfony-scripts": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
],
"post-install-cmd": [
"@symfony-scripts"
],
"post-update-cmd": [
"@symfony-scripts"
]
},
"config": {
"platform": {
"php": "7.2"
},
"sort-packages": true
},
"extra": {
"symfony-app-dir": "app",
"symfony-bin-dir": "bin",
"symfony-var-dir": "var",
"symfony-web-dir": "web",
"symfony-tests-dir": "tests",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"
},
"branch-alias": {
"dev-master": "3.4-dev"
}
}
}

View File

@ -0,0 +1,5674 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "83a9e2bee30ea6c8c4a1e3622b0f12dc",
"packages": [
{
"name": "cboden/ratchet",
"version": "v0.4.1",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/Ratchet.git",
"reference": "0d31f3a8ad4795fd48397712709e55cd07f51360"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/Ratchet/zipball/0d31f3a8ad4795fd48397712709e55cd07f51360",
"reference": "0d31f3a8ad4795fd48397712709e55cd07f51360",
"shasum": ""
},
"require": {
"guzzlehttp/psr7": "^1.0",
"php": ">=5.4.2",
"ratchet/rfc6455": "^0.2",
"react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5",
"symfony/http-foundation": "^2.6|^3.0|^4.0",
"symfony/routing": "^2.6|^3.0|^4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8"
},
"type": "library",
"autoload": {
"psr-4": {
"Ratchet\\": "src/Ratchet"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"role": "Developer"
}
],
"description": "PHP WebSocket library",
"homepage": "http://socketo.me",
"keywords": [
"Ratchet",
"WebSockets",
"server",
"sockets",
"websocket"
],
"time": "2017-12-12T00:49:31+00:00"
},
{
"name": "debril/feed-io",
"version": "v4.4.1",
"source": {
"type": "git",
"url": "https://github.com/alexdebril/feed-io.git",
"reference": "bba403f15f65f274713c61e765dd8bad79c96a0a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alexdebril/feed-io/zipball/bba403f15f65f274713c61e765dd8bad79c96a0a",
"reference": "bba403f15f65f274713c61e765dd8bad79c96a0a",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "~6.2",
"php": ">=7.1",
"psr/log": "~1.0",
"symfony/console": "~3.4|~4.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.4",
"monolog/monolog": "1.*",
"phpunit/phpunit": "~7.5.0"
},
"suggest": {
"monolog/monolog": "Allows to handle logs"
},
"bin": [
"bin/feedio"
],
"type": "library",
"autoload": {
"psr-4": {
"FeedIo\\": "src/FeedIo"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Alexandre Debril",
"email": "alex.debril@gmail.com"
}
],
"description": "PHP library built to consume and serve JSONFeed / RSS / Atom feeds",
"homepage": "https://feed-io.net",
"keywords": [
"atom",
"cli",
"client",
"feed",
"jsonfeed",
"news",
"rss"
],
"time": "2019-11-13T10:31:19+00:00"
},
{
"name": "debril/rss-atom-bundle",
"version": "v4.3.0",
"target-dir": "Debril/RssAtomBundle",
"source": {
"type": "git",
"url": "https://github.com/alexdebril/rss-atom-bundle.git",
"reference": "5c0ef9b1f6a9ca058904c2adadb94cd306df9278"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alexdebril/rss-atom-bundle/zipball/5c0ef9b1f6a9ca058904c2adadb94cd306df9278",
"reference": "5c0ef9b1f6a9ca058904c2adadb94cd306df9278",
"shasum": ""
},
"require": {
"debril/feed-io": "~3.0|~4.0",
"php": ">=7.1",
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4|~4.0",
"symfony/http-foundation": "~3.4|~4.0",
"symfony/http-kernel": "~3.4|~4.0"
},
"require-dev": {
"doctrine/common": "~2.3",
"doctrine/doctrine-bundle": "~1.2",
"phpunit/phpunit": "~7.0",
"symfony/browser-kit": ">3.0",
"symfony/finder": ">3.0",
"symfony/validator": ">3.0",
"symfony/yaml": "^4.0"
},
"suggest": {
"doctrine/doctrine-bundle": "allow to provide feeds' content from database"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"Debril\\RssAtomBundle": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "RSS / Atom and JSONFeed support for Symfony",
"homepage": "http://debril.org/category/rss-atom-bundle/",
"keywords": [
"Syndication",
"atom",
"feed",
"jsonfeed",
"rss"
],
"time": "2019-08-09T13:22:15+00:00"
},
{
"name": "doctrine/annotations",
"version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
"reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc",
"reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc",
"shasum": ""
},
"require": {
"doctrine/lexer": "1.*",
"php": "^7.1"
},
"require-dev": {
"doctrine/cache": "1.*",
"phpunit/phpunit": "^7.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Docblock Annotations Parser",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"annotations",
"docblock",
"parser"
],
"time": "2019-10-01T18:55:10+00:00"
},
{
"name": "doctrine/cache",
"version": "1.9.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "89a5c76c39c292f7798f964ab3c836c3f8192a55"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/89a5c76c39c292f7798f964ab3c836c3f8192a55",
"reference": "89a5c76c39c292f7798f964ab3c836c3f8192a55",
"shasum": ""
},
"require": {
"php": "~7.1"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/coding-standard": "^6.0",
"mongodb/mongodb": "^1.1",
"phpunit/phpunit": "^7.0",
"predis/predis": "~1.0"
},
"suggest": {
"alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
"homepage": "https://www.doctrine-project.org/projects/cache.html",
"keywords": [
"abstraction",
"apcu",
"cache",
"caching",
"couchdb",
"memcached",
"php",
"redis",
"riak",
"xcache"
],
"time": "2019-11-15T14:31:57+00:00"
},
{
"name": "doctrine/collections",
"version": "1.6.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
"reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7",
"reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7",
"shasum": ""
},
"require": {
"php": "^7.1.3"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan-shim": "^0.9.2",
"phpunit/phpunit": "^7.0",
"vimeo/psalm": "^3.2.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.",
"homepage": "https://www.doctrine-project.org/projects/collections.html",
"keywords": [
"array",
"collections",
"iterators",
"php"
],
"time": "2019-11-13T13:07:11+00:00"
},
{
"name": "doctrine/common",
"version": "v2.11.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
"reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/common/zipball/b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff",
"reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/cache": "^1.0",
"doctrine/collections": "^1.0",
"doctrine/event-manager": "^1.0",
"doctrine/inflector": "^1.0",
"doctrine/lexer": "^1.0",
"doctrine/persistence": "^1.1",
"doctrine/reflection": "^1.0",
"php": "^7.1"
},
"require-dev": {
"doctrine/coding-standard": "^1.0",
"phpstan/phpstan": "^0.11",
"phpstan/phpstan-phpunit": "^0.11",
"phpunit/phpunit": "^7.0",
"squizlabs/php_codesniffer": "^3.0",
"symfony/phpunit-bridge": "^4.0.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.11.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.",
"homepage": "https://www.doctrine-project.org/projects/common.html",
"keywords": [
"common",
"doctrine",
"php"
],
"time": "2019-09-10T10:10:14+00:00"
},
{
"name": "doctrine/data-fixtures",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/data-fixtures.git",
"reference": "608a35a3b5bcc4214d116603095f8b0c51091592"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/608a35a3b5bcc4214d116603095f8b0c51091592",
"reference": "608a35a3b5bcc4214d116603095f8b0c51091592",
"shasum": ""
},
"require": {
"doctrine/common": "^2.11",
"php": "^7.2"
},
"conflict": {
"doctrine/phpcr-odm": "<1.3.0"
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/coding-standard": "^6.0",
"doctrine/dbal": "^2.5.4",
"doctrine/mongodb-odm": "^1.3.0",
"doctrine/orm": "^2.5.4",
"phpunit/phpunit": "^7.0"
},
"suggest": {
"alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7",
"doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
"doctrine/orm": "For loading ORM fixtures",
"doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Data Fixtures for all Doctrine Object Managers",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database"
],
"time": "2019-10-30T20:03:18+00:00"
},
{
"name": "doctrine/dbal",
"version": "v2.10.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
"reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
"shasum": ""
},
"require": {
"doctrine/cache": "^1.0",
"doctrine/event-manager": "^1.0",
"ext-pdo": "*",
"php": "^7.2"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"jetbrains/phpstorm-stubs": "^2019.1",
"phpstan/phpstan": "^0.11.3",
"phpunit/phpunit": "^8.4.1",
"symfony/console": "^2.0.5|^3.0|^4.0|^5.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
},
"bin": [
"bin/doctrine-dbal"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.10.x-dev",
"dev-develop": "3.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
"homepage": "https://www.doctrine-project.org/projects/dbal.html",
"keywords": [
"abstraction",
"database",
"db2",
"dbal",
"mariadb",
"mssql",
"mysql",
"oci8",
"oracle",
"pdo",
"pgsql",
"postgresql",
"queryobject",
"sasql",
"sql",
"sqlanywhere",
"sqlite",
"sqlserver",
"sqlsrv"
],
"time": "2019-11-03T16:50:43+00:00"
},
{
"name": "doctrine/doctrine-bundle",
"version": "1.12.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git",
"reference": "a374f3bc54fe7c23ddb722ef6b9ddd2d9dcb9115"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/a374f3bc54fe7c23ddb722ef6b9ddd2d9dcb9115",
"reference": "a374f3bc54fe7c23ddb722ef6b9ddd2d9dcb9115",
"shasum": ""
},
"require": {
"doctrine/dbal": "^2.5.12",
"doctrine/doctrine-cache-bundle": "~1.2",
"jdorn/sql-formatter": "^1.2.16",
"php": "^7.1",
"symfony/config": "^3.4.30|^4.3.3",
"symfony/console": "^3.4.30|^4.3.3",
"symfony/dependency-injection": "^3.4.30|^4.3.3",
"symfony/doctrine-bridge": "^3.4.30|^4.3.3",
"symfony/framework-bundle": "^3.4.30|^4.3.3"
},
"conflict": {
"doctrine/orm": "<2.6",
"twig/twig": "<1.34|>=2.0,<2.4"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"doctrine/orm": "^2.6",
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^7.5",
"symfony/cache": "^3.4.30|^4.3.3",
"symfony/phpunit-bridge": "^4.2",
"symfony/property-info": "^3.4.30|^4.3.3",
"symfony/twig-bridge": "^3.4|^4.1",
"symfony/validator": "^3.4.30|^4.3.3",
"symfony/web-profiler-bundle": "^3.4.30|^4.3.3",
"symfony/yaml": "^3.4.30|^4.3.3",
"twig/twig": "^1.34|^2.12"
},
"suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
"symfony/web-profiler-bundle": "To use the data collector."
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.12.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org/"
}
],
"description": "Symfony DoctrineBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database",
"dbal",
"orm",
"persistence"
],
"time": "2019-11-19T11:42:20+00:00"
},
{
"name": "doctrine/doctrine-cache-bundle",
"version": "1.3.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineCacheBundle.git",
"reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927",
"reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927",
"shasum": ""
},
"require": {
"doctrine/cache": "^1.4.2",
"doctrine/inflector": "~1.0",
"php": ">=5.3.2",
"symfony/doctrine-bridge": "~2.7|~3.3|~4.0"
},
"require-dev": {
"instaclick/coding-standard": "~1.1",
"instaclick/object-calisthenics-sniffs": "dev-master",
"instaclick/symfony2-coding-standard": "dev-remaster",
"phpunit/phpunit": "~4.8.36|~5.6|~6.5|~7.0",
"predis/predis": "~0.8",
"satooshi/php-coveralls": "^1.0",
"squizlabs/php_codesniffer": "~1.5",
"symfony/console": "~2.7|~3.3|~4.0",
"symfony/finder": "~2.7|~3.3|~4.0",
"symfony/framework-bundle": "~2.7|~3.3|~4.0",
"symfony/phpunit-bridge": "~2.7|~3.3|~4.0",
"symfony/security-acl": "~2.7|~3.3",
"symfony/validator": "~2.7|~3.3|~4.0",
"symfony/yaml": "~2.7|~3.3|~4.0"
},
"suggest": {
"symfony/security-acl": "For using this bundle to cache ACLs"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineCacheBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Fabio B. Silva",
"email": "fabio.bat.silva@gmail.com"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@hotmail.com"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org/"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony Bundle for Doctrine Cache",
"homepage": "https://www.doctrine-project.org",
"keywords": [
"cache",
"caching"
],
"time": "2018-11-09T06:25:35+00:00"
},
{
"name": "doctrine/doctrine-fixtures-bundle",
"version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
"reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273",
"reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273",
"shasum": ""
},
"require": {
"doctrine/data-fixtures": "~1.0",
"doctrine/doctrine-bundle": "~1.0",
"php": ">=5.3.2",
"symfony/doctrine-bridge": "~2.7|~3.0|~4.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\FixturesBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineFixturesBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"Fixture",
"persistence"
],
"time": "2017-10-30T19:26:42+00:00"
},
{
"name": "doctrine/doctrine-migrations-bundle",
"version": "v1.3.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineMigrationsBundle.git",
"reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce",
"reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "~1.0",
"doctrine/migrations": "^1.1",
"php": ">=5.4.0",
"symfony/framework-bundle": "~2.7|~3.3|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^7.4"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\MigrationsBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineMigrationsBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"dbal",
"migrations",
"schema"
],
"time": "2018-12-03T11:55:33+00:00"
},
{
"name": "doctrine/event-manager",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
"reference": "629572819973f13486371cb611386eb17851e85c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
"reference": "629572819973f13486371cb611386eb17851e85c",
"shasum": ""
},
"require": {
"php": "^7.1"
},
"conflict": {
"doctrine/common": "<2.9@dev"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
"homepage": "https://www.doctrine-project.org/projects/event-manager.html",
"keywords": [
"event",
"event dispatcher",
"event manager",
"event system",
"events"
],
"time": "2019-11-10T09:48:07+00:00"
},
{
"name": "doctrine/inflector",
"version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
"reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
"shasum": ""
},
"require": {
"php": "^7.1"
},
"require-dev": {
"phpunit/phpunit": "^6.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Common String Manipulations with regard to casing and singular/plural rules.",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"inflection",
"pluralize",
"singularize",
"string"
],
"time": "2019-10-30T19:59:35+00:00"
},
{
"name": "doctrine/instantiator",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
"reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
"reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
"shasum": ""
},
"require": {
"php": "^7.1"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"ext-pdo": "*",
"ext-phar": "*",
"phpbench/phpbench": "^0.13",
"phpstan/phpstan-phpunit": "^0.11",
"phpstan/phpstan-shim": "^0.11",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "http://ocramius.github.com/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
"homepage": "https://www.doctrine-project.org/projects/instantiator.html",
"keywords": [
"constructor",
"instantiate"
],
"time": "2019-10-21T16:45:58+00:00"
},
{
"name": "doctrine/lexer",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
"reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6",
"reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6",
"shasum": ""
},
"require": {
"php": "^7.2"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan": "^0.11.8",
"phpunit/phpunit": "^8.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
"homepage": "https://www.doctrine-project.org/projects/lexer.html",
"keywords": [
"annotations",
"docblock",
"lexer",
"parser",
"php"
],
"time": "2019-10-30T14:39:59+00:00"
},
{
"name": "doctrine/migrations",
"version": "v1.8.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/migrations.git",
"reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6",
"reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6",
"shasum": ""
},
"require": {
"doctrine/dbal": "~2.6",
"ocramius/proxy-manager": "^1.0|^2.0",
"php": "^7.1",
"symfony/console": "~3.3|^4.0"
},
"require-dev": {
"doctrine/coding-standard": "^1.0",
"doctrine/orm": "~2.5",
"jdorn/sql-formatter": "~1.1",
"mikey179/vfsstream": "^1.6",
"phpunit/phpunit": "~7.0",
"squizlabs/php_codesniffer": "^3.0",
"symfony/yaml": "~3.3|^4.0"
},
"suggest": {
"jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.",
"symfony/yaml": "Allows the use of yaml for migration configuration files."
},
"bin": [
"bin/doctrine-migrations"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "v1.8.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations",
"Doctrine\\Migrations\\": "lib/Doctrine/Migrations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Michael Simonson",
"email": "contact@mikesimonson.com"
}
],
"description": "Database Schema migrations using Doctrine DBAL",
"homepage": "https://www.doctrine-project.org/projects/migrations.html",
"keywords": [
"database",
"migrations"
],
"time": "2018-06-06T21:00:30+00:00"
},
{
"name": "doctrine/orm",
"version": "v2.7.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
"reference": "4d763ca4c925f647b248b9fa01b5f47aa3685d62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/orm/zipball/4d763ca4c925f647b248b9fa01b5f47aa3685d62",
"reference": "4d763ca4c925f647b248b9fa01b5f47aa3685d62",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.8",
"doctrine/cache": "^1.9.1",
"doctrine/collections": "^1.5",
"doctrine/common": "^2.11",
"doctrine/dbal": "^2.9.3",
"doctrine/event-manager": "^1.1",
"doctrine/instantiator": "^1.3",
"doctrine/persistence": "^1.2",
"ext-pdo": "*",
"php": "^7.1",
"symfony/console": "^3.0|^4.0|^5.0"
},
"require-dev": {
"doctrine/coding-standard": "^5.0",
"phpunit/phpunit": "^7.5",
"symfony/yaml": "^3.4|^4.0|^5.0"
},
"suggest": {
"symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
},
"bin": [
"bin/doctrine"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.7.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\ORM\\": "lib/Doctrine/ORM"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "Object-Relational-Mapper for PHP",
"homepage": "https://www.doctrine-project.org/projects/orm.html",
"keywords": [
"database",
"orm"
],
"time": "2019-11-19T08:38:05+00:00"
},
{
"name": "doctrine/persistence",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
"reference": "43526ae63312942e5316100bb3ed589ba1aba491"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/persistence/zipball/43526ae63312942e5316100bb3ed589ba1aba491",
"reference": "43526ae63312942e5316100bb3ed589ba1aba491",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/cache": "^1.0",
"doctrine/collections": "^1.0",
"doctrine/event-manager": "^1.0",
"doctrine/reflection": "^1.0",
"php": "^7.1"
},
"conflict": {
"doctrine/common": "<2.10@dev"
},
"require-dev": {
"doctrine/coding-standard": "^5.0",
"phpstan/phpstan": "^0.8",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.",
"homepage": "https://doctrine-project.org/projects/persistence.html",
"keywords": [
"mapper",
"object",
"odm",
"orm",
"persistence"
],
"time": "2019-04-23T12:39:21+00:00"
},
{
"name": "doctrine/reflection",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/reflection.git",
"reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6",
"reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"ext-tokenizer": "*",
"php": "^7.1"
},
"require-dev": {
"doctrine/coding-standard": "^4.0",
"doctrine/common": "^2.8",
"phpstan/phpstan": "^0.9.2",
"phpstan/phpstan-phpunit": "^0.9.4",
"phpunit/phpunit": "^7.0",
"squizlabs/php_codesniffer": "^3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "Doctrine Reflection component",
"homepage": "https://www.doctrine-project.org/projects/reflection.html",
"keywords": [
"reflection"
],
"time": "2018-06-14T14:45:07+00:00"
},
{
"name": "egeloen/ckeditor-bundle",
"version": "6.0.1",
"source": {
"type": "git",
"url": "https://github.com/egeloen/IvoryCKEditorBundle.git",
"reference": "9c9926918d3ae4b4d89ca2db578766ab9829ee7a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egeloen/IvoryCKEditorBundle/zipball/9c9926918d3ae4b4d89ca2db578766ab9829ee7a",
"reference": "9c9926918d3ae4b4d89ca2db578766ab9829ee7a",
"shasum": ""
},
"require": {
"egeloen/json-builder": "^2.0|^3.0",
"php": "^5.6|^7.0",
"symfony/dependency-injection": "^2.7|^3.0",
"symfony/form": "^2.7|^3.0",
"symfony/framework-bundle": "^2.7|^3.0"
},
"require-dev": {
"composer/composer": "^1.0",
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^5.0|^6.0",
"sensio/distribution-bundle": "^3.0.12|^4.0|^5.0",
"symfony/asset": "^2.7|^3.0",
"symfony/console": "^2.7|^3.0",
"symfony/phpunit-bridge": "^2.7|^3.0",
"symfony/templating": "^2.7|^3.0",
"symfony/twig-bridge": "^2.7|^3.0",
"symfony/yaml": "^2.7|^3.0",
"twig/twig": "^1.12"
},
"suggest": {
"egeloen/form-extra-bundle": "Allows to load CKEditor asynchronously",
"sensio/distribution-bundle": "Allows to install CKEditor via a script handler",
"symfony/asset": "Allows to rewrite/version assets",
"symfony/templating": "Allows to use PHP templates",
"symfony/twig-bridge": "Allows to use Twig templates",
"twig/twig": "Allows to use Twig templates"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "6.0-dev"
}
},
"autoload": {
"psr-4": {
"Ivory\\CKEditorBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
}
],
"description": "Provides a CKEditor integration for your Symfony2 Project.",
"keywords": [
"CKEditor"
],
"time": "2017-08-18T08:19:45+00:00"
},
{
"name": "egeloen/json-builder",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/egeloen/ivory-json-builder.git",
"reference": "3e70bc681891d8aca88dd72164caea659739f284"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egeloen/ivory-json-builder/zipball/3e70bc681891d8aca88dd72164caea659739f284",
"reference": "3e70bc681891d8aca88dd72164caea659739f284",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^5.6|^7.0",
"symfony/property-access": "^2.7|^3.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^5.0",
"symfony/phpunit-bridge": "^2.7|^3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"Ivory\\JsonBuilder\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
}
],
"description": "JSON builder with escaping control for PHP 5.6+",
"keywords": [
"Escape",
"builder",
"json"
],
"time": "2017-02-27T20:18:54+00:00"
},
{
"name": "evenement/evenement",
"version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/igorw/evenement.git",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
},
"type": "library",
"autoload": {
"psr-0": {
"Evenement": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Igor Wiedler",
"email": "igor@wiedler.ch"
}
],
"description": "Événement is a very simple event dispatching library for PHP",
"keywords": [
"event-dispatcher",
"event-emitter"
],
"time": "2017-07-23T21:35:13+00:00"
},
{
"name": "fig/link-util",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link-util.git",
"reference": "1a07821801a148be4add11ab0603e4af55a72fac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac",
"reference": "1a07821801a148be4add11ab0603e4af55a72fac",
"shasum": ""
},
"require": {
"php": ">=5.5.0",
"psr/link": "~1.0@dev"
},
"require-dev": {
"phpunit/phpunit": "^5.1",
"squizlabs/php_codesniffer": "^2.3.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Fig\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common utility implementations for HTTP links",
"keywords": [
"http",
"http-link",
"link",
"psr",
"psr-13",
"rest"
],
"time": "2016-10-17T18:31:11+00:00"
},
{
"name": "gos/pubsub-router-bundle",
"version": "v0.3.5",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle.git",
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/PubSubRouterBundle/zipball/a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
"shasum": ""
},
"require": {
"doctrine/cache": "~1.4",
"php": ">=5.5",
"symfony/console": "~3.4|~4.0",
"symfony/framework-bundle": "~3.4|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "0.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Bundle\\PubSubRouterBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Symfony PubSub Router Bundle",
"homepage": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle",
"keywords": [
"PubSub Bundle",
"WAMP",
"bundle",
"pubsub",
"redis",
"zmq"
],
"time": "2018-10-04T17:09:23+00:00"
},
{
"name": "gos/web-socket-bundle",
"version": "v1.10.1",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/WebSocketBundle.git",
"reference": "5515324c608d48ff51892602e4535157a5082cb0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/5515324c608d48ff51892602e4535157a5082cb0",
"reference": "5515324c608d48ff51892602e4535157a5082cb0",
"shasum": ""
},
"require": {
"cboden/ratchet": "^0.4.1",
"gos/pubsub-router-bundle": "^0.3",
"gos/websocket-client": "^0.1",
"ocramius/proxy-manager": "^1.0|^2.1",
"php": ">=7.2",
"psr/log": "^1.0",
"react/event-loop": "^1.0",
"symfony/config": "^2.3|^3.0|^4.0",
"symfony/console": "^2.3|^3.0|^4.0",
"symfony/dependency-injection": "^2.3|^3.0|^4.0",
"symfony/event-dispatcher": "^2.3|^3.0|^4.0",
"symfony/http-foundation": "^2.3|^3.0|^4.0",
"symfony/http-kernel": "^2.3|^3.0|^4.0",
"symfony/security-core": "^2.3|^3.0|^4.0"
},
"conflict": {
"twig/twig": "<1.34|>=2.0,<2.4"
},
"require-dev": {
"phpunit/phpunit": "^8.1"
},
"suggest": {
"doctrine/cache": "^1.0 to use doctrine/cache as a client driver",
"ext-amqp": "* to use the amqp pusher",
"ext-zmq": "* to use the zmq pusher",
"gos/react-amqp": "^0.2 to use the amqp server push handler",
"predis/predis": "^1.0 to use Predis as a client driver",
"react/zmq": "^0.4 to use zmq server push handler",
"symfony/cache": "^3.1|^4.0 to use symfony/cache as a client driver",
"symfony/options-resolver": "^2.3|^3.0|^4.0 to use the pushers",
"symfony/serializer": "^2.3|^3.0|^4.0 to use the pushers",
"symfony/stopwatch": "^2.3|^3.0|^4.0 to use the data collectors",
"twig/twig": "^1.34|^2.4|^3.0 to use the Twig extension"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-1.x": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Bundle\\WebSocketBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dare",
"email": "jeremy.d.dare@gmail.com"
},
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Symfony Web Socket Bundle",
"homepage": "https://github.com/GeniusesOfSymfony/WebSocketBundle",
"keywords": [
"Ratchet",
"WAMP",
"Web Socket Bundle",
"io",
"websocket"
],
"time": "2019-11-22T15:55:38+00:00"
},
{
"name": "gos/websocket-client",
"version": "v0.1.2",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/WebSocketPhpClient.git",
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketPhpClient/zipball/13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Component\\WebSocketClient\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
},
{
"name": "Martin Bažík",
"email": "martin@bazo.sk"
}
],
"description": "WAMP client in PHP",
"keywords": [
"Ratchet",
"WAMP",
"websocket"
],
"time": "2015-08-04T11:43:11+00:00"
},
{
"name": "gregwar/captcha",
"version": "v1.1.7",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/Captcha.git",
"reference": "cf953dd79748406e0292cea8c565399681e4d345"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/Captcha/zipball/cf953dd79748406e0292cea8c565399681e4d345",
"reference": "cf953dd79748406e0292cea8c565399681e4d345",
"shasum": ""
},
"require": {
"ext-gd": "*",
"ext-mbstring": "*",
"php": ">=5.3.0",
"symfony/finder": "*"
},
"require-dev": {
"phpunit/phpunit": "^6.4"
},
"type": "captcha",
"autoload": {
"psr-4": {
"Gregwar\\": "src/Gregwar"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Passault",
"email": "g.passault@gmail.com",
"homepage": "http://www.gregwar.com/"
},
{
"name": "Jeremy Livingston",
"email": "jeremy.j.livingston@gmail.com"
}
],
"description": "Captcha generator",
"homepage": "https://github.com/Gregwar/Captcha",
"keywords": [
"bot",
"captcha",
"spam"
],
"time": "2018-08-17T22:57:28+00:00"
},
{
"name": "gregwar/captcha-bundle",
"version": "v2.0.6",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/CaptchaBundle.git",
"reference": "c2d5468556890dd25e0b53bd345fc205562c86f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/c2d5468556890dd25e0b53bd345fc205562c86f7",
"reference": "c2d5468556890dd25e0b53bd345fc205562c86f7",
"shasum": ""
},
"require": {
"gregwar/captcha": "~1.1",
"php": ">=5.3.9",
"symfony/form": "~2.8|~3.0|~4.0",
"symfony/framework-bundle": "~2.8|~3.0|~4.0"
},
"type": "captcha-bundle",
"autoload": {
"psr-4": {
"Gregwar\\CaptchaBundle\\": "/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Passault",
"email": "g.passault@gmail.com",
"homepage": "http://www.gregwar.com/"
},
{
"name": "Jeremy Livingston",
"email": "jeremy.j.livingston@gmail.com"
}
],
"description": "Captcha bundle",
"homepage": "https://github.com/Gregwar/CaptchaBundle",
"keywords": [
"Symfony2",
"bot",
"captcha",
"code",
"security",
"spam",
"visual"
],
"time": "2018-11-20T10:41:34+00:00"
},
{
"name": "guzzlehttp/guzzle",
"version": "6.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "0895c932405407fd3a7368b6910c09a24d26db11"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/0895c932405407fd3a7368b6910c09a24d26db11",
"reference": "0895c932405407fd3a7368b6910c09a24d26db11",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1",
"php": ">=5.5"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
"psr/log": "^1.1"
},
"suggest": {
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.3-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Guzzle is a PHP HTTP client library",
"homepage": "http://guzzlephp.org/",
"keywords": [
"client",
"curl",
"framework",
"http",
"http client",
"rest",
"web service"
],
"time": "2019-10-23T15:58:00+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"shasum": ""
},
"require": {
"php": ">=5.5.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Guzzle promises library",
"keywords": [
"promise"
],
"time": "2016-12-20T10:07:11+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "239400de7a173fe9901b9ac7c06497751f00727a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
"reference": "239400de7a173fe9901b9ac7c06497751f00727a",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"psr/http-message": "~1.0",
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"ext-zlib": "*",
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
},
"suggest": {
"zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.6-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Tobias Schultze",
"homepage": "https://github.com/Tobion"
}
],
"description": "PSR-7 message implementation that also provides common utility methods",
"keywords": [
"http",
"message",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"time": "2019-07-01T23:21:34+00:00"
},
{
"name": "incenteev/composer-parameter-handler",
"version": "v2.1.3",
"source": {
"type": "git",
"url": "https://github.com/Incenteev/ParameterHandler.git",
"reference": "933c45a34814f27f2345c11c37d46b3ca7303550"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550",
"reference": "933c45a34814f27f2345c11c37d46b3ca7303550",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/yaml": "^2.3 || ^3.0 || ^4.0"
},
"require-dev": {
"composer/composer": "^1.0@dev",
"symfony/filesystem": "^2.3 || ^3 || ^4",
"symfony/phpunit-bridge": "^4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Incenteev\\ParameterHandler\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christophe Coevoet",
"email": "stof@notk.org"
}
],
"description": "Composer script handling your ignored parameter file",
"homepage": "https://github.com/Incenteev/ParameterHandler",
"keywords": [
"parameters management"
],
"time": "2018-02-13T18:05:56+00:00"
},
{
"name": "jasig/phpcas",
"version": "1.3.8",
"source": {
"type": "git",
"url": "https://github.com/apereo/phpCAS.git",
"reference": "40c0769ce05a30c8172b36ceab11124375c8366e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/apereo/phpCAS/zipball/40c0769ce05a30c8172b36ceab11124375c8366e",
"reference": "40c0769ce05a30c8172b36ceab11124375c8366e",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "~3.7.10"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"source/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Joachim Fritschi",
"homepage": "https://wiki.jasig.org/display/~fritschi"
},
{
"name": "Adam Franco",
"homepage": "https://wiki.jasig.org/display/~adamfranco"
}
],
"description": "Provides a simple API for authenticating users against a CAS server",
"homepage": "https://wiki.jasig.org/display/CASC/phpCAS",
"keywords": [
"apereo",
"cas",
"jasig"
],
"time": "2019-08-18T20:01:55+00:00"
},
{
"name": "jdorn/sql-formatter",
"version": "v1.2.17",
"source": {
"type": "git",
"url": "https://github.com/jdorn/sql-formatter.git",
"reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
"reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
"shasum": ""
},
"require": {
"php": ">=5.2.4"
},
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"lib"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dorn",
"email": "jeremy@jeremydorn.com",
"homepage": "http://jeremydorn.com/"
}
],
"description": "a PHP SQL highlighting library",
"homepage": "https://github.com/jdorn/sql-formatter/",
"keywords": [
"highlight",
"sql"
],
"time": "2014-01-12T16:20:24+00:00"
},
{
"name": "kriswallsmith/assetic",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/kriswallsmith/assetic.git",
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
"shasum": ""
},
"require": {
"php": ">=5.3.1",
"symfony/process": "~2.1|~3.0"
},
"conflict": {
"twig/twig": "<1.27"
},
"require-dev": {
"leafo/lessphp": "^0.3.7",
"leafo/scssphp": "~0.1",
"meenie/javascript-packer": "^1.1",
"mrclay/minify": "<2.3",
"natxet/cssmin": "3.0.4",
"patchwork/jsqueeze": "~1.0|~2.0",
"phpunit/phpunit": "~4.8 || ^5.6",
"psr/log": "~1.0",
"ptachoire/cssembed": "~1.0",
"symfony/phpunit-bridge": "~2.7|~3.0",
"twig/twig": "~1.23|~2.0",
"yfix/packager": "dev-master"
},
"suggest": {
"leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
"leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
"leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
"patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
"ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
"twig/twig": "Assetic provides the integration with the Twig templating engine"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"psr-0": {
"Assetic": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "kris.wallsmith@gmail.com",
"homepage": "http://kriswallsmith.net/"
}
],
"description": "Asset Management for PHP",
"homepage": "https://github.com/kriswallsmith/assetic",
"keywords": [
"assets",
"compression",
"minification"
],
"time": "2016-11-11T18:43:20+00:00"
},
{
"name": "lightsaml/lightsaml",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/lightSAML.git",
"reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/lightSAML/zipball/377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5",
"reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5",
"shasum": ""
},
"require": {
"php": ">=5.6",
"robrichards/xmlseclibs": "~2.0|~3.0|~4.0",
"symfony/event-dispatcher": "~2.3|~3.0|~4.0",
"symfony/http-foundation": "~2.3|~3.0|~4.0"
},
"require-dev": {
"monolog/monolog": "~1.3",
"phpunit/phpunit": ">=5.7",
"pimple/pimple": "~3.0",
"symfony/css-selector": "~2.3|~3.0|~4.0",
"symfony/dom-crawler": "~2.3|~3.0|~4.0"
},
"suggest": {
"lightsaml/sp-bundle": "Symfony 2 SP security bundle",
"lightsaml/symfony-bridge": "Symfony 2 build container bridge"
},
"type": "library",
"autoload": {
"psr-0": {
"LightSaml\\Tests\\": "tests/",
"LightSaml\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "https://github.com/tmilos/",
"role": "Developer"
}
],
"description": "Light SAML 2.0 PHP library",
"homepage": "https://www.lightsaml.com/",
"keywords": [
"SAML 2.0",
"Single Logout",
"Single SignOn",
"library",
"lightSAML",
"php"
],
"time": "2018-05-28T11:21:22+00:00"
},
{
"name": "lightsaml/sp-bundle",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SpBundle.git",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"shasum": ""
},
"require": {
"lightsaml/symfony-bridge": "~1.3",
"php": ">=5.6",
"symfony/framework-bundle": "~2.7|~3.0|~4.0",
"symfony/security-bundle": "~2.7|~3.0|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7",
"sebastian/comparator": "^1.2.4|~2.0|~3.0",
"symfony/monolog-bundle": "~2.7|~3.0|~4.0",
"symfony/symfony": "~2.7|~3.0|~4.0"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"LightSaml\\SpBundle\\Tests\\": "tests/",
"LightSaml\\SpBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "http://github.com/tmilos",
"role": "Developer"
}
],
"description": "Light SAML2 SP Symfony Bundle",
"homepage": "http://www.lightsaml.com/SP-Bundle/",
"time": "2019-11-13T19:05:47+00:00"
},
{
"name": "lightsaml/symfony-bridge",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SymfonyBridgeBundle.git",
"reference": "8d3120825032a7468e894d0ae68630f21cd6035b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SymfonyBridgeBundle/zipball/8d3120825032a7468e894d0ae68630f21cd6035b",
"reference": "8d3120825032a7468e894d0ae68630f21cd6035b",
"shasum": ""
},
"require": {
"lightsaml/lightsaml": "~1.1",
"php": ">=5.5.1",
"symfony/dependency-injection": "~2.7|~3.0|~4.0",
"symfony/framework-bundle": "~2.7|~3.0|~4.0",
"symfony/yaml": "~2.7|~3.0|~4.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "~2.0",
"phpunit/phpunit": "^5.7",
"symfony/browser-kit": "~2.7|~3.0|~4.0",
"symfony/filesystem": "~2.7|~3.0|~4.0",
"symfony/finder": "~2.7|~3.0|~4.0",
"symfony/routing": "~2.7|~3.0|~4.0"
},
"suggest": {
"lightsaml/lightsamp-idp": "If you will be using IDP LightSAML services"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"LightSaml\\SymfonyBridgeBundle\\Tests\\": "tests/",
"LightSaml\\SymfonyBridgeBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "http://github.com/tmilos",
"role": "Developer"
}
],
"description": "Light SAML Symfony bridge bundle",
"homepage": "http://www.lightsaml.com",
"time": "2018-05-23T08:11:59+00:00"
},
{
"name": "mashape/unirest-php",
"version": "v3.0.4",
"source": {
"type": "git",
"url": "https://github.com/Mashape/unirest-php.git",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Mashape/unirest-php/zipball/842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0"
},
"require-dev": {
"codeclimate/php-test-reporter": "0.1.*",
"phpunit/phpunit": "~4.4"
},
"suggest": {
"ext-json": "Allows using JSON Bodies for sending and parsing requests"
},
"type": "library",
"autoload": {
"psr-0": {
"Unirest\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Unirest PHP",
"homepage": "https://github.com/Mashape/unirest-php",
"keywords": [
"client",
"curl",
"http",
"https",
"rest"
],
"time": "2016-08-11T17:49:21+00:00"
},
{
"name": "monolog/monolog",
"version": "1.25.2",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
"reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"psr/log": "~1.0"
},
"provide": {
"psr/log-implementation": "1.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"jakub-onderka/php-parallel-lint": "0.9",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpunit/phpunit": "~4.5",
"phpunit/phpunit-mock-objects": "2.3.0",
"ruflin/elastica": ">=0.90 <3.0",
"sentry/sentry": "^0.13",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mongo": "Allow sending log messages to a MongoDB server",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
"sentry/sentry": "Allow sending log messages to a Sentry server"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "http://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"time": "2019-11-13T10:00:05+00:00"
},
{
"name": "ocramius/package-versions",
"version": "1.4.2",
"source": {
"type": "git",
"url": "https://github.com/Ocramius/PackageVersions.git",
"reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/44af6f3a2e2e04f2af46bcb302ad9600cba41c7d",
"reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.0.0",
"php": "^7.1.0"
},
"require-dev": {
"composer/composer": "^1.6.3",
"doctrine/coding-standard": "^5.0.1",
"ext-zip": "*",
"infection/infection": "^0.7.1",
"phpunit/phpunit": "^7.5.17"
},
"type": "composer-plugin",
"extra": {
"class": "PackageVersions\\Installer",
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"PackageVersions\\": "src/PackageVersions"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
"time": "2019-11-15T16:17:10+00:00"
},
{
"name": "ocramius/proxy-manager",
"version": "2.2.3",
"source": {
"type": "git",
"url": "https://github.com/Ocramius/ProxyManager.git",
"reference": "4d154742e31c35137d5374c998e8f86b54db2e2f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/4d154742e31c35137d5374c998e8f86b54db2e2f",
"reference": "4d154742e31c35137d5374c998e8f86b54db2e2f",
"shasum": ""
},
"require": {
"ocramius/package-versions": "^1.1.3",
"php": "^7.2.0",
"zendframework/zend-code": "^3.3.0"
},
"require-dev": {
"couscous/couscous": "^1.6.1",
"ext-phar": "*",
"humbug/humbug": "1.0.0-RC.0@RC",
"nikic/php-parser": "^3.1.1",
"padraic/phpunit-accelerator": "dev-master@DEV",
"phpbench/phpbench": "^0.12.2",
"phpstan/phpstan": "dev-master#856eb10a81c1d27c701a83f167dc870fd8f4236a as 0.9.999",
"phpstan/phpstan-phpunit": "dev-master#5629c0a1f4a9c417cb1077cf6693ad9753895761",
"phpunit/phpunit": "^6.4.3",
"squizlabs/php_codesniffer": "^2.9.1"
},
"suggest": {
"ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
"zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)",
"zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)",
"zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
}
},
"autoload": {
"psr-0": {
"ProxyManager\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "http://ocramius.github.io/"
}
],
"description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
"homepage": "https://github.com/Ocramius/ProxyManager",
"keywords": [
"aop",
"lazy loading",
"proxy",
"proxy pattern",
"service proxies"
],
"time": "2019-08-10T08:37:15+00:00"
},
{
"name": "oneup/uploader-bundle",
"version": "1.9.2",
"target-dir": "Oneup/UploaderBundle",
"source": {
"type": "git",
"url": "https://github.com/1up-lab/OneupUploaderBundle.git",
"reference": "a32bc98019abfd51531d08cc79be19f849d87b84"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/1up-lab/OneupUploaderBundle/zipball/a32bc98019abfd51531d08cc79be19f849d87b84",
"reference": "a32bc98019abfd51531d08cc79be19f849d87b84",
"shasum": ""
},
"require": {
"paragonie/random_compat": "^1.1|^2.0",
"php": ">=5.4",
"symfony/asset": "^2.4|^3.0",
"symfony/finder": "^2.4|^3.0",
"symfony/framework-bundle": "^2.4|^3.0",
"symfony/templating": "^2.4|^3.0",
"symfony/translation": "^2.4|^3.0"
},
"require-dev": {
"amazonwebservices/aws-sdk-for-php": "1.5.*",
"knplabs/gaufrette": "0.2.*@dev",
"oneup/flysystem-bundle": "^1.2",
"phpunit/phpunit": "^4.4",
"sensio/framework-extra-bundle": "2.*|^3.0",
"symfony/browser-kit": "2.*|^3.0",
"symfony/class-loader": "2.*|^3.0",
"symfony/security-bundle": "2.*|^3.0",
"twistor/flysystem-stream-wrapper": "^1.0"
},
"suggest": {
"knplabs/knp-gaufrette-bundle": "0.1.*",
"oneup/flysystem-bundle": "^1.2",
"twistor/flysystem-stream-wrapper": "^1.0 (Required when using Flysystem)"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"Oneup\\UploaderBundle": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jim Schmid",
"email": "js@1up.io",
"homepage": "http://1up.io",
"role": "Developer"
}
],
"description": "Handles multi file uploads in Symfony2. Features included: Chunked upload, Orphans management, Gaufrette support.",
"homepage": "http://1up.io",
"keywords": [
"FancyUpload",
"FineUploader",
"MooUpload",
"Uploadify",
"YUI3 Uploader",
"blueimp",
"dropzone",
"fileupload",
"jQuery File Uploader",
"plupload",
"upload"
],
"time": "2017-12-18T12:41:59+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.18",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
"reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
"shasum": ""
},
"require": {
"php": ">=5.2.0"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"autoload": {
"files": [
"lib/random.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"time": "2019-01-03T20:59:08+00:00"
},
{
"name": "psr/cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
"reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
"keywords": [
"cache",
"psr",
"psr-6"
],
"time": "2016-08-06T20:24:11+00:00"
},
{
"name": "psr/container",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common Container Interface (PHP FIG PSR-11)",
"homepage": "https://github.com/php-fig/container",
"keywords": [
"PSR-11",
"container",
"container-interface",
"container-interop",
"psr"
],
"time": "2017-02-14T16:28:37+00:00"
},
{
"name": "psr/http-message",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
"homepage": "https://github.com/php-fig/http-message",
"keywords": [
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "psr/link",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link.git",
"reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562",
"reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for HTTP links",
"keywords": [
"http",
"http-link",
"link",
"psr",
"psr-13",
"rest"
],
"time": "2016-10-28T16:06:13+00:00"
},
{
"name": "psr/log",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2019-11-01T11:05:21+00:00"
},
{
"name": "psr/simple-cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\SimpleCache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for simple caching",
"keywords": [
"cache",
"caching",
"psr",
"psr-16",
"simple-cache"
],
"time": "2017-10-23T01:57:42+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "120b605dfeb996808c31b6477290a714d356e822"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
"reference": "120b605dfeb996808c31b6477290a714d356e822",
"shasum": ""
},
"require": {
"php": ">=5.6"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^5 || ^6.5"
},
"type": "library",
"autoload": {
"files": [
"src/getallheaders.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph Khattar",
"email": "ralph.khattar@gmail.com"
}
],
"description": "A polyfill for getallheaders.",
"time": "2019-03-08T08:55:37+00:00"
},
{
"name": "ramsey/uuid",
"version": "3.8.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
"reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
"reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
"shasum": ""
},
"require": {
"paragonie/random_compat": "^1.0|^2.0|9.99.99",
"php": "^5.4 || ^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"replace": {
"rhumsaa/uuid": "self.version"
},
"require-dev": {
"codeception/aspect-mock": "^1.0 | ~2.0.0",
"doctrine/annotations": "~1.2.0",
"goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0",
"ircmaxell/random-lib": "^1.1",
"jakub-onderka/php-parallel-lint": "^0.9.0",
"mockery/mockery": "^0.9.9",
"moontoast/math": "^1.1",
"php-mock/php-mock-phpunit": "^0.3|^1.1",
"phpunit/phpunit": "^4.7|^5.0|^6.5",
"squizlabs/php_codesniffer": "^2.3"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
"ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
"ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
"ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
"ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Ramsey\\Uuid\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marijn Huizendveld",
"email": "marijn.huizendveld@gmail.com"
},
{
"name": "Thibaud Fabre",
"email": "thibaud@aztech.io"
},
{
"name": "Ben Ramsey",
"email": "ben@benramsey.com",
"homepage": "https://benramsey.com"
}
],
"description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
"homepage": "https://github.com/ramsey/uuid",
"keywords": [
"guid",
"identifier",
"uuid"
],
"time": "2018-07-19T23:38:55+00:00"
},
{
"name": "ratchet/rfc6455",
"version": "v0.2.5",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/RFC6455.git",
"reference": "c62f7cd95ffbb6e94fd657be694fc7372ecd6e62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/c62f7cd95ffbb6e94fd657be694fc7372ecd6e62",
"reference": "c62f7cd95ffbb6e94fd657be694fc7372ecd6e62",
"shasum": ""
},
"require": {
"guzzlehttp/psr7": "^1.0",
"php": ">=5.4.2"
},
"require-dev": {
"phpunit/phpunit": "4.8.*",
"react/http": "^0.4.1",
"react/socket-client": "^0.4.3"
},
"type": "library",
"autoload": {
"psr-4": {
"Ratchet\\RFC6455\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"role": "Developer"
}
],
"description": "RFC6455 WebSocket protocol handler",
"homepage": "http://socketo.me",
"keywords": [
"WebSockets",
"rfc6455",
"websocket"
],
"time": "2019-03-10T17:10:42+00:00"
},
{
"name": "react/cache",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/cache.git",
"reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466",
"reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/promise": "~2.0|~1.1"
},
"require-dev": {
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Async, Promise-based cache interface for ReactPHP",
"keywords": [
"cache",
"caching",
"promise",
"reactphp"
],
"time": "2019-07-11T13:45:28+00:00"
},
{
"name": "react/dns",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/dns.git",
"reference": "a214d90c2884dac18d0cac6176202f247b66d762"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/dns/zipball/a214d90c2884dac18d0cac6176202f247b66d762",
"reference": "a214d90c2884dac18d0cac6176202f247b66d762",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/cache": "^1.0 || ^0.6 || ^0.5",
"react/event-loop": "^1.0 || ^0.5",
"react/promise": "^2.7 || ^1.2.1",
"react/promise-timer": "^1.2"
},
"require-dev": {
"clue/block-react": "^1.2",
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Dns\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Async DNS resolver for ReactPHP",
"keywords": [
"async",
"dns",
"dns-resolver",
"reactphp"
],
"time": "2019-08-15T09:06:31+00:00"
},
{
"name": "react/event-loop",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/event-loop.git",
"reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/event-loop/zipball/a0ecac955c67b57c40fe4a1b88a7cca1b58c982d",
"reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"suggest": {
"ext-event": "~1.0 for ExtEventLoop",
"ext-pcntl": "For signal handling support when using the StreamSelectLoop",
"ext-uv": "* for ExtUvLoop"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\EventLoop\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.",
"keywords": [
"asynchronous",
"event-loop"
],
"time": "2019-02-07T16:19:49+00:00"
},
{
"name": "react/promise",
"version": "v2.7.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com"
}
],
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
"keywords": [
"promise",
"promises"
],
"time": "2019-01-07T21:25:54+00:00"
},
{
"name": "react/promise-timer",
"version": "v1.5.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise-timer.git",
"reference": "35fb910604fd86b00023fc5cda477c8074ad0abc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise-timer/zipball/35fb910604fd86b00023fc5cda477c8074ad0abc",
"reference": "35fb910604fd86b00023fc5cda477c8074ad0abc",
"shasum": ""
},
"require": {
"php": ">=5.3",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/promise": "^2.7.0 || ^1.2.1"
},
"require-dev": {
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Promise\\Timer\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@lueck.tv"
}
],
"description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.",
"homepage": "https://github.com/reactphp/promise-timer",
"keywords": [
"async",
"event-loop",
"promise",
"reactphp",
"timeout",
"timer"
],
"time": "2019-03-27T18:10:32+00:00"
},
{
"name": "react/socket",
"version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/socket.git",
"reference": "10f0629ec83ea0fa22597f348623f554227e3ca0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/socket/zipball/10f0629ec83ea0fa22597f348623f554227e3ca0",
"reference": "10f0629ec83ea0fa22597f348623f554227e3ca0",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.0",
"react/dns": "^1.0 || ^0.4.13",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/promise": "^2.6.0 || ^1.2.1",
"react/promise-timer": "^1.4.0",
"react/stream": "^1.1"
},
"require-dev": {
"clue/block-react": "^1.2",
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Socket\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP",
"keywords": [
"Connection",
"Socket",
"async",
"reactphp",
"stream"
],
"time": "2019-07-10T10:11:14+00:00"
},
{
"name": "react/stream",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/stream.git",
"reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/stream/zipball/50426855f7a77ddf43b9266c22320df5bf6c6ce6",
"reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.8",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5"
},
"require-dev": {
"clue/stream-filter": "~1.2",
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Stream\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP",
"keywords": [
"event-driven",
"io",
"non-blocking",
"pipe",
"reactphp",
"readable",
"stream",
"writable"
],
"time": "2019-01-01T16:15:09+00:00"
},
{
"name": "robrichards/xmlseclibs",
"version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/robrichards/xmlseclibs.git",
"reference": "0a53d3c3aa87564910cae4ed01416441d3ae0db5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/0a53d3c3aa87564910cae4ed01416441d3ae0db5",
"reference": "0a53d3c3aa87564910cae4ed01416441d3ae0db5",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"php": ">= 5.4"
},
"type": "library",
"autoload": {
"psr-4": {
"RobRichards\\XMLSecLibs\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "A PHP library for XML Security",
"homepage": "https://github.com/robrichards/xmlseclibs",
"keywords": [
"security",
"signature",
"xml",
"xmldsig"
],
"time": "2019-11-05T11:44:22+00:00"
},
{
"name": "sensio/distribution-bundle",
"version": "v5.0.25",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
"reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/80a38234bde8321fb92aa0b8c27978a272bb4baf",
"reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"sensiolabs/security-checker": "~5.0|~6.0",
"symfony/class-loader": "~2.3|~3.0",
"symfony/config": "~2.3|~3.0",
"symfony/dependency-injection": "~2.3|~3.0",
"symfony/filesystem": "~2.3|~3.0",
"symfony/http-kernel": "~2.3|~3.0",
"symfony/process": "~2.3|~3.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "5.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\DistributionBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Base bundle for Symfony Distributions",
"keywords": [
"configuration",
"distribution"
],
"time": "2019-06-18T15:43:58+00:00"
},
{
"name": "sensio/framework-extra-bundle",
"version": "v5.4.1",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
"reference": "585f4b3a1c54f24d1a8431c729fc8f5acca20c8a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/585f4b3a1c54f24d1a8431c729fc8f5acca20c8a",
"reference": "585f4b3a1c54f24d1a8431c729fc8f5acca20c8a",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/persistence": "^1.0",
"php": ">=7.1.3",
"symfony/config": "^3.4|^4.3",
"symfony/dependency-injection": "^3.4|^4.3",
"symfony/framework-bundle": "^3.4|^4.3",
"symfony/http-kernel": "^3.4|^4.3"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
"nyholm/psr7": "^1.1",
"symfony/browser-kit": "^3.4|^4.3",
"symfony/dom-crawler": "^3.4|^4.3",
"symfony/expression-language": "^3.4|^4.3",
"symfony/finder": "^3.4|^4.3",
"symfony/monolog-bridge": "^3.0|^4.0",
"symfony/monolog-bundle": "^3.2",
"symfony/phpunit-bridge": "^3.4.19|^4.1.8",
"symfony/psr-http-message-bridge": "^1.1",
"symfony/security-bundle": "^3.4|^4.3",
"symfony/twig-bundle": "^3.4|^4.3",
"symfony/yaml": "^3.4|^4.3",
"twig/twig": "~1.12|~2.0"
},
"suggest": {
"symfony/expression-language": "",
"symfony/psr-http-message-bridge": "To use the PSR-7 converters",
"symfony/security-bundle": ""
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "5.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\FrameworkExtraBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle provides a way to configure your controllers with annotations",
"keywords": [
"annotations",
"controllers"
],
"time": "2019-07-08T08:31:25+00:00"
},
{
"name": "sensiolabs/security-checker",
"version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/security-checker.git",
"reference": "a576c01520d9761901f269c4934ba55448be4a54"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/a576c01520d9761901f269c4934ba55448be4a54",
"reference": "a576c01520d9761901f269c4934ba55448be4a54",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
"symfony/console": "^2.8|^3.4|^4.2|^5.0",
"symfony/http-client": "^4.3|^5.0",
"symfony/mime": "^4.3|^5.0",
"symfony/polyfill-ctype": "^1.11"
},
"bin": [
"security-checker"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.0-dev"
}
},
"autoload": {
"psr-4": {
"SensioLabs\\Security\\": "SensioLabs/Security"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien.potencier@gmail.com"
}
],
"description": "A security checker for your composer.lock",
"time": "2019-11-01T13:20:14+00:00"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950",
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"mockery/mockery": "~0.9.1",
"symfony/phpunit-bridge": "~3.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.4-dev"
}
},
"autoload": {
"files": [
"lib/swift_required.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Corbyn"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Swiftmailer, free feature-rich PHP mailer",
"homepage": "https://swiftmailer.symfony.com",
"keywords": [
"email",
"mail",
"mailer"
],
"time": "2018-07-31T09:26:32+00:00"
},
{
"name": "symfony/assetic-bundle",
"version": "v2.8.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/assetic-bundle.git",
"reference": "2e0a23a4874838e26de6f025e02fc63328921a4c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/assetic-bundle/zipball/2e0a23a4874838e26de6f025e02fc63328921a4c",
"reference": "2e0a23a4874838e26de6f025e02fc63328921a4c",
"shasum": ""
},
"require": {
"kriswallsmith/assetic": "~1.4",
"php": ">=5.3.0",
"symfony/console": "~2.3|~3.0",
"symfony/dependency-injection": "~2.3|~3.0",
"symfony/framework-bundle": "~2.3|~3.0",
"symfony/yaml": "~2.3|~3.0"
},
"conflict": {
"kriswallsmith/spork": "<=0.2",
"twig/twig": "<1.27"
},
"require-dev": {
"kriswallsmith/spork": "~0.3",
"patchwork/jsqueeze": "~1.0",
"symfony/class-loader": "~2.3|~3.0",
"symfony/css-selector": "~2.3|~3.0",
"symfony/dom-crawler": "~2.3|~3.0",
"symfony/phpunit-bridge": "~2.7|~3.0",
"symfony/twig-bundle": "~2.3|~3.0"
},
"suggest": {
"kriswallsmith/spork": "to be able to dump assets in parallel",
"symfony/twig-bundle": "to use the Twig integration"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.8-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\AsseticBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "kris.wallsmith@gmail.com",
"homepage": "http://kriswallsmith.net/"
}
],
"description": "Integrates Assetic into Symfony2",
"homepage": "https://github.com/symfony/AsseticBundle",
"keywords": [
"assets",
"compression",
"minification"
],
"abandoned": "symfony/webpack-encore-pack",
"time": "2017-07-14T07:26:46+00:00"
},
{
"name": "symfony/http-client",
"version": "v4.3.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
"reference": "ae3a9cd491f1aadb5583f34a6bda5cca34081ce8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/ae3a9cd491f1aadb5583f34a6bda5cca34081ce8",
"reference": "ae3a9cd491f1aadb5583f34a6bda5cca34081ce8",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"psr/log": "^1.0",
"symfony/http-client-contracts": "^1.1.7",
"symfony/polyfill-php73": "^1.11"
},
"provide": {
"psr/http-client-implementation": "1.0",
"symfony/http-client-implementation": "1.1"
},
"require-dev": {
"nyholm/psr7": "^1.0",
"psr/http-client": "^1.0",
"symfony/http-kernel": "^4.3",
"symfony/process": "^4.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.3-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\HttpClient\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony HttpClient component",
"homepage": "https://symfony.com",
"time": "2019-11-08T08:23:45+00:00"
},
{
"name": "symfony/http-client-contracts",
"version": "v1.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
"reference": "088bae75cfa2ec5eb6d33dce17dbd8613150ce6e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/088bae75cfa2ec5eb6d33dce17dbd8613150ce6e",
"reference": "088bae75cfa2ec5eb6d33dce17dbd8613150ce6e",
"shasum": ""
},
"require": {
"php": "^7.1.3"
},
"suggest": {
"symfony/http-client-implementation": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Contracts\\HttpClient\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Generic abstractions related to HTTP clients",
"homepage": "https://symfony.com",
"keywords": [
"abstractions",
"contracts",
"decoupling",
"interfaces",
"interoperability",
"standards"
],
"time": "2019-11-07T12:44:51+00:00"
},
{
"name": "symfony/mime",
"version": "v4.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "89da7b68b7149aab065c09b97f938753ab52831f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/89da7b68b7149aab065c09b97f938753ab52831f",
"reference": "89da7b68b7149aab065c09b97f938753ab52831f",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
"conflict": {
"symfony/mailer": "<4.4"
},
"require-dev": {
"egulias/email-validator": "^2.1.10",
"symfony/dependency-injection": "^3.4|^4.1|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Mime\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A library to manipulate MIME messages",
"homepage": "https://symfony.com",
"keywords": [
"mime",
"mime-type"
],
"time": "2019-11-13T07:39:40+00:00"
},
{
"name": "symfony/monolog-bundle",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bundle.git",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"shasum": ""
},
"require": {
"monolog/monolog": "~1.22",
"php": ">=5.6",
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4.10|^4.0.10",
"symfony/http-kernel": "~3.4|~4.0",
"symfony/monolog-bridge": "~3.4|~4.0"
},
"require-dev": {
"symfony/console": "~3.4|~4.0",
"symfony/phpunit-bridge": "^3.4.19|^4.0",
"symfony/yaml": "~3.4|~4.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MonologBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony MonologBundle",
"homepage": "http://symfony.com",
"keywords": [
"log",
"logging"
],
"time": "2019-06-20T12:18:19+00:00"
},
{
"name": "symfony/orm-pack",
"version": "v1.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/orm-pack.git",
"reference": "c57f5e05232ca40626eb9fa52a32bc8565e9231c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/orm-pack/zipball/c57f5e05232ca40626eb9fa52a32bc8565e9231c",
"reference": "c57f5e05232ca40626eb9fa52a32bc8565e9231c",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "^1.6.10|^2.0",
"doctrine/doctrine-migrations-bundle": "^1.3|^2.0",
"doctrine/orm": "^2.5.11",
"php": "^7.0"
},
"type": "symfony-pack",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A pack for the Doctrine ORM",
"time": "2019-10-18T05:41:09+00:00"
},
{
"name": "symfony/polyfill-apcu",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-apcu.git",
"reference": "71ce80635d5dcd67772b4dda00b86068595f64d5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/71ce80635d5dcd67772b4dda00b86068595f64d5",
"reference": "71ce80635d5dcd67772b4dda00b86068595f64d5",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Apcu\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"apcu",
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "550ebaac289296ce228a706d0867afc34687e3f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
"reference": "550ebaac289296ce228a706d0867afc34687e3f4",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "66810b9d6eb4af54d543867909d65ab9af654d7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/66810b9d6eb4af54d543867909d65ab9af654d7e",
"reference": "66810b9d6eb4af54d543867909d65ab9af654d7e",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/intl": "~2.3|~3.0|~4.0|~5.0"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's ICU-related data and classes",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"icu",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
"reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php72": "^1.9"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "0e3b212e96a51338639d8ce175c046d7729c3403"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/0e3b212e96a51338639d8ce175c046d7729c3403",
"reference": "0e3b212e96a51338639d8ce175c046d7729c3403",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-util": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php56\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-php70",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php70.git",
"reference": "54b4c428a0054e254223797d2713c31e08610831"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/54b4c428a0054e254223797d2713c31e08610831",
"reference": "54b4c428a0054e254223797d2713c31e08610831",
"shasum": ""
},
"require": {
"paragonie/random_compat": "~1.0|~2.0|~9.99",
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php70\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "04ce3335667451138df4307d6a9b61565560199e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
"reference": "04ce3335667451138df4307d6a9b61565560199e",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
"reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php73\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/polyfill-util",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
"reference": "4317de1386717b4c22caed7725350a8887ab205c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4317de1386717b4c22caed7725350a8887ab205c",
"reference": "4317de1386717b4c22caed7725350a8887ab205c",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.12-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Util\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony utilities for portability of PHP codes",
"homepage": "https://symfony.com",
"keywords": [
"compat",
"compatibility",
"polyfill",
"shim"
],
"time": "2019-08-06T08:03:45+00:00"
},
{
"name": "symfony/swiftmailer-bundle",
"version": "v2.6.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/swiftmailer-bundle.git",
"reference": "c4808f5169efc05567be983909d00f00521c53ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec",
"reference": "c4808f5169efc05567be983909d00f00521c53ec",
"shasum": ""
},
"require": {
"php": ">=5.3.2",
"swiftmailer/swiftmailer": "~4.2|~5.0",
"symfony/config": "~2.7|~3.0",
"symfony/dependency-injection": "~2.7|~3.0",
"symfony/http-kernel": "~2.7|~3.0"
},
"require-dev": {
"symfony/console": "~2.7|~3.0",
"symfony/framework-bundle": "~2.7|~3.0",
"symfony/phpunit-bridge": "~3.3@dev",
"symfony/yaml": "~2.7|~3.0"
},
"suggest": {
"psr/log": "Allows logging"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\SwiftmailerBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony SwiftmailerBundle",
"homepage": "http://symfony.com",
"time": "2017-10-19T01:06:41+00:00"
},
{
"name": "symfony/symfony",
"version": "v3.4.35",
"source": {
"type": "git",
"url": "https://github.com/symfony/symfony.git",
"reference": "2adc85d49cbe14e346068fa7e9c2e1f08ab31de6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/symfony/zipball/2adc85d49cbe14e346068fa7e9c2e1f08ab31de6",
"reference": "2adc85d49cbe14e346068fa7e9c2e1f08ab31de6",
"shasum": ""
},
"require": {
"doctrine/common": "~2.4",
"ext-xml": "*",
"fig/link-util": "^1.0",
"php": "^5.5.9|>=7.0.8",
"psr/cache": "~1.0",
"psr/container": "^1.0",
"psr/link": "^1.0",
"psr/log": "~1.0",
"psr/simple-cache": "^1.0",
"symfony/polyfill-apcu": "~1.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "~1.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.6",
"twig/twig": "^1.41|^2.10"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
"phpdocumentor/type-resolver": "<0.3.0",
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"provide": {
"psr/cache-implementation": "1.0",
"psr/container-implementation": "1.0",
"psr/log-implementation": "1.0",
"psr/simple-cache-implementation": "1.0"
},
"replace": {
"symfony/asset": "self.version",
"symfony/browser-kit": "self.version",
"symfony/cache": "self.version",
"symfony/class-loader": "self.version",
"symfony/config": "self.version",
"symfony/console": "self.version",
"symfony/css-selector": "self.version",
"symfony/debug": "self.version",
"symfony/debug-bundle": "self.version",
"symfony/dependency-injection": "self.version",
"symfony/doctrine-bridge": "self.version",
"symfony/dom-crawler": "self.version",
"symfony/dotenv": "self.version",
"symfony/event-dispatcher": "self.version",
"symfony/expression-language": "self.version",
"symfony/filesystem": "self.version",
"symfony/finder": "self.version",
"symfony/form": "self.version",
"symfony/framework-bundle": "self.version",
"symfony/http-foundation": "self.version",
"symfony/http-kernel": "self.version",
"symfony/inflector": "self.version",
"symfony/intl": "self.version",
"symfony/ldap": "self.version",
"symfony/lock": "self.version",
"symfony/monolog-bridge": "self.version",
"symfony/options-resolver": "self.version",
"symfony/process": "self.version",
"symfony/property-access": "self.version",
"symfony/property-info": "self.version",
"symfony/proxy-manager-bridge": "self.version",
"symfony/routing": "self.version",
"symfony/security": "self.version",
"symfony/security-bundle": "self.version",
"symfony/security-core": "self.version",
"symfony/security-csrf": "self.version",
"symfony/security-guard": "self.version",
"symfony/security-http": "self.version",
"symfony/serializer": "self.version",
"symfony/stopwatch": "self.version",
"symfony/templating": "self.version",
"symfony/translation": "self.version",
"symfony/twig-bridge": "self.version",
"symfony/twig-bundle": "self.version",
"symfony/validator": "self.version",
"symfony/var-dumper": "self.version",
"symfony/web-link": "self.version",
"symfony/web-profiler-bundle": "self.version",
"symfony/web-server-bundle": "self.version",
"symfony/workflow": "self.version",
"symfony/yaml": "self.version"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/annotations": "~1.0",
"doctrine/cache": "~1.6",
"doctrine/data-fixtures": "1.0.*",
"doctrine/dbal": "~2.4",
"doctrine/doctrine-bundle": "~1.4",
"doctrine/orm": "~2.4,>=2.4.5",
"egulias/email-validator": "~1.2,>=1.2.8|~2.0",
"monolog/monolog": "~1.11",
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0",
"predis/predis": "~1.0",
"symfony/phpunit-bridge": "^3.4.31|^4.3.4|~5.0",
"symfony/security-acl": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
"Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
"Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
"Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
"Symfony\\Bundle\\": "src/Symfony/Bundle/",
"Symfony\\Component\\": "src/Symfony/Component/"
},
"classmap": [
"src/Symfony/Component/Intl/Resources/stubs"
],
"exclude-from-classmap": [
"**/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "The Symfony PHP framework",
"homepage": "https://symfony.com",
"keywords": [
"framework"
],
"time": "2019-11-13T08:45:05+00:00"
},
{
"name": "tetranz/select2entity-bundle",
"version": "v2.10.1",
"source": {
"type": "git",
"url": "https://github.com/tetranz/select2entity-bundle.git",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"shasum": ""
},
"require": {
"doctrine/orm": ">=2.4",
"php": ">=5.4.0",
"twig/twig": ">=2.9"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": []
},
"autoload": {
"psr-4": {
"Tetranz\\Select2EntityBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ross Keatinge",
"email": "tetranz@gmail.com"
}
],
"description": "A Symfony bundle that integrates Select2 as a drop-in replacement for a standard entity field on a Symfony form.",
"keywords": [
"autocomplete",
"select2",
"symfony",
"typeahead"
],
"time": "2019-07-14T02:30:34+00:00"
},
{
"name": "thecsea/simple-caldav-client",
"version": "v0.1.10",
"source": {
"type": "git",
"url": "https://github.com/thecsea/simpleCalDAV.git",
"reference": "dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thecsea/simpleCalDAV/zipball/dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9",
"reference": "dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"it\\thecsea\\simple_caldav_client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0"
],
"authors": [
{
"name": "claudio cardinale",
"email": "cardi@thecsea.it",
"homepage": "http://thecsea.it"
}
],
"description": "A simple and complete php caldav client",
"homepage": "http://www.thecsea.it",
"keywords": [
"CalDAV",
"Simple",
"client"
],
"time": "2019-04-25T19:55:16+00:00"
},
{
"name": "twig/twig",
"version": "v2.12.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed",
"reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed",
"shasum": ""
},
"require": {
"php": "^7.0",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"psr/container": "^1.0",
"symfony/debug": "^3.4|^4.2",
"symfony/phpunit-bridge": "^4.4@dev|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.12-dev"
}
},
"autoload": {
"psr-0": {
"Twig_": "lib/"
},
"psr-4": {
"Twig\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com",
"homepage": "http://fabien.potencier.org",
"role": "Lead Developer"
},
{
"name": "Twig Team",
"homepage": "https://twig.symfony.com/contributors",
"role": "Contributors"
},
{
"name": "Armin Ronacher",
"email": "armin.ronacher@active-4.com",
"role": "Project Founder"
}
],
"description": "Twig, the flexible, fast, and secure template language for PHP",
"homepage": "https://twig.symfony.com",
"keywords": [
"templating"
],
"time": "2019-11-11T16:52:09+00:00"
},
{
"name": "zendframework/zend-code",
"version": "3.4.0",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-code.git",
"reference": "46feaeecea14161734b56c1ace74f28cb329f194"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-code/zipball/46feaeecea14161734b56c1ace74f28cb329f194",
"reference": "46feaeecea14161734b56c1ace74f28cb329f194",
"shasum": ""
},
"require": {
"php": "^7.1",
"zendframework/zend-eventmanager": "^2.6 || ^3.0"
},
"require-dev": {
"doctrine/annotations": "^1.0",
"ext-phar": "*",
"phpunit/phpunit": "^7.5.16 || ^8.4",
"zendframework/zend-coding-standard": "^1.0",
"zendframework/zend-stdlib": "^2.7 || ^3.0"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
"zendframework/zend-stdlib": "Zend\\Stdlib component"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.4.x-dev",
"dev-develop": "3.5.x-dev"
}
},
"autoload": {
"psr-4": {
"Zend\\Code\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
"keywords": [
"ZendFramework",
"code",
"zf"
],
"time": "2019-10-05T23:18:22+00:00"
},
{
"name": "zendframework/zend-eventmanager",
"version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-eventmanager.git",
"reference": "a5e2583a211f73604691586b8406ff7296a946dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd",
"reference": "a5e2583a211f73604691586b8406ff7296a946dd",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
},
"require-dev": {
"athletic/athletic": "^0.1",
"container-interop/container-interop": "^1.1.0",
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
"zendframework/zend-coding-standard": "~1.0.0",
"zendframework/zend-stdlib": "^2.7.3 || ^3.0"
},
"suggest": {
"container-interop/container-interop": "^1.1.0, to use the lazy listeners feature",
"zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.2-dev",
"dev-develop": "3.3-dev"
}
},
"autoload": {
"psr-4": {
"Zend\\EventManager\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Trigger and listen to events within a PHP application",
"homepage": "https://github.com/zendframework/zend-eventmanager",
"keywords": [
"event",
"eventmanager",
"events",
"zf2"
],
"time": "2018-04-25T15:33:34+00:00"
}
],
"packages-dev": [
{
"name": "nikic/php-parser",
"version": "v4.3.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc",
"reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=7.0"
},
"require-dev": {
"ircmaxell/php-yacc": "0.0.5",
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
},
"bin": [
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.3-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Nikita Popov"
}
],
"description": "A PHP parser written in PHP",
"keywords": [
"parser",
"php"
],
"time": "2019-11-08T13:50:10+00:00"
},
{
"name": "sensio/generator-bundle",
"version": "v3.1.7",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
"reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65",
"reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65",
"shasum": ""
},
"require": {
"symfony/console": "~2.7|~3.0",
"symfony/framework-bundle": "~2.7|~3.0",
"symfony/process": "~2.7|~3.0",
"symfony/yaml": "~2.7|~3.0",
"twig/twig": "^1.28.2|^2.0"
},
"require-dev": {
"doctrine/orm": "~2.4",
"symfony/doctrine-bridge": "~2.7|~3.0",
"symfony/filesystem": "~2.7|~3.0",
"symfony/phpunit-bridge": "^3.3"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\GeneratorBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle generates code for you",
"time": "2017-12-07T15:36:41+00:00"
},
{
"name": "symfony/maker-bundle",
"version": "v1.14.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
"reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c864e7f9b8d1e1f5f60acc3beda11299f637aded",
"reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded",
"shasum": ""
},
"require": {
"doctrine/inflector": "^1.2",
"nikic/php-parser": "^4.0",
"php": "^7.0.8",
"symfony/config": "^3.4|^4.0|^5.0",
"symfony/console": "^3.4|^4.0|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0",
"symfony/filesystem": "^3.4|^4.0|^5.0",
"symfony/finder": "^3.4|^4.0|^5.0",
"symfony/framework-bundle": "^3.4|^4.0|^5.0",
"symfony/http-kernel": "^3.4|^4.0|^5.0"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.8|^2.0",
"doctrine/orm": "^2.3",
"friendsofphp/php-cs-fixer": "^2.8",
"friendsoftwig/twigcs": "^3.1.2",
"symfony/http-client": "^4.3|^5.0",
"symfony/phpunit-bridge": "^4.3|^5.0",
"symfony/process": "^3.4|^4.0|^5.0",
"symfony/security-core": "^3.4|^4.0|^5.0",
"symfony/yaml": "^3.4|^4.0|^5.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MakerBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.",
"homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html",
"keywords": [
"code generator",
"generator",
"scaffold",
"scaffolding"
],
"time": "2019-11-07T00:56:03+00:00"
},
{
"name": "symfony/phpunit-bridge",
"version": "v3.4.35",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7",
"reference": "cbea8818e9f34e4e9d780bd22bdda21b57d4d5c7",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"conflict": {
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"suggest": {
"symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
},
"bin": [
"bin/simple-phpunit"
],
"type": "symfony-bridge",
"extra": {
"branch-alias": {
"dev-master": "3.4-dev"
},
"thanks": {
"name": "phpunit/phpunit",
"url": "https://github.com/sebastianbergmann/phpunit"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Bridge\\PhpUnit\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"time": "2019-09-30T20:33:19+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=7"
},
"platform-dev": [],
"platform-overrides": {
"php": "7.2"
}
}

View File

@ -21,6 +21,9 @@ class SecurityController extends Controller
public function loginAction(Request $request)
{
// Récupération de la cible de navigation
$redirect = $request->get("redirect");
// Masteridentity
$masteridentity=$this->getParameter("masteridentity");
@ -105,7 +108,7 @@ class SecurityController extends Controller
$em->flush();
// On calcule les groupes de l'utilisateur
$user=$groups=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
$groups=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
}
}
else {
@ -153,8 +156,16 @@ class SecurityController extends Controller
$dispatcher = new EventDispatcher();
$dispatcher->dispatch("security.interactive_login", $event);
// On enregistre sa visite
$user->setVisitedate(new \DateTime());
$user->setVisitecpt($user->getVisitecpt()+1);
$em->persist($user);
$em->flush();
return $this->redirect($this->generateUrl('cadoles_core_home'));
if($redirect)
return $this->redirect($redirect);
else
return $this->redirect($this->generateUrl('cadoles_core_home'));
}
public function logoutAction() {

View File

@ -38,6 +38,7 @@ class InitDataCommand extends ContainerAwareCommand
$em = $this->getContainer()->get('doctrine')->getEntityManager();
$masteridentity=$this->getContainer()->getParameter('masteridentity');
$ldap_template = $this->getContainer()->getParameter('ldap_template');
$finder = new Finder();
$finder->in('src/Cadoles/CoreBundle/Command/data');
@ -98,6 +99,7 @@ class InitDataCommand extends ContainerAwareCommand
$group->setFgcancreatepage(true);
$group->setFgcancreateblog(true);
$group->setFgcancreatecalendar(true);
$group->setFgcancreateproject(true);
$em->persist($group);
$em->flush();
}
@ -138,7 +140,12 @@ class InitDataCommand extends ContainerAwareCommand
if(!$niveau01) {
// Si ce n'est pas le cas on positionne un filtre ultra large sur le niveau01 de base
$niveau01=$group=$em->getRepository('CadolesCoreBundle:Niveau01')->find(-100);
$niveau01->setLdapfilter("(uid=*)");
if($ldap_template=="scribe")
$niveau01->setLdapfilter("(&(uid=*)(objectclass=inetOrgPerson)(!(description=Computer)))");
else
$niveau01->setLdapfilter("(uid=*)");
$em->persist($niveau01);
$em->flush();
}

View File

@ -0,0 +1,650 @@
<?php
namespace Cadoles\CoreBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\DBAL\Connection as DBALConnection;
use Doctrine\ORM\EntityManager;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Cadoles\CoreBundle\Entity\Niveau01;
use Cadoles\CoreBundle\Entity\Niveau02;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\CoreBundle\Entity\Group;
use Cadoles\CoreBundle\Entity\UserGroup;
use Cadoles\PortalBundle\Entity\Calendar;
use Cadoles\PortalBundle\Entity\Blog;
use Cadoles\PortalBundle\Entity\Project;
use Unirest\Request;
global $bdd01;
global $config;
class OnlyCommand extends Command
{
private $container;
private $em;
private $output;
private $filesystem;
private $rootlog;
private $only_activate;
private $only_sync;
private $only_url;
private $only_host;
private $only_user;
private $only_password;
protected function configure()
{
$this
->setName('Core:Only')
->setDescription('Synchronisation Only Office')
->setHelp('This command Synchro Only Office for Core')
->addArgument('simulate', InputArgument::OPTIONAL, 'true to simulate / false to run')
->addArgument('cronid', InputArgument::OPTIONAL, 'ID Cron Job')
->addArgument('lastchance', InputArgument::OPTIONAL, 'Lastchance to run the cron')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->container = $this->getApplication()->getKernel()->getContainer();
$this->em = $this->container->get('doctrine')->getEntityManager();
$this->output = $output;
$this->filesystem = new Filesystem();
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
$this->writelnred('');
$this->writelnred('== Core:Only');
$this->writelnred('==========================================================================================================');
setlocale( LC_CTYPE, 'fr_FR' );
$simulate = $input->getArgument('simulate');
if($simulate=="") $simulate="true";
if($simulate!="true"&&$simulate!="false") {
$this->writeln('Paramétre incorrect');
return;
}
$simulate=($simulate=="true");
$this->writeln('');
if($simulate) $this->writeln('** SIMULATION');
else $this->writeln('** REEL');
$this->writeln('');
$this->writeln('=====================================================');
$this->writeln('== SYNCHONISATION ONLY OFFICE =======================');
$this->writeln('=====================================================');
$this->only_activate = $this->container->getParameter("activate_widonlyoffice");
if(!$this->only_activate) {
$this->writeln('Synchronisation Only désactivé');
return 1;
}
$this->only_sync = $this->container->getParameter("widonlyoffice_sync");
if(!$this->only_sync) {
$this->writeln('Synchronisation Only désactivé');
return 1;
}
$this->only_sync = true;
$this->only_url = $this->container->getParameter("widonlyoffice_url")."/api/2.0/";
$this->only_host = str_replace("https://","",str_replace("http://","",$this->container->getParameter("widonlyoffice_url")));
$this->only_user = $this->container->getParameter("widonlyoffice_user");
$this->only_password = $this->container->getParameter("widonlyoffice_password");
$this->writeln($this->only_url);
$this->writeln($this->only_host);
$this->writeln($this->only_user);
if($this->only_sync) {
// Only Office est-il dans le domaine
if(stripos($this->only_url,"/")===0)
$this->only_url="https://".$this->container->getParameter("weburl").$this->only_url;
$indomaine = (stripos($this->only_url,$this->container->getParameter("weburl"))!==false);
// Si hors domaine on utilise le proxy si proxy il y a
if(!$indomaine) {
$PROXYactivate = $this->em->getRepository("CadolesCoreBundle:Config")->find("PROXYactivate")->getValue();
if($PROXYactivate) {
$PROXYserver = $this->em->getRepository("CadolesCoreBundle:Config")->find("PROXYserver")->getValue();
$PROXYport = $this->em->getRepository("CadolesCoreBundle:Config")->find("PROXYport")->getValue();
\Unirest\Request::proxy($PROXYserver, $PROXYport, CURLPROXY_HTTP, true);
}
}
// Authentification à onlyoffice
$this->writeln('');
$this->writeln('== AUTHENTIFICATION =================================');
\Unirest\Request::verifyPeer(false);
\Unirest\Request::verifyHost(false);
\Unirest\Request::timeout(20);
$headers = ['Host' => $this->only_host, 'Accept' => 'application/json','Content-Type'=>'application/json','Retry-After'=>'5'];
$query = array('userName' => $this->only_user, 'password' => $this->only_password);
$body = \Unirest\Request\Body::json($query);
$response = \Unirest\Request::post($this->only_url.'/authentication',$headers,$body);
if($this->koresponse($response)) return 0;
$token=$response->body->response->token;
$headers["Authorization"]=$token;
// Synchronisation des utilisateur Only sur l'annuaire
$this->writeln('');
$this->writeln('== SYNCHRONISATION ONLY==============================');
$response = \Unirest\Request::get($this->only_url.'/settings/ldap/sync',$headers);
if($this->koresponse($response)) return 0;
// Fichier d'import des utilisateurs only inexistant dans ninegate
$this->filesystem->remove($this->rootlog.'toimportfromonly.csv');
$string="login;prenom;nom;email;niveau01;role";
$this->filesystem->appendToFile($this->rootlog.'toimportfromonly.csv', $string."\n");
// Controler les utilisateur only
$this->writeln('');
$this->writeln('== CONTROLE USER ONLY================================');
$kousers=[];
$onlyusers=[];
$start=0;
$response = \Unirest\Request::get($this->only_url.'/people',$headers);
if($this->koresponse($response)) return 0;
$peoples=$response->body->response;
while(isset($response->body->nextIndex)) {
$response = \Unirest\Request::get($this->only_url.'/people?startIndex='.$response->body->nextIndex,$headers);
if($this->koresponse($response)) return 0;
$peoples=array_merge($peoples,$response->body->response);
}
foreach($peoples as $onlyuser) {
$user=$this->em->getRepository("CadolesCoreBundle:User")->findBy(["username"=>$onlyuser->userName]);
if(!$user) {
$this->writelnred("ERREUR ".$onlyuser->userName." existe dans OnlyOffice mais pas dans Ninegate");
$string=$onlyuser->userName.";".$onlyuser->firstName.";".$onlyuser->lastName.";".$onlyuser->email.";Autres;ROLE_USER";
$this->filesystem->appendToFile($this->rootlog.'toimportfromonly.csv', $string."\n");
}
else {
// Sauvegarde l'id du useronlyoffice
$onlyusers[$onlyuser->id]=$onlyuser->userName;
}
}
// Controler les utilisateurs ninegate
$this->writeln('');
$this->writeln('== CONTROLE USER NINEGATE============================');
/*
$users=$this->em->getRepository("CadolesCoreBundle:User")->findAll();
foreach($users as $user) {
$response = \Unirest\Request::get($this->only_url.'/people/'.$user->getUsername(),$headers);
if($this->koresponse($response)) {
$this->writelnred("ERREUR ".$user->getUsername()." existe dans Ninegate mais pas dans OnlyOffice");
}
}
*/
// On recherche la page template de group
$pagetemplate=$this->em->getRepository("CadolesPortalBundle:Page")->findOneBy(["parentfor"=>"group"]);
if(!$pagetemplate) {
$this->writelnred("ERREUR Pas de page modèle de type groupe");
return 1;
}
// Injection des groupes only non existant dans ninegate
$this->writeln('');
$this->writeln('== INJECTION DES GROUPES ONLY========================');
$response = \Unirest\Request::get($this->only_url.'/project?status=0,',$headers);
if($this->koresponse($response)) return 0;
$projects=$response->body->response;
while(isset($response->body->nextIndex)) {
$response = \Unirest\Request::get($this->only_url.'/project?status=0&startIndex='.$response->body->nextIndex,$headers);
if($this->koresponse($response)) return 0;
$projects=array_merge($projects,$response->body->response);
}
foreach($projects as $onlygroup) {
// On ne scanne que les groupe ouvert
if($onlygroup->status!=0)
continue;
// Le groupe existe-t-il dans ninegate
$group=$this->em->getRepository("CadolesCoreBundle:Group")->findBy(["idonlyoffice"=>$onlygroup->id]);
if(!$group) {
$namegroup=$onlygroup->id." - ".$onlygroup->title;
// On enlève les caractères interdis
$namegroup=preg_replace('~[^ éèêôöàïî\'@a-zA-Z0-9._-]~', '', $namegroup);
// Ce nom de groupe existe-t-il déjà si oui erreur
$group=$this->em->getRepository("CadolesCoreBundle:Group")->findBy(["label"=>$namegroup]);
if($group)
$this->writelnred("ERREUR Groupe déjà existant = ".$namegroup);
else{
// Le propriétaire du groupe only existe-t-il dans ninegate
if(!array_key_exists($onlygroup->responsible->id,$onlyusers)) {
if(!array_key_exists($onlygroup->responsible->id,$kousers)) {
// Comme on n'a que les 1000 permiers lors du parcours des users only peut etre que lui fait partie de ceux que l'on n'a pas scanné
$respuser = \Unirest\Request::get($this->only_url.'/people/'.$onlygroup->responsible->id,$headers);
// Là normalement on a forcement une réponse positive
if(!$this->koresponse($respuser)) {
$onlyuser=$respuser->body->response;
$user=$this->em->getRepository("CadolesCoreBundle:User")->findBy(["username"=>$onlyuser->userName]);
if(!$user) {
$kousers[$onlygroup->responsible->id]=$onlygroup->responsible->displayName;
$string=$onlyuser->userName.";".$onlyuser->firstName.";".$onlyuser->lastName.";".$onlyuser->email.";Autres;ROLE_USER";
$this->filesystem->appendToFile($this->rootlog.'toimportfromonly.csv', $string."\n");
}
else {
// Sauvegarde l'id du useronlyoffice
$onlyusers[$onlyuser->id]=$onlyuser->userName;
}
}
}
}
// Le propriétaire du groupe only existe-t-il dans ninegate
if(!array_key_exists($onlygroup->responsible->id,$onlyusers)) {
$this->writelnred("ERREUR Propriétaire du Groupe n'existe pas. Group = ".$namegroup. " - User = ".$onlygroup->responsible->displayName);
}
else {
// Création du groupe
$user=$this->em->getRepository("CadolesCoreBundle:User")->findOneBy(["username"=>$onlyusers[$onlygroup->responsible->id]]);
$this->writeln("Création du groupe Ninegate = ".$namegroup);
if(!$simulate) {
$group=new Group();
$group->setLabel($namegroup);
$group->setDescription($onlygroup->description);
$group->setFgopen(false);
$group->setFgcanshare(true);
$group->setFgcancreatepage(false);
$group->setFgcancreatecalendar(false);
$group->setFgcancreateblog(false);
$group->setFgcancreateproject(false);
$group->setFgall(false);
$group->setFgtemplate(false);
$group->setOwner($user);
$group->setPagetemplate($pagetemplate);
$group->setIdonlyoffice($onlygroup->id);
$group->setNosynconly(true);
$this->em->persist($group);
$this->em->flush();
// On ajoute le propriétaire en tant que membre du groupe
$this->addMember($group,$user,true);
// On controle que le groupe a bien page / calendrier / blog / project
$this->ctrlFgcanshare($group,$user,$pagetemplate);
}
// Rattachement des membres au groupe
$group=$this->em->getRepository("CadolesCoreBundle:Group")->findOneBy(["idonlyoffice"=>$onlygroup->id]);
$members = \Unirest\Request::get($this->only_url.'/project/'.$onlygroup->id.'/team',$headers);
if($this->koresponse($members)) return 0;
foreach($members->body->response as $member) {
// Si non propriétaire du groupe
if($member->userName!=$onlyusers[$onlygroup->responsible->id]) {
$user=$this->em->getRepository("CadolesCoreBundle:User")->findOneBy(["username"=>$member->userName]);
if(!$user) {
$this->writelnred("ERREUR Membre du group inexistant. Group = ".$namegroup." - ".$member->userName);
if(!array_key_exists($member->id,$kousers)) {
$kousers[$member->id]=$member->displayName;
$string=$member->userName.";".$member->firstName.";".$member->lastName.";".$member->email.";Autres;ROLE_USER";
$this->filesystem->appendToFile($this->rootlog.'toimportfromonly.csv', $string."\n");
}
}
else {
$this->writeln("Rattachement utilisateur. Group = ".$namegroup." - User = ".$member->userName);
if(!$simulate&&$group) {
// On s'assure qu'il n'es pas déjà rattaché
$usergroup=$this->em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$user,"group"=>$group]);
if(!$usergroup) {
$this->addMember($group,$user,false);
}
}
}
}
}
if(!$simulate) {
$this->em->persist($group);
$this->em->flush();
}
}
}
}
}
// Injection des groupes ninegate non existant dans only
$this->writeln('');
$this->writeln('== INJECTION DES GROUPES NINEGATE====================');
$groups=$this->em->getRepository("CadolesCoreBundle:Group")->findBy(["fgcanshare"=>true]);
foreach($groups as $group) {
// Info du groupe
$grouptitle=$group->getLabel();
$groupdescription=$group->getDescription();
$groupowner=$group->getOwner();
$groupisprivate=true;
$tocreate=false;
// Si pas de propriétaire de projet on le rattache à admin
if(!$groupowner)
$groupowner=$this->em->getRepository("CadolesCoreBundle:User")->findOneBy(["username"=>"admin"]);
if($groupowner) {
// On recherche le propriétaire du groupe dans only
$respuser = \Unirest\Request::get($this->only_url.'/people/'.$groupowner->getUsername(),$headers);
// Là normalement on a forcement une réponse positive
if(!$this->koresponse($respuser)) {
// Le groupe a un identifiant only, on le recherche via cet ID
if($group->getIdonlyoffice()) {
// On recherche le groupe dans only
$respgroup = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice(),$headers);
// Si le projet existe
if(!$this->koresponse($respgroup)) {
// On regarde s'il y a des changement
if($respgroup->body->response->responsible->userName!=$groupowner->getUsername()||$respgroup->body->response->status!=0||$respgroup->body->response->title!=$grouptitle||$respgroup->body->response->description!=$groupdescription||$respgroup->body->response->isPrivate!=$groupisprivate) {
$this->writeln("Modification du groupe dans Only. Group = ".$group->getLabel());
if(!$simulate) {
// Liste des membres Only
$membersOnly=[];
$respmember = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice().'/team',$headers);
if($this->koresponse($respmember)) {
$this->writelnred("ERREUR SUR RECUPERATION DES MEMBRES du Group = ".$group->getLabel());
continue;
}
foreach($respmember->body->response as $member) {
array_push($membersOnly,$member->id);
}
// On modifie le groupe only
$query = array(
'status' => 0,
'title' => $grouptitle,
'description' => $groupdescription,
'responsibleId' => $respuser->body->response->id,
'participants' => $membersOnly,
'private' => $groupisprivate,
'notify' => true
);
$body = \Unirest\Request\Body::json($query);
$respmodif = \Unirest\Request::put($this->only_url.'/project/'.$respgroup->body->response->id,$headers,$body);
if($this->koresponse($respmodif)) {
$this->writelnred("ERREUR SUR MODIFICATION du Group = ".$group->getLabel());
}
}
}
}
// Sinon c'est qu'il a été supprimé via only : il faut donc le regénérer
else {
$tocreate=true;
}
}
// Sinon c'est que l'on doit le créer dans Only
else {
$tocreate=true;
}
// Création
if($tocreate) {
$this->writeln("Création du groupe dans Only. Group = ".$group->getLabel());
if(!$simulate) {
$query = array(
'title' => $grouptitle,
'description' => $groupdescription,
'responsibleId' => $respuser->body->response->id,
'private' => $groupisprivate,
'notify' => true
);
$body = \Unirest\Request\Body::json($query);
$respsubmit = \Unirest\Request::post($this->only_url.'/project/withSecurity',$headers,$body);
if($this->koresponse($respsubmit)) {
$this->writelnred("ERREUR SUR CREATION du Group = ".$group->getLabel());
}
else {
$group->setIdonlyoffice($respsubmit->body->response->id);
$this->em->persist($group);
$this->em->flush();
}
}
}
}
}
}
$this->writeln('');
$this->writeln('== RATTACHER LES UTILISATEURS =======================');
$groups=$this->em->getRepository("CadolesCoreBundle:Group")->findBy(["fgcanshare"=>true]);
foreach($groups as $group) {
// Si pas d'erreur on doit avoir à présent le projet dans only rattaché à un groupe ninegate
// On va pouvoir s'occuper des membres du groupes
if($group->getIdonlyoffice()) {
// Liste des membres Ninegate
$membersNingate=[];
$usergroups=$this->em->getRepository("CadolesCoreBundle:UserGroup")->findBy(["group"=>$group]);
foreach($usergroups as $member) {
array_push($membersNingate,$member->getUser()->getUsername());
}
// Si groupe sans propriétaire on ajoute forcement admin à la liste des membres du groupe
if(!$group->getOwner()) {
array_push($membersNingate,"admin");
}
// Liste des membres Only
$membersOnly=[];
$respmember = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice().'/team',$headers);
if($this->koresponse($respmember)) {
$this->writelnred("ERREUR SUR RECUPERATION DES MEMBRES du Group = ".$group->getLabel());
continue;
}
foreach($respmember->body->response as $member) {
array_push($membersOnly,$member->userName);
}
// On vérifie que chq membre Ninegate sont dans les membres Only et si pas le cas on le rattache
foreach($membersNingate as $member) {
if(!in_array($member,$membersOnly)) {
$this->writeln("Rattachement au groupe ".$group->getLabel()." l'utilisateur ".$member);
if(!$simulate) {
$respuser = \Unirest\Request::get($this->only_url.'/people/'.$member,$headers);
if($this->koresponse($respuser)) {
$this->writelnred("ERREUR Utilisateur inexistant dans only = ".$member);
}
else {
$query = array('userId' => $respuser->body->response->id);
$body = \Unirest\Request\Body::json($query);
$respsubmit = \Unirest\Request::post($this->only_url.'/project/'.$group->getIdonlyoffice().'/team',$headers,$body);
if($this->koresponse($respsubmit)) {
$this->writelnred("ERREUR SUR RATACHEMENT");
}
}
}
}
}
// On vérifie que chq membre Ninegate sont dans les membres Only et si pas le cas on le rattache
foreach($membersOnly as $member) {
if(!in_array($member,$membersNingate)) {
$this->writeln("Detachement au groupe ".$group->getLabel()." l'utilisateur ".$member);
if(!$simulate) {
$respuser = \Unirest\Request::get($this->only_url.'/people/'.$member,$headers);
if($this->koresponse($respuser)) {
$this->writelnred("ERREUR Utilisateur inexistant dans only = ".$member);
}
else {
$query = array('userId' => $respuser->body->response->id);
$body = \Unirest\Request\Body::json($query);
$respsubmit = \Unirest\Request::delete($this->only_url.'/project/'.$group->getIdonlyoffice().'/team',$headers,$body);
if($this->koresponse($respsubmit)) {
$this->writelnred("ERREUR SUR DETACHEMENT");
}
}
}
}
}
}
}
$this->writeln('');
$this->writeln('== FERMER LES GROUPES FONCTIONNELS====================');
$groups=$this->em->getRepository("CadolesCoreBundle:Group")->findBy(["fgcanshare"=>false]);
foreach($groups as $group) {
if($group->getIdonlyoffice()) {
$grouptitle=$group->getLabel();
$groupdescription=$group->getDescription();
$groupowner=$group->getOwner();
// Si pas de propriétaire de projet on le rattache à admin
if(!$groupowner)
$groupowner=$this->em->getRepository("CadolesCoreBundle:User")->findOneBy(["username"=>"admin"]);
if($groupowner) {
// On recherche le propriétaire du groupe dans only
$respuser = \Unirest\Request::get($this->only_url.'/people/'.$groupowner->getUsername(),$headers);
if(!$this->koresponse($respuser)) {
$respgroup = \Unirest\Request::get($this->only_url.'/project/'.$group->getIdonlyoffice(),$headers);
if(!$this->koresponse($respgroup)) {
if($respgroup->body->response->status!=1) {
$this->writeln("Fermer le groupe dans Only. Group = ".$group->getLabel());
if(!$simulate) {
// On ferme le projet
$query = array(
'title' => $grouptitle,
'description' => $groupdescription,
'responsibleId' => $respuser->body->response->id,
'participants' => $respgroup->body->response->participants,
'private' => $groupisprivate,
'status' => 1,
'notify' => true
);
$body = \Unirest\Request\Body::json($query);
$respupdate = \Unirest\Request::put($this->only_url.'/project/'.$group->getIdonlyoffice(),$headers,$body);
}
}
}
}
}
}
}
}
$this->writeln('');
return 1;
}
function koresponse($response) {
if($response->code>=Response::HTTP_BAD_REQUEST) {
$this->writelnred("ERREUR ".$response->code);
if(property_exists($response,"body") && property_exists($response->body,"error")) $this->writelnred("ERREUR ".$response->body->error->message);;
return true;
}
return false;
}
private function writelnred($string) {
$this->output->writeln('<fg=red>'.$string.'</>');
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
}
private function writeln($string) {
$this->output->writeln($string);
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
}
private function addMember($group,$user,$fgmanager) {
$key = Uuid::uuid4();
$usergroup=new Usergroup;
$usergroup->setUser($user);
$usergroup->setGroup($group);
$usergroup->setFgmanager($fgmanager);
$usergroup->setKeyvalue($key);
$this->em->persist($usergroup);
$this->em->flush();
}
private function ctrlFgcanshare($group,$user,$pagetemplate) {
if($group->getFgcanshare()) {
// On regarde s'il a au moins une page
if($group->getPages()->isEmpty()) {
$page=$this->em->getRepository("CadolesPortalBundle:Page")->clonePage(null,$pagetemplate);
$group->addPage($page);
$page->setName($group->getLabel());
$page->setUser($user);
$this->em->persist($page);
$this->em->persist($group);
$this->em->flush();
}
// On regarde s'il a au moins un calendrier
if($group->getCalendars()->isEmpty()) {
$calendar=new Calendar();
$key = Uuid::uuid4();
$calendar->setName($group->getLabel());
$calendar->setKeyvalue($key);
$calendar->addGroup($group);
$calendar->setColor($group->getColor());
$calendar->setType(0);
$calendar->setUser($user);
$this->em->persist($calendar);
$this->em->flush();
}
// On regarde s'il a au moins un blog
if($group->getBlogs()->isEmpty()) {
$blog=new Blog();
$blog->setName($group->getLabel());
$blog->addGroup($group);
$blog->setUser($user);
$this->em->persist($blog);
$this->em->flush();
}
// On regarde s'il a au moins un project
if($group->getProjects()->isEmpty()) {
$project=new Project();
$project->setName($group->getLabel());
$project->addGroup($group);
$project->setUser($user);
$this->em->persist($project);
$this->em->flush();
}
}
}
}

View File

@ -22,6 +22,7 @@ class PurgeFileCommand extends Command
private $output;
private $filesystem;
private $rootlog;
private $byexec;
protected function configure()
{
@ -30,7 +31,8 @@ class PurgeFileCommand extends Command
->setDescription('Purge Files')
->setHelp('This command Purge the obsolete Files')
->addArgument('cronid', InputArgument::OPTIONAL, 'ID Cron Job')
->addArgument('lastchance', InputArgument::OPTIONAL, 'Lastchance to run the cron')
->addArgument('lastchance', InputArgument::OPTIONAL, 'Lastchance to run the cron')
->addArgument('byexec', InputArgument::OPTIONAL, 'By Cron:Exec')
;
}
@ -43,6 +45,10 @@ class PurgeFileCommand extends Command
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
$alias = $this->container->getParameter('alias');
// Le script est-il executé via Cron:Exec
$this->byexec = $input->getArgument('byexec');
if($this->byexec=="") $this->byexec=false;
$this->writelnred('');
$this->writelnred('== Core:PurgeFile');
$this->writelnred('==========================================================================================================');
@ -59,7 +65,7 @@ class PurgeFileCommand extends Command
if($fs->exists($directory)) {
$finder = new Finder();
$finder->in($directory)->directories()->exclude("thumb");
$finder->in($directory)->directories()->exclude("thumb")->exclude("thumbmini");
foreach (iterator_to_array($finder) as $file) {
$name = $file->getRelativePathname();
@ -78,8 +84,6 @@ class PurgeFileCommand extends Command
}
break;
}
}
}
@ -110,6 +114,17 @@ class PurgeFileCommand extends Command
}
}
$fs = new Filesystem();
$users=$this->em->getRepository("CadolesCoreBundle:User")->findAll();
foreach($users as $user) {
if(!$fs->exists($directory."/".$user->getAvatar())) {
$this->writeln($user->getUsername());
$user->setAvatar("noavatar.png");
$this->em->persist($user);
$this->em->flush();
}
}
// /web/uploads/header
$this->writelnred('');
$this->writelnred('== Directory = Header');
@ -179,8 +194,9 @@ class PurgeFileCommand extends Command
foreach (iterator_to_array($finder) as $file) {
$name = $file->getRelativePathname();
if($name!="logo.png") {
$entity=$this->em->getRepository("CadolesCoreBundle:Niveau01")->findBy(["logo"=>"uploads/niveau01/".$name]);
if(!$entity) {
$logo=$this->em->getRepository("CadolesCoreBundle:Niveau01")->findBy(["logo"=>"uploads/niveau01/".$name]);
$header=$this->em->getRepository("CadolesCoreBundle:Niveau01")->findBy(["header"=>"uploads/niveau01/".$name]);
if(!$logo&&!$header) {
$this->writeln($name);
$url=$directory."/".$name;
if($fs->exists($url)) {
@ -243,6 +259,16 @@ class PurgeFileCommand extends Command
}
}
$directory=$this->container->get('kernel')->getRootDir()."/../web";
$icons=$this->em->getRepository("CadolesPortalBundle:Icon")->findAll();
foreach($icons as $icon) {
if(!$fs->exists($directory."/".$icon->getLabel())) {
$this->writeln($directory."/".$icon->getLabel());
$this->em->remove($icon);
$this->em->flush();
}
}
// /web/uploads/blogarticle
$this->writelnred('');
$this->writelnred('== Directory = Blog Article');
@ -312,7 +338,7 @@ class PurgeFileCommand extends Command
if($result) $find=true;
}
// Si pas trouvé on la cherche dans les blogs
// Si pas trouvé on la cherche dans les blogarticle
if(!$find) {
$result = $this->em
->getRepository("CadolesPortalBundle:Blogarticle")->createQueryBuilder('blogarticle')
@ -322,6 +348,16 @@ class PurgeFileCommand extends Command
if($result) $find=true;
}
// Si pas trouvé on la cherche dans les blogcomment
if(!$find) {
$result = $this->em
->getRepository("CadolesPortalBundle:Blogcomment")->createQueryBuilder('blogcomment')
->where('blogcomment.description LIKE :tofind')
->setParameter('tofind', '%'.$tofind.'%')
->getQuery()->getResult();
if($result) $find=true;
}
// Si pas trouvé on supprime
if(!$find) {
$this->writeln($name);
@ -349,9 +385,11 @@ class PurgeFileCommand extends Command
private function writelnred($string) {
$this->output->writeln('<fg=red>'.$string.'</>');
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
if($this->byexec) $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n");
}
private function writeln($string) {
$this->output->writeln($string);
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
if($this->byexec) $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n");
}
}

View File

@ -0,0 +1,416 @@
<?php
namespace Cadoles\CoreBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpKernel\KernelInterface;
use Doctrine\DBAL\Connection as DBALConnection;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Id\AssignedGenerator;
use Cadoles\CoreBundle\Entity\Script;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\PortalBundle\Entity\Project;
use Cadoles\PortalBundle\Entity\Pagewidget;
global $bdd01;
global $config;
class ScriptCommand extends Command
{
private $container;
private $em;
private $output;
private $filesystem;
private $rootlog;
protected function configure()
{
$this
->setName('Core:Script')
->setDescription('Lauch Script')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->container = $this->getApplication()->getKernel()->getContainer();
$this->em = $this->container->get('doctrine')->getEntityManager();
$this->output = $output;
$this->filesystem = new Filesystem();
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"visibletrue"]);
if(!$script) {
$this->writelnred("== SCRIPT = visibletrue");
$this->visibletrue();
$script=new Script();
$script->setName("visibletrue");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"setusersniveau"]);
if(!$script) {
$this->writelnred("== SCRIPT = setusersniveau");
$this->setusersniveau();
$script=new Script();
$script->setName("setusersniveau");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"setfgcancreateproject"]);
if(!$script) {
$this->writelnred("== SCRIPT = setfgcancreateproject");
$this->setfgcancreateproject();
$script=new Script();
$script->setName("setfgcancreateproject");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"createproject"]);
if(!$script) {
$this->writelnred("== SCRIPT = createproject");
$this->createproject();
$script=new Script();
$script->setName("createproject");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"createthumbmini"]);
if(!$script) {
$this->writelnred("== SCRIPT = createthumbmini");
$this->createthumbmini();
$script=new Script();
$script->setName("createthumbmini");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"createwidgetproject"]);
if(!$script) {
$this->writelnred("== SCRIPT = createwidgetproject");
$this->createwidgetproject();
$script=new Script();
$script->setName("createwidgetproject");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"renamegroup"]);
if(!$script) {
$this->writelnred("== SCRIPT = renamegroup");
$this->renamegroup();
$script=new Script();
$script->setName("renamegroup");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
return 1;
}
private function visibletrue() {
$users = $this->em->getRepository('CadolesCoreBundle:User')->findAll();
foreach($users as $user) {
if(!$user->getVisible()) {
$this->writeln($user->getUsername());
$user->setVisible(true);
$this->em->persist($user);
$this->em->flush();
}
}
}
private function setusersniveau() {
$users = $this->em->getRepository('CadolesCoreBundle:User')->findAll();
foreach($users as $user) {
$this->writeln($user->getUsername());
$user->setLabelniveau01($user->getNiveau01()->getLabel());
$user->setLabelniveau02(($user->getNiveau02()?$user->getNiveau02()->getLabel():null));
$this->em->persist($user);
$this->em->flush();
}
}
private function setfgcancreateproject() {
$group=$this->em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgall'=>true));
if ($group) {
$group->setFgcancreateproject(true);
$this->em->persist($group);
$this->em->flush();
}
}
private function createproject() {
$groups=$this->em->getRepository('CadolesCoreBundle:Group')->findBy(array('fgcanshare'=>true));
foreach($groups as $group) {
// On regarde s'il a au moins un project
if($group->getProjects()->isEmpty()) {
$project=new Project();
$project->setName($group->getLabel());
$project->addGroup($group);
$project->setUser($group->getOwner());
$this->em->persist($project);
$this->em->flush();
}
}
}
private function createthumbmini() {
$directory=$this->container->get('kernel')->getRootDir()."/../uploads/file";
$files=[];
$fs = new Filesystem();
if($fs->exists($directory)) {
$finder = new Finder();
$finder->in($directory)->directories()->exclude("thumb")->exclude("thumbmini");
foreach (iterator_to_array($finder) as $rep) {
$finder2 = new Finder();
if($fs->exists($rep."/thumb")) {
$finder2->sortByName()->in($rep."/thumb");
foreach ($finder2 as $file) {
if(!$fs->exists($rep."/thumbmini/".$file->getRelativePathname())) {
$this->writeln($file->getRelativePathname());
$fs->mkdir($rep."/thumbmini");
$fs->copy($rep."/thumb/".$file->getRelativePathname(),$rep."/thumbmini/".$file->getRelativePathname());
$max_width=60;
$width = $this->getWidth($rep."/thumbmini/".$file->getRelativePathname());
$height = $this->getHeight($rep."/thumbmini/".$file->getRelativePathname());
$scale = $max_width/$width;
$this->resizeImage($rep."/thumbmini/".$file->getRelativePathname(),$width,$height,$scale);
$fs->chown($rep."/thumbmini/".$file->getRelativePathname(), 'www-data');
}
}
}
}
}
}
private function createwidgetproject(){
$entityPage = $this->em->getRepository('CadolesPortalBundle:Page')->find(-110);
if($entityPage) {
$fields=["fields"=>[]];
$metadata = $this->em->getClassMetaData('CadolesPortalBundle:Pagewidget');
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_AUTO);
$pages=$this->em->getRepository('CadolesPortalBundle:Page')->findBy(["page"=>$entityPage]);
foreach($pages as $page) {
$this->addWidget2Page($page,-1800,"R1C1",1,"Taches du groupe",true,$fields);
}
$metadata = $this->em->getClassMetaData('CadolesPortalBundle:Pagewidget');
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
$metadata->setIdGenerator(new AssignedGenerator());
$this->addWidget(-145,$entityPage,-1800,"R1C1",1,"Taches du groupe",true,$fields);
}
}
private function renamegroup(){
$groups = $this->em->getRepository('CadolesCoreBundle:Group')->findAll();
foreach($groups as $group) {
// Si présence d'un = dans le label
if(stripos($group->getLabel(),"=")!==false) {
$newname=str_replace("=","-",$group->getLabel());
$this->writeln("Renommer groupe = ".$group->getLabel());
// Renommer les pages
$pages = $this->em->getRepository('CadolesPortalBundle:Page')->findBy(["name"=>$group->getLabel()]);
foreach($pages as $page) {
$page->setName($newname);
$this->em->persist($page);
$this->em->flush();
}
// Renommer calendrier
$calendars = $this->em->getRepository('CadolesPortalBundle:Calendar')->findBy(["name"=>$group->getLabel()]);
foreach($calendars as $calendar) {
$calendar->setName($newname);
$this->em->persist($calendar);
$this->em->flush();
}
// Renommer blog
$blogs = $this->em->getRepository('CadolesPortalBundle:Blog')->findBy(["name"=>$group->getLabel()]);
foreach($blogs as $blog) {
$blog->setName($newname);
$this->em->persist($blog);
$this->em->flush();
}
// Renommer projet
$projects = $this->em->getRepository('CadolesPortalBundle:Project')->findBy(["name"=>$group->getLabel()]);
foreach($projects as $project) {
$project->setName($newname);
$this->em->persist($project);
$this->em->flush();
}
$group->setLabel($newname);
$this->em->persist($group);
$this->em->flush();
}
}
}
private function writelnred($string) {
$this->output->writeln('<fg=red>'.$string.'</>');
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
}
private function writeln($string) {
$this->output->writeln($string);
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
}
protected function getHeight($image) {
$size = getimagesize($image);
$height = $size[1];
return $height;
}
// Cacul de la largeur
protected function getWidth($image) {
$size = getimagesize($image);
$width = $size[0];
return $width;
}
protected function resizeImage($image,$width,$height,$scale) {
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
$newImage = imagecreatetruecolor( $newImageWidth, $newImageHeight );
imagealphablending( $newImage, false );
imagesavealpha( $newImage, true );
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
switch($imageType) {
case "image/gif":
imagegif($newImage,$image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$image,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$image);
break;
}
chmod($image, 0640);
return $image;
}
private function addWidget($id,$entityPage,$widgetid,$loc,$order,$title,$border,$fields) {
$entityPagewidget = $this->em->getRepository('CadolesPortalBundle:Pagewidget')->find($id);
if(!$entityPagewidget) {
$entityWidget = $this->em->getRepository('CadolesPortalBundle:Widget')->find($widgetid);
if($entityWidget) {
$entityPagewidget = new Pagewidget();
$entityPagewidget->setId($id);
$entityPagewidget->setLoc($loc);
$entityPagewidget->setRoworder($order);
$entityPagewidget->setName($title);
$entityPagewidget->setHeight($entityWidget->getHeight());
$entityPagewidget->setAutoajust($entityWidget->getAutoajust());
$entityPagewidget->setBorder($border);
$entityPagewidget->setOpened($entityWidget->getOpened());
$entityPagewidget->setIcon($entityWidget->getIcon());
$entityPagewidget->setPage($entityPage);
$entityPagewidget->setWidget($entityWidget);
$entityPagewidget->setParameter($fields);
$this->em->persist($entityPagewidget);
$this->em->flush();
}
}
}
private function addWidget2Page($entityPage,$widgetid,$loc,$order,$title,$border,$fields) {
$entityWidget = $this->em->getRepository('CadolesPortalBundle:Widget')->find($widgetid);
if($entityWidget) {
$entityPagewidget = $this->em->getRepository('CadolesPortalBundle:Pagewidget')->findOneBy(["page"=>$entityPage,"widget"=>$entityWidget]);
if(!$entityPagewidget) {
$entityPagewidget = new Pagewidget();
$entityPagewidget->setLoc($loc);
$entityPagewidget->setRoworder($order);
$entityPagewidget->setName($title);
$entityPagewidget->setHeight($entityWidget->getHeight());
$entityPagewidget->setAutoajust($entityWidget->getAutoajust());
$entityPagewidget->setBorder($border);
$entityPagewidget->setOpened($entityWidget->getOpened());
$entityPagewidget->setIcon($entityWidget->getIcon());
$entityPagewidget->setPage($entityPage);
$entityPagewidget->setWidget($entityWidget);
$entityPagewidget->setParameter($fields);
$this->em->persist($entityPagewidget);
$this->em->flush();
}
}
}
}

View File

@ -0,0 +1,281 @@
<?php
namespace Cadoles\CoreBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpKernel\KernelInterface;
use Doctrine\DBAL\Connection as DBALConnection;
use Doctrine\ORM\EntityManager;
use Symfony\Component\Validator\Constraints\DateTime;
use Cadoles\CoreBundle\Entity\Statistic;
use function GuzzleHttp\json_encode;
class StatisticCommand extends Command
{
private $container;
private $em;
private $output;
private $filesystem;
private $rootlog;
private $byexec;
protected function configure()
{
$this
->setName('Core:Statistic')
->setDescription('Calculate Statistic')
->setHelp('This command Calculate Statistic')
->addArgument('cronid', InputArgument::OPTIONAL, 'ID Cron Job')
->addArgument('lastchance', InputArgument::OPTIONAL, 'Lastchance to run the cron')
->addArgument('byexec', InputArgument::OPTIONAL, 'By Cron:Exec')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->container = $this->getApplication()->getKernel()->getContainer();
$this->em = $this->container->get('doctrine')->getEntityManager();
$this->output = $output;
$this->filesystem = new Filesystem();
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
$alias = $this->container->getParameter('alias');
// Le script est-il executé via Cron:Exec
$this->byexec = $input->getArgument('byexec');
if($this->byexec=="") $this->byexec=false;
$this->writelnred('');
$this->writelnred('== Core:Statistic');
$this->writelnred('==========================================================================================================');
$now=new \DateTime('now');
$yesterday=clone $now;
$yesterday->sub(new \DateInterval('P1D'));
$groups=$this->em->getRepository("CadolesCoreBundle:Group")->findBy(["fgcanshare"=>true]);
// totcptvisite
$this->writelnred('');
$this->writelnred('== totcptvisite');
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptvisite"]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("totcptvisite");
$stat->setValue([]);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select('SUM(user.visitecpt) as cpt')
->from('CadolesCoreBundle:User','user')
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
// totcptvisitegroup
$this->writelnred('');
$this->writelnred('== totcptvisitegroup');
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptvisitegroup"]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("totcptvisitegroup");
$stat->setValue([]);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select('SUM(usergroup.visitecpt) as cpt')
->from('CadolesCoreBundle:UserGroup','usergroup')
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
// totcptmessage
$this->writelnred('');
$this->writelnred('== totcptmessage');
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptmessage"]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("totcptmessage");
$stat->setValue([]);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select('COUNT(message.id) as cpt')
->from('CadolesWebsocketBundle:Message','message')
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
// totcptblogarticle
$this->writelnred('');
$this->writelnred('== totcptblogarticle');
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptblogarticle"]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("totcptblogarticle");
$stat->setValue([]);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select('COUNT(blogarticle.id) as cpt')
->from('CadolesPortalBundle:Blogarticle','blogarticle')
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
// totcptprojecttask
$this->writelnred('');
$this->writelnred('== totcptprojecttask');
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptprojecttask"]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("totcptprojecttask");
$stat->setValue([]);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select('COUNT(projecttask.id) as cpt')
->from('CadolesPortalBundle:Projecttask','projecttask')
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
// groupcptvisite
$this->writelnred('');
$this->writelnred('== groupcptvisite');
foreach($groups as $group) {
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptvisite","group"=>$group]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("groupcptvisite");
$stat->setValue([]);
$stat->setGroup($group);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select(['SUM(usergroup.visitecpt) as cpt'])
->from('CadolesCoreBundle:UserGroup','usergroup')
->Where('usergroup.group=:group')
->setParameter('group', $group)
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
}
// groupcptmessage
$this->writelnred('');
$this->writelnred('== groupcptmessage');
foreach($groups as $group) {
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptmessage","group"=>$group]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("groupcptmessage");
$stat->setValue([]);
$stat->setGroup($group);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select('COUNT(message.id) as cpt')
->from('CadolesWebsocketBundle:Message','message')
->Where('message.group=:group')
->setParameter('group', $group)
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
}
// groupcptblogarticle
$this->writelnred('');
$this->writelnred('== groupcptblogarticle');
foreach($groups as $group) {
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptblogarticle","group"=>$group]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("groupcptblogarticle");
$stat->setValue([]);
$stat->setGroup($group);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select('COUNT(blogarticle.id) as cpt')
->from('CadolesPortalBundle:Blogarticle','blogarticle')
->from('CadolesPortalBundle:Blog','blog')
->Where('blogarticle.blog=blog')
->andwhere(":group MEMBER OF blog.groups")
->setParameter('group', $group)
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
}
// groupcptprojecttask
$this->writelnred('');
$this->writelnred('== groupcptprojecttask');
foreach($groups as $group) {
$stat=$this->em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptprojecttask","group"=>$group]);
if(!$stat) {
$stat=new Statistic();
$stat->setKeyvalue("groupcptprojecttask");
$stat->setValue([]);
$stat->setGroup($group);
}
$value=$stat->getValue();
$cpt= $this->em->createQueryBuilder()
->select('COUNT(projecttask.id) as cpt')
->from('CadolesPortalBundle:Projecttask','projecttask')
->from('CadolesPortalBundle:Project','project')
->Where('projecttask.project=project')
->andwhere(":group MEMBER OF project.groups")
->setParameter('group', $group)
->getQuery()->getOneOrNullResult();
$value[$now->format("Y-m-d")]=($cpt["cpt"]?$cpt["cpt"]:0);
$stat->setValue($value);
$this->em->persist($stat);
$this->em->flush();
}
$this->writeln('');
return 1;
}
private function writelnred($string) {
$this->output->writeln('<fg=red>'.$string.'</>');
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
if($this->byexec) $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n");
}
private function writeln($string) {
$this->output->writeln($string);
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
if($this->byexec) $this->filesystem->appendToFile($this->rootlog.'exec.log', $string."\n");
}
}

View File

@ -18,6 +18,7 @@ use Cadoles\CoreBundle\Entity\Group;
use Cadoles\CoreBundle\Entity\UserGroup;
use Cadoles\PortalBundle\Entity\Calendar;
use Cadoles\PortalBundle\Entity\Blog;
use Cadoles\PortalBundle\Entity\Project;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
@ -100,6 +101,8 @@ class SynchroCommand extends Command
$ldap_lastname = $this->container->getParameter('ldap_lastname');
$ldap_email = $this->container->getParameter('ldap_email');
$ldap_usersadmin = $this->container->getParameter('ldap_usersadmin');
$scribe_group = $this->container->getParameter('scribe_group');
$scribe_master = $this->container->getParameter('scribe_master');
$fieldstoread = array($ldap_username,$ldap_firstname,$ldap_lastname,$ldap_email);
$ldapusers = array();
$ldapmails = array();
@ -110,28 +113,29 @@ class SynchroCommand extends Command
// Eleves
$ldapfilter="(&(uid=*)(ENTPersonProfils=eleve))";
$label="PROFIL = Elèves";
$label="PROFIL - Elèves";
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
// Enseignants
$ldapfilter="(|(&(uid=*)(ENTPersonProfils=enseignant))(&(uid=*)(typeadmin=0))(&(uid=*)(typeadmin=2)))";
$label="PROFIL = Enseignants";
$label="PROFIL - Enseignants";
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
// Responsables
$ldapfilter="(&(uid=*)(ENTPersonProfils=responsable))";
$label="PROFIL = Responsables";
$label="PROFIL - Responsables";
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
// Administratifs
$ldapfilter="(&(uid=*)(ENTPersonProfils=administratif))";
$label="PROFIL = Administratifs";
$label="PROFIL - Administratifs";
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
// Classes
$this->writeln('');
$this->writeln('== CLASSES ==========================================');
$results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
@ -139,9 +143,35 @@ class SynchroCommand extends Command
$cn=$result["cn"];
$ldapfilter="(|(&(type=Classe)(cn=$cn))(&(type=Equipe)(cn=profs-$cn))(&(ENTPersonProfils=Administratif)(divcod=$cn)))";
$label="CLASSE = ".$result["cn"];
$label="CLASSE - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
}
// Options
$this->writeln('');
$this->writeln('== OPTIONS ==========================================');
$results = $this->ldap->search("type=Option", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(|(&(type=Option)(cn=$cn))(&(type=Equipe)(cn=profs-$cn))(&(ENTPersonProfils=Administratif)(divcod=$cn)))";
$label="OPTION - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
}
// Groupes
$this->writeln('');
$this->writeln('== GROUPES ==========================================');
$results = $this->ldap->search("type=Groupe", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(&(type=Groupe)(cn=$cn))";
$label="GROUPE - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
}
}
@ -215,7 +245,8 @@ class SynchroCommand extends Command
if($user->getLastname()!=$result[$ldap_lastname]||$user->getFirstname()!=$result[$ldap_firstname]||$user->getEmail()!=$result[$ldap_email]||$toadmin) {
$usermail=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('email' => $result[$ldap_email]));
if($usermail!=$user) {
if($usermail&&$usermail!=$user) {
array_push($tberrors," - Modification dans Bundle impossible >> ".$result[$ldap_username]." un autre utilisateur a déjà ce mail = ".$result[$ldap_email]);
}
else {
@ -348,6 +379,62 @@ class SynchroCommand extends Command
$this->em->clear();
if($nbusers%1000==0) $this->writelnred(" == Nombre d'utilisateurs traités = $nbusers==");
}
$this->writeln('');
$this->writeln('== GROUPS ============================================');
// Pour chaque groupe annuaire on s'assure que le groupe existe bien dans l'annuaire
$groups=$this->em->getRepository('CadolesCoreBundle:Group')->findBy(["fgtemplate"=>true]);
foreach($groups as $group) {
if(stripos($group->getLabel(),"PROFIL - ")===false) {
$results = $this->ldap->search($group->getLdapfilter(), [], $this->ldap_basedn);
if(count($results)==0) {
$this->writeln(" - Suppression dans Bundle >> ".$group->getLabel());
if(!$simulate) {
if($group->getFgcanshare()) {
// Sur l'ensemble des pages liés
$pages=$group->getPages();
foreach($pages as $page) {
$getgroups=$page->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($getgroups->count()==1)
$this->em->remove($page);
}
// Sur l'ensemble des calendar liés
$calendars=$group->getCalendars();
foreach($calendars as $calendar) {
$getgroups=$calendar->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($getgroups->count()==1)
$this->em->remove($calendar);
}
// Sur l'ensemble des blog liés
$blogs=$group->getBlogs();
foreach($blogs as $blog) {
$getgroups=$blog->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($getgroups->count()==1)
$this->em->remove($blog);
}
// Sur l'ensemble des project liés
$projects=$group->getProjects();
foreach($projects as $project) {
$getgroups=$project->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($getgroups->count()==1)
$this->em->remove($project);
}
}
$this->em->remove($group);
$this->em->flush();
}
}
}
}
}
}
else {
@ -565,9 +652,14 @@ class SynchroCommand extends Command
$attrs["cadolesMember"]=array();
foreach($data->getUsers() as $usergroupe) {
array_push($attrs["memberuid"],$usergroupe->getUser()->getUsername());
array_push($attrs["cadolesMember"],$this->ldap->getUserDN($usergroupe->getUser()));
$this->writeln(' > '.$usergroupe->getUser()->getUsername());
if(!in_array($usergroupe->getUser()->getUsername(), $attrs["memberuid"])) {
array_push($attrs["memberuid"],$usergroupe->getUser()->getUsername());
array_push($attrs["cadolesMember"],$this->ldap->getUserDN($usergroupe->getUser()));
$this->writeln(' > '.$usergroupe->getUser()->getUsername());
}
else {
$this->writelnred(' > EXIST'.$usergroupe->getUser()->getUsername());
}
}
if(!$simulate) $this->ldap->ldapModify($dn, $attrs);
}
@ -620,7 +712,7 @@ class SynchroCommand extends Command
$criteria = '(cn=*)';
$subbranch=$baseGroup;
$results = $this->search($criteria, array('cn'), $subbranch);
$results = $this->ldap->search($criteria, array('cn'), $subbranch);
foreach($results as $result) {
$data = $this->em->getRepository('CadolesCoreBundle:Group')->findBy(array('label' => $result["cn"]));
if($data) $this->writeln(' - Existe dans bundle >> '.$result["cn"]);
@ -667,12 +759,13 @@ class SynchroCommand extends Command
$group=$this->em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgtemplate' => true, 'label' => $label));
if(!$group) {
$group=new Group();
$group->setFgcanshare($fgcanshare);
$group->setFgcancreatepage(false);
$group->setFgcancreateblog(false);
$group->setFgcancreatecalendar(false);
$group->setFgcancreatecalendar(false);
$group->setFgcancreateproject(false);
}
$group->setFgcanshare($fgcanshare);
$group->setLabel($label);
$group->setFgopen(false);
$group->setFgall(false);
@ -723,7 +816,18 @@ class SynchroCommand extends Command
$this->em->persist($blog);
$this->em->flush();
}
}
// On regarde s'il a au moins un project
if($group->getProjects()->isEmpty()) {
$project=new Project();
$project->setName($group->getLabel());
$project->addGroup($group);
$this->em->persist($project);
$this->em->flush();
}
}
}
@ -737,7 +841,8 @@ class SynchroCommand extends Command
// Si modèle scribe
$ldap_template = $this->container->getParameter('ldap_template');
if($ldap_template=="scribe") {
$scribe_master = $this->container->getParameter('scribe_master');
if($ldap_template=="scribe"&&$scribe_master) {
$ldapfilter="(|(&(uid=".$user->getUsername().")(ENTPersonProfils=enseignant))(&(uid=".$user->getUsername().")(typeadmin=0))(&(uid=".$user->getUsername().")(typeadmin=2)))";
$results = $this->ldap->search($ldapfilter, ['uid'], $this->ldap_basedn);
if($results) $member->setFgmanager(true);

View File

@ -185,73 +185,112 @@ class ConfigController extends Controller
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function datauserdefaultAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$config->setValue("");
$em->persist($config);
$em->flush();
return $this->redirectToRoute('cadoles_core_config_datauser');
}
public function datauserAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$session=$this->get('session');
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$fields=$config->getValue();
$fields=json_decode($fields,true);
if(!is_array($fields)) $fields=[];
if($fields=="") {
// Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
// Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
if(!array_key_exists("firstname",$fields)) {
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prénom";
}
if(!array_key_exists("visible",$fields)) {
$fields["visible"]["perm"]=2;
$fields["visible"]["label"]="Visible";
}
if(!array_key_exists("authlevel",$fields)) {
$fields["authlevel"]["perm"]=2;
$fields["authlevel"]["label"]="Niveau d'authentification";
}
if(!array_key_exists("belongingpopulation",$fields)) {
$fields["belongingpopulation"]["perm"]=2;
$fields["belongingpopulation"]["label"]="Population d'appartenance";
}
if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
}
if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
}
if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]="Niveau 02";
$fields["niveau02"]["label"]=$session->get('labelniveau02');
}
if(!array_key_exists("usualname",$fields)) {
$fields["usualname"]["perm"]=1;
$fields["usualname"]["label"]="Nom d'Usage";
}
if(!array_key_exists("gender",$fields)) {
$fields["gender"]["perm"]=1;
$fields["gender"]["label"]="Sexe";
}
if(!array_key_exists("givensname",$fields)) {
$fields["givensname"]["perm"]=1;
$fields["givensname"]["label"]="Autre Prénom";
}
if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
}
if(!array_key_exists("postaladress",$fields)) {
$fields["postaladress"]["perm"]=1;
$fields["postaladress"]["label"]="Adresse";
}
if(!array_key_exists("birthdate",$fields)) {
$fields["birthdate"]["perm"]=1;
$fields["birthdate"]["label"]="Date de Naissance";
}
if(!array_key_exists("birthcountry",$fields)) {
$fields["birthcountry"]["perm"]=1;
$fields["birthcountry"]["label"]="Pays de Naissance";
}
if(!array_key_exists("birthplace",$fields)) {
$fields["birthplace"]["perm"]=1;
$fields["birthplace"]["label"]="Ville de Naissance";
}
else {
$fields=json_decode($fields, true);
}
}
if(!array_key_exists("visite",$fields)) {
$fields["visite"]["perm"]=1;
$fields["visite"]["label"]="Visite";
}
if($session->get('viewniveau02')&&!array_key_exists("niveau02",$fields))
$fields["niveau02"]["perm"]=1;
elseif(!$session->get('viewniveau02'))
if(!$session->get('viewniveau02'))
unset($fields["niveau02"]);
if(array_key_exists("niveau02",$fields))
$fields["niveau02"]["label"]=$session->get('labelniveau02');
$form = $this->createForm(DatauserType::class,$config,array("mode"=>"datauser","fields" => $fields));
@ -282,6 +321,17 @@ class ConfigController extends Controller
]);
}
public function datausersdefaultAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$config->setValue("");
$em->persist($config);
$em->flush();
return $this->redirectToRoute('cadoles_core_config_datausers');
}
public function datausersAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
@ -289,50 +339,66 @@ class ConfigController extends Controller
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$fields=$config->getValue();
if($fields=="") {
// Valeur par défaut 0=caché / 3=visible
$fields=json_decode($fields, true);
if(!is_array($fields)) $fields=[];
// Valeur par défaut 0=caché / 3=visible
if(!array_key_exists("avatar",$fields)) {
$fields["avatar"]["perm"]=1;
$fields["avatar"]["label"]="Avatar";
}
if(!array_key_exists("login",$fields)) {
$fields["login"]["perm"]=1;
$fields["login"]["label"]="Login";
}
if(!array_key_exists("lastname",$fields)) {
$fields["lastname"]["perm"]=1;
$fields["lastname"]["label"]="Nom";
}
if(!array_key_exists("firstname",$fields)) {
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prenom";
}
if(!array_key_exists("email",$fields)) {
$fields["email"]["perm"]=1;
$fields["email"]["label"]="Email";
}
if(!array_key_exists("niveau01",$fields)) {
$fields["niveau01"]["perm"]=1;
$fields["niveau01"]["label"]="Niveau 01";
$fields["niveau01"]["label"]=$session->get('labelniveau01');
}
if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]="Niveau 02";
$fields["niveau02"]["label"]=$session->get('labelniveau02');
}
if(!array_key_exists("group",$fields)) {
$fields["group"]["perm"]=1;
$fields["group"]["label"]="Groupes";
}
if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
}
if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
}
if(!array_key_exists("role",$fields)) {
$fields["role"]["perm"]=1;
$fields["role"]["label"]="Rôles";
}
else {
$fields=json_decode($fields, true);
if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
}
if(!array_key_exists("visitedate",$fields)) {
$fields["visitedate"]["perm"]=1;
$fields["visitedate"]["label"]="Visite";
}
$fields["niveau01"]["label"]=$session->get('labelniveau01');
if($session->get('viewniveau02')&&!array_key_exists("niveau02",$fields))
$fields["niveau02"]["perm"]=1;
elseif(!$session->get('viewniveau02'))
if(!$session->get('viewniveau02'))
unset($fields["niveau02"]);
if(array_key_exists("niveau02",$fields))
$fields["niveau02"]["label"]=$session->get('labelniveau02');
$form = $this->createForm(DatauserType::class,$config,array("mode"=>"datausers","fields" => $fields));
// Récupération des data du formulaire

View File

@ -49,6 +49,10 @@ class CoreController extends Controller
// Récupération de la page encours
$id = $request->query->get('id');
// Récupération redirection potentielle
$gotoroute = $request->query->get('gotoroute');
$gotoid = $request->query->get('gotoid');
// L'utilisateur en cours
@ -57,6 +61,8 @@ class CoreController extends Controller
if($user) {
$notices=$em->getRepository("CadolesPortalBundle:Notice")->getNoticeToRead($user);
if(! $notices->isEmpty()) {
$notices=$em->getRepository("CadolesPortalBundle:Notice")->getNoticeUser($user,false);
return $this->render('CadolesPortalBundle:Notice:mustread.html.twig',[
'useheader' => true,
'usemenu' => false,
@ -97,8 +103,18 @@ class CoreController extends Controller
}
}
// Si niveau01 commence par autre = alors niveau01other obligatoire
$message="";
$niveau01=strtolower($user->getNiveau01()->getLabel());
if(stripos($niveau01,"autre")===0) {
if(!$user->getNiveau01other()) {
$toprofil=true;
$message="<br>Merci d'indiquer votre ".$this->getParameter("labelniveau01");
}
}
if($toprofil) {
return $this->redirect($this->generateUrl('cadoles_core_profil',array("info"=>"Merci de compléter votre profil")));
return $this->redirect($this->generateUrl('cadoles_core_user',array("info"=>"Merci de compléter votre profil".$message)));
}
}
@ -114,7 +130,7 @@ class CoreController extends Controller
return $this->render('CadolesPortalBundle:Page:default.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => false
'usesidebar' => false
]);
}
@ -129,7 +145,9 @@ class CoreController extends Controller
'groupsshared' => $groupsshared,
'canadd' => $this->get('session')->get('cancreatepage'),
'widgetsuser' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Widget")->getWidgetAccess("user"),
'widgetsgroup' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Widget")->getWidgetAccess("group")
'widgetsgroup' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Widget")->getWidgetAccess("group"),
'gotoroute' => $gotoroute,
'gotoid' => $gotoid,
]);
}

View File

@ -78,7 +78,7 @@ class FileController extends Controller
if($fs->exists($dir)) {
$finder = new Finder();
$finder->sortByName()->in($dir)->exclude('thumb');
$finder->sortByName()->in($dir)->exclude('thumb')->exclude("thumbmini");
$i=-1;
@ -180,6 +180,18 @@ class FileController extends Controller
$em->getRepository("CadolesPortalBundle:Page")->getPermission($this->getUser(),$page,$cansee,$canupdate);
if(!$cansee) throw $this->createNotFoundException('Permission denied');
break;
case "projecttask":
// Récupération de la tache
$projecttask=$em->getRepository("CadolesPortalBundle:Projecttask")->find($id);
if (!$projecttask) throw $this->createNotFoundException('Unable to find entity.');
// On s'assure que l'utilisateur à la permission de voir
$project=$projecttask->getProject();
$user=$this->getUser();
$em->getRepository("CadolesPortalBundle:Project")->getPermission($user,$project,$cansee,$canupdate,$canadd);
if(!$cansee) throw $this->createNotFoundException('Permission denied');
break;
}
}
}

View File

@ -10,6 +10,10 @@ use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\FormError;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Cadoles\CoreBundle\Entity\Group;
use Cadoles\CoreBundle\Entity\Usergroup;
@ -17,7 +21,9 @@ use Cadoles\CoreBundle\Entity\Usermodo;
use Cadoles\CoreBundle\Form\GroupType;
use Cadoles\PortalBundle\Entity\Calendar;
use Cadoles\PortalBundle\Entity\Blog;
use Cadoles\PortalBundle\Entity\Project;
use Cadoles\WebsocketBundle\Entity\Message;
use Symfony\Component\Security\Core\User\User;
class GroupController extends Controller
{
@ -25,6 +31,7 @@ class GroupController extends Controller
private $labelentity = 'CadolesCoreBundle:Group';
private $labeldata = 'group';
private $labeldatas = 'groups';
private $idpage;
public function listAction($access)
{
@ -75,7 +82,9 @@ class GroupController extends Controller
$qb=$em->createQueryBuilder();
$qb->select('COUNT(table)')
->from($this->labelentity,'table')
->leftJoin('CadolesCoreBundle:User', 'u', 'WITH', 'table.owner = u.id')
->where('table.label LIKE :value')
->orWhere('u.username LIKE :value')
->setParameter("value", "%".$search["value"]."%");
if($access=="user") {
$qb->from("CadolesCoreBundle:UserGroup","ug")
@ -100,43 +109,48 @@ class GroupController extends Controller
// Parcours des Enregistrement
$qb = $em->createQueryBuilder();
$qb->select('table')->from($this->labelentity,'table');
$qb ->select('table')
->from($this->labelentity,'table')
->leftJoin('CadolesCoreBundle:User', 'u', 'WITH', 'table.owner = u.id');
if($access=="user") {
$qb->from("CadolesCoreBundle:UserGroup","ug")
->andWhere(("table.fgcanshare=:flag"))
->andWhere("table.id=ug.group")
->andWhere(":user=ug.user")
->leftJoin('CadolesCoreBundle:User', 'u', 'WITH', 'table.owner = u.id')
->setParameter("flag", true)
->setParameter("user", $this->getUser());
}
if($search["value"]!="") {
$qb ->andwhere('table.label LIKE :value')
->orWhere('u.username LIKE :value')
->setParameter("value", "%".$search["value"]."%");
}
switch($order[0]["column"]) {
case 1 :
case 2 :
$qb->orderBy('table.label',$order[0]["dir"]);
break;
case 2 :
case 3 :
$qb->orderBy('table.fgopen',$order[0]["dir"]);
break;
case 4 :
case 5 :
$qb->orderBy('table.fgcanshare',$order[0]["dir"]);
break;
case 5 :
case 6 :
$qb->orderBy('table.owner',$order[0]["dir"]);
break;
case 6 :
case 7 :
$qb->orderBy('table.fgcancreatepage',$order[0]["dir"]);
break;
case 7 :
case 8 :
$qb->orderBy('table.fgcancreatecalendar',$order[0]["dir"]);
break;
case 8 :
case 9 :
$qb->orderBy('table.fgcancreateblog',$order[0]["dir"]);
break;
case 10 :
$qb->orderBy('table.fgcancreateproject',$order[0]["dir"]);
break;
}
$datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult();
@ -159,11 +173,15 @@ class GroupController extends Controller
if($data->getId()>0&&!$data->getFgall()&&!$data->getFgTemplate()&&$this->isGranted('ROLE_ADMIN')) $action.="<a href='".$this->generateUrl('cadoles_core_config_group_delete', array('id'=>$data->getId()))."'><i class='fa fa-trash fa-fw fa-2x'></i></a>";
if(!$data->getFgall()) $action .="<a href='".$this->generateUrl('cadoles_core_config_group_users', array('id'=>$data->getId()))."'><i class='fa fa-users fa-2x fa-fw'></i></a>";
if($data->getFgcanshare())
$action.="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_statistic', array('id'=>$data->getId()))."'><i class='fa fa-bar-chart-o fa-fw fa-2x'></i></a>";
}
else {
$fgproprio=($user==$data->getOwner());
$fgmanager=$this->getDoctrine()->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$data])->getFgmanager();
$fgmanager=false;
$usergroup=$this->getDoctrine()->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$data]);
if($usergroup) $fgmanager=$usergroup->getFgmanager();
// Modification possible uniquement si l'utilisateur est propriétaire du groupe
if($fgproprio) {
@ -176,9 +194,11 @@ class GroupController extends Controller
$action .="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_users', array('id'=>$data->getId()))."'><i class='fa fa-users fa-2x fa-fw'></i></a>";
}
else {
$action.="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_out', array('id'=>$data->getId()))."' data-method='out'><i class='fa fa-sign-out fa-fw fa-2x'></i></a>";
$action.="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_out', array('id'=>$data->getId()))."'><i class='fa fa-sign-out fa-fw fa-2x'></i></a>";
}
if($data->getFgcanshare())
$action.="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_statistic', array('id'=>$data->getId()))."'><i class='fa fa-bar-chart-o fa-fw fa-2x'></i></a>";
}
@ -186,14 +206,22 @@ class GroupController extends Controller
if($this->GetParameter("masteridentity")=="LDAP") $filtre=$data->getLdapfilter();
if($this->GetParameter("masteridentity")=="SSO") $filtre=$data->getAttributes();
if ($data->getIcon())
$groupinfo = "<img src='/".$this->container->getParameter('alias')."/".$data->getIcon()->getLabel()."' class='avatar' style='background-color:transparent'/>";
else
$groupinfo = "<img src='/".$this->container->getParameter('alias')."/uploads/icon/icon_pin.png' class='avatar' style='background-color:transparent'/>";
$userinfo="";
if($data->getOwner()) {
$userinfo.="<img src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getOwner()->getAvatar()."' class='avatar' style='margin:0px 5px 0px 0px;display:inline-block;'>";
$userinfo.=$data->getOwner()->getUsername();
$userinfo.="<img style='cursor:pointer' onClick='seeUser(".$data->getOwner()->getId().")' src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getOwner()->getAvatar()."' class='avatar' style='margin:0px 5px 0px 0px;display:inline-block;'>";
$userinfo.="<br>".$data->getOwner()->getUsername();
}
array_push($output["data"],array(
$action,
$groupinfo,
$data->getLabel(),
($data->getFgopen()?"oui":"non"),
$filtre,
@ -202,6 +230,7 @@ class GroupController extends Controller
($data->getFgcancreatepage()?"oui":"non"),
($data->getFgcancreatecalendar()?"oui":"non"),
($data->getFgcancreateblog()?"oui":"non"),
($data->getFgcancreateproject()?"oui":"non"),
)
);
}
@ -220,6 +249,7 @@ class GroupController extends Controller
$em = $this->getDoctrine()->getManager();
$group=$this->getData($id);
$this->canManager($group,$access);
$sub = $em->createQueryBuilder();
$sub->select("usergroup");
@ -331,9 +361,9 @@ class GroupController extends Controller
$fgmanager="<input type='checkbox' class='switch' onChange='switchManager(".$data->getId().");'>";
// Avatar
$avatar="<img src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;'>";
$avatar="<img onClick='seeUser(".$data->getId().")' src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;cursor:pointer;'>";
array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$fgmanager));
array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),"",$fgmanager));
}
// Retour
@ -349,6 +379,7 @@ class GroupController extends Controller
$em = $this->getDoctrine()->getManager();
$group=$this->getData($id);
$this->canManager($group,$access);
$sub = $em->createQueryBuilder();
$sub->select("usergroup");
@ -442,11 +473,11 @@ class GroupController extends Controller
$qb->setParameter("groupid",$id);
switch($order[0]["column"]) {
case 2 :
$qb->orderBy('user.username',$order[0]["dir"]);
$qb->orderBy('user.username',$order[0]["dir"]);
break;
case 3 :
$qb->orderBy('user.email',$order[0]["dir"]);
$qb->orderBy('user.email',$order[0]["dir"]);
break;
}
@ -463,7 +494,7 @@ class GroupController extends Controller
$action.="<a style='cursor:pointer' onClick='delUsers(".$data->getId().")'><i class='fa fa-minus fa-fw'></i></a>";
// Avatar
$avatar="<img src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;'>";
$avatar="<img onClick='seeUser(".$data->getId().")' src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;cursor:pointer'>";
// Flag manager
$fgmanager="";
@ -474,9 +505,14 @@ class GroupController extends Controller
if($fgproprio) $fgmanager="Propriétaire du groupe";
}
// Visite
$visite="";
if($usergroup->getVisitedate()) {
$visite=$usergroup->getVisitedate()->format("d/m/Y H:i")."<br>nb = ".$usergroup->getVisitecpt();
}
array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$fgmanager));
array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$visite,$fgmanager));
}
// Retour
@ -497,9 +533,17 @@ class GroupController extends Controller
$groupid=$request->request->get('groupid');
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
$this->canManager($group,$access);
if($group->getFgAll()||$group->getFgtemplate())
throw $this->createNotFoundException('Permission denied');
$usergroup = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid));
if($usergroup) {
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
$key = Uuid::uuid4();
$usergroup=new Usergroup;
$user=$em->getRepository("CadolesCoreBundle:User")->find($userid);
@ -516,15 +560,19 @@ class GroupController extends Controller
// Notification mail auprès de la personne inscrite
if($group->getFgcanshare()) {
$text="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel();
$idpage =$group->getPages()->first()->getId();
$url = $this->generateUrl('cadoles_core_home', ["id"=>$idpage], UrlGeneratorInterface::ABSOLUTE_URL);
$texthtml="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel()."<br>Suivez le lien suivant pour y accéder = <a href='$url'>$url</a>";
$text="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel()."<br>Suivez le lien suivant pour y accéder = $url";
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : Inscription au groupe de travail : ".$group->getLabel()."\n\n".$group->getDescription(),
"body_html"=>nl2br($text),
"body_html"=>$texthtml,
"body_text"=>$text
);
$to = $user->getEmail();
$from = $this->getParameter('noreply');;
$from = $this->getParameter('noreply');
$fromName = $this->get('session')->get('appname');
$message = $this->container->get('cadoles.core.service.mail');
$message->sendEmail($template, $mail_params, $to, $from, $fromName);
@ -550,6 +598,7 @@ class GroupController extends Controller
$groupid=$request->request->get('groupid');
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
$this->canManager($group,$access);
if($group->getFgAll()||$group->getFgTemplate())
throw $this->createNotFoundException('Permission denied');
@ -565,7 +614,7 @@ class GroupController extends Controller
// Notification mail auprès des managers
if($group->getFgcanshare()) {
$text=$user->getUsername()." a été désinscrit dugroupe de travail : ".$group->getLabel();
$text=$user->getUsername()." a été désinscrit du groupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : ".$user->getUsername()." = Désinscription au groupe de travail ".$group->getLabel()."\n\n".$group->getDescription(),
@ -598,9 +647,11 @@ class GroupController extends Controller
// Notification message
$usergroup = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$this->getUser(),"group"=>$id));
$user=$em->getRepository("CadolesCoreBundle:User")->find($this->getUser());
$message="Désinscription de l'utilisateur<br>".$user->getLastname()." ".$user->getFirstname()."<br>Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();;
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($usergroup->getKeyvalue(),$this->getUser()->getId(),$id,$message);
if($usergroup) {
$user=$em->getRepository("CadolesCoreBundle:User")->find($this->getUser());
$message="Désinscription de l'utilisateur<br>".$user->getLastname()." ".$user->getFirstname()."<br>Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();;
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($usergroup->getKeyvalue(),$this->getUser()->getId(),$id,$message);
}
// Desinscription
$em->remove($usergroup);
@ -608,7 +659,7 @@ class GroupController extends Controller
// Notification mail auprès des managers
if($group->getFgcanshare()) {
$text=$user->getUsername()." a été désinscrit dugroupe de travail : ".$group->getLabel();
$text=$user->getUsername()." a été désinscrit du groupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : ".$user->getUsername()." = Désinscription au groupe de travail ".$group->getLabel()."\n\n".$group->getDescription(),
@ -645,6 +696,9 @@ class GroupController extends Controller
$userid=$request->request->get('user');
$groupid=$request->request->get('group');
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
$this->canManager($group,$access);
$data = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid));
if($data) $data->setFgmanager(!$data->getFgmanager());
@ -662,7 +716,7 @@ class GroupController extends Controller
// Permission
$permgroup=$this->get('session')->get('permgroup');
if($access="user") {
if($access=="user") {
if($permgroup=="NO_BODY") throw $this->createNotFoundException('Permission denied');
if($permgroup=="ROLE_ANIM" && $this->isGranted('ROLE_USER')) throw $this->createNotFoundException('Permission denied');
}
@ -674,8 +728,15 @@ class GroupController extends Controller
$data->setFgcancreatepage(false);
$data->setFgcancreatecalendar(false);
$data->setFgcancreateblog(false);
if($access=="user") $data->setOwner($this->getUser());
$data->setFgcancreateproject(false);
if($access=="user") {
$data->setOwner($this->getUser());
if($this->getParameter("portal_activate")) {
$template=$em->getRepository("CadolesPortalBundle:Page")->findoneby(["parentfor"=>"group"]);
$data->setPagetemplate($template);
}
}
// Création du formulaire
$form = $this->createForm(GroupType::class,$data,array(
"mode"=>"submit",
@ -691,7 +752,7 @@ class GroupController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm(null,$form,$request,$data,"submit");
$this->getErrorForm(null,$form,$request,$data,"submit",$access);
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -700,6 +761,7 @@ class GroupController extends Controller
$data->setFgtemplate(false);
if($data->getLdapfilter()!="") $data->setFgopen(false);
if($data->getAttributes()!="") $data->setFgopen(false);
if($access=="user") $data->setOwner($this->getUser());
// Icon
$idicon = $form->get('idicon')->getData();
@ -710,24 +772,15 @@ class GroupController extends Controller
$em->persist($data);
$em->flush();
// Si acces par user on ajoute forcement le owner comme membre du groupe en tant que manager
if($access=="user") {
$key = Uuid::uuid4();
$usergroup=new Usergroup;
$usergroup->setUser($this->getUser());
$usergroup->setGroup($data);
$usergroup->setFgmanager(true);
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
}
// On s'assure que le propriétaire est bien membre du groupe
$this->ctrlOwner($data);
// On s'assure que le groupe de travail à bien page d'accueil / calendrier / blog associé
// Sinon on les génère
$this->ctrlFgcanshare($data,$access);
// Retour à la liste
return $this->redirectToRoute("cadoles_core_".$access."_group_users",["id"=>$data->getId()]);
return $this->redirectToRoute("cadoles_core_".$access."_group_users",["id"=>$data->getId(),"idreturn"=>$this->idpage]);
}
// Affichage du formulaire
@ -753,6 +806,9 @@ class GroupController extends Controller
// Récupération de l'enregistrement courant
$em = $this->getDoctrine()->getManager();
$data=$this->getData($id);
$oldowner=$data->getOwner();
$this->canOwner($data,$access);
// Création du formulaire
$form = $this->createForm(GroupType::class,$data,array(
@ -770,7 +826,7 @@ class GroupController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"update");
$this->getErrorForm($id,$form,$request,$data,"update",$access);
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -791,10 +847,30 @@ class GroupController extends Controller
$em->persist($data);
$em->flush();
// On s'assure que le propriétaire est bien membre du groupe
$this->ctrlOwner($data);
// On s'assure que le groupe de travail à bien page d'accueil / calendrier / blog associé
// Sinon on les génère
$this->ctrlFgcanshare($data,$access);
// Si le propriétaire change de main on prévient le nouveau propriétaire
if($data->getOwner()&&$data->getOwner()!=$oldowner) {
// Email à destination de l'inscript pour le prévenir qu'un administrateur doit valider
$text="On vient de vous tranférer la propriété du groupe ".$data->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : Transfert de groupe",
"body_html"=>nl2br($text),
"body_text"=>$text
);
$to = $data->getOwner()->getEmail();
$from = $this->getParameter('noreply');
$fromName = $this->get('session')->get('appname');
$message = $this->container->get('cadoles.core.service.mail');
$message->sendEmail($template, $mail_params, $to, $from, $fromName);
}
// Retour à la liste
return $this->redirectToRoute("cadoles_core_".$access."_group");
}
@ -827,6 +903,7 @@ class GroupController extends Controller
// Récupération de l'enregistrement courant
$data=$this->getData($id);
$this->canOwner($data,$access);
// Vérifier que cet enregistrement est supprimable
if($data->getFgAll()||$data->getFgTemplate())
@ -845,10 +922,49 @@ class GroupController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"delete");
$this->getErrorForm($id,$form,$request,$data,"delete",$access);
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
// Si le groupe est un groupe de travail
if($data->getFgcanshare()) {
// Sur l'ensemble des pages liés
$pages=$data->getPages();
foreach($pages as $page) {
$groups=$page->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($groups->count()==1)
$em->remove($page);
}
// Sur l'ensemble des calendar liés
$calendars=$data->getCalendars();
foreach($calendars as $calendar) {
$groups=$calendar->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($groups->count()==1)
$em->remove($calendar);
}
// Sur l'ensemble des blog liés
$blogs=$data->getBlogs();
foreach($blogs as $blog) {
$groups=$blog->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($groups->count()==1)
$em->remove($blog);
}
// Sur l'ensemble des project liés
$projects=$data->getProjects();
foreach($projects as $project) {
$groups=$project->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($groups->count()==1)
$em->remove($project);
}
}
$em->remove($data);
$em->flush();
@ -877,6 +993,10 @@ class GroupController extends Controller
{
// Récupération de l'enregistrement courant
$data=$this->getData($id);
$this->canManager($data,$access);
// idreturn ?
$idreturn=$request->get("idreturn");
// Affichage du formulaire
return $this->render($this->labelentity.':users.html.twig', [
@ -884,10 +1004,168 @@ class GroupController extends Controller
'usemenu' => false,
'usesidebar' => ($access=="config"),
'access' => $access,
$this->labeldata => $data
$this->labeldata => $data,
'idreturn' => $idreturn,
]);
}
public function usergroupexportAction($id,Request $request, $access="config")
{
// Récupération de l'enregistrement courant
$group=$this->getData($id);
$this->canManager($group,$access);
$em = $this->getDoctrine()->getManager();
$dir = $this->get('kernel')->getRootDir() . '/../uploads/export/';
$file = "export-".$id.".csv";
$fs = new Filesystem();
$fs->mkdir($dir);
$csvh = fopen($dir.$file, 'w');
$d = ';'; // this is the default but i like to be explicit
$e = '"'; // this is the default but i like to be explicit
// Entête de colonne
$data=["id","Login","Nom","Prénom","Email","Téléphone",$this->getParameter("labelniveau01"),$this->getParameter("labelniveau02"),"Métier","Fonction","Nom Usage","Autres Prénom","Sexe","Adresse","Date Naissance","Pays Naissance","Ville Naissance","Date Visite","Nb Visites"];
fputcsv($csvh, $data, $d, $e);
// Liste des utilisateurs en fonction du role de l'utilisateur en cours
$qb = $em->createQueryBuilder();
if($this->isGranted('ROLE_ADMIN')||$access=="user") {
$users = $qb->select('user')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:UserGroup','usergroup')
->where('usergroup.group=:group')
->andWhere('usergroup.user=user')
->setParameter("group", $id)
->getQuery()
->getResult();
}
elseif($this->isGranted('ROLE_MODO')) {
$users = $qb->select('user')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:UserGroup','usergroup')
->from('CadolesCoreBundle:Niveau01','niveau01')
->from('CadolesCoreBundle:UserModo', 'usermodo')
->where('usergroup.group=:group')
->andWhere('usergroup.user=user')
->andwhere('user.niveau01=niveau01.id')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("group", $id)
->setParameter("userid", $this->getUser()->getId())
->getQuery()
->getResult();
}
foreach($users as $user) {
$data = [
"id"=>$user->getId(),
"username"=>$user->getUsername(),
"name"=>$user->getLastname(),
"firstname"=>$user->getFirstname(),
"email"=>$user->getEmail(),
"phone"=>$user->getTelephonenumber(),
"niveau01"=>$user->getNiveau01()->getLabel(),
"niveau02"=>($user->getNiveau02()?$user->getNiveau02()->getLabel():""),
"job"=>$user->getJob(),
"position"=>$user->getPosition(),
"usualname"=>$user->getUsualname(),
"givensname"=>$user->getGivensname(),
"gender"=>$user->getGender(),
"postaladress"=>$user->getPostaladress(),
"birthdate"=>($user->getBirthdate()?$user->getBirthdate()->format("d/m/Y"):""),
"birthcountry"=>($user->getBirthcountry()?$user->getBirthcountry()->getLabel():""),
"birthplace"=>($user->getBirthplace()?$user->getBirthplace()->getLabel():""),
"visitedate"=>"",
"visitecpt"=>"",
];
$usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$user,"group"=>$group]);
if($usergroup) {
if($usergroup->getVisitedate()) {
$data["visitedate"]=$usergroup->getVisitedate()->format("d/m/Y H:i");
$data["visitecpt"]=$usergroup->getVisitecpt();
}
}
fputcsv($csvh, $data, $d, $e);
}
fclose($csvh);
$response = new BinaryFileResponse($dir.$file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
return $response;
}
public function statisticAction($id,$access) {
$group=$this->getData($id);
$em = $this->getDoctrine()->getManager();
if(!$group) throw $this->createNotFoundException('Permission denied');
if($access!="config") {
$usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$group]);
if(!$usergroup) throw $this->createNotFoundException('Permission denied');
}
$groupcptvisite=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptvisite","group"=>$group]);
$groupcptmessage=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptmessage","group"=>$group]);
$groupcptblogarticle=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptblogarticle","group"=>$group]);
$groupcptprojecttask=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptprojecttask","group"=>$group]);
return $this->render('CadolesCoreBundle:Group:statistic.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => ($access=="config"),
'access' => $access,
'group' => $group,
'groupcptvisite' => $groupcptvisite,
'groupcptmessage' => $groupcptmessage,
'groupcptblogarticle' => $groupcptblogarticle,
'groupcptprojecttask' => $groupcptprojecttask,
]);
}
protected function canManager($group,$access) {
if($access!="config") {
$em = $this->getDoctrine()->getManager();
$ismanager=$em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$this->getUser(),"fgmanager"=>true]);
if(!$ismanager)
throw $this->createNotFoundException('Permission denied');
}
}
protected function canOwner($group,$access) {
if($access!="config") {
$em = $this->getDoctrine()->getManager();
$isowner=($group->getOwner()==$this->getUser());
if(!$isowner)
throw $this->createNotFoundException('Permission denied');
}
}
protected function ctrlOwner($group) {
$em = $this->getDoctrine()->getManager();
if($group->getOwner()) {
$usergroup=$em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$group->getOwner()]);
if(!$usergroup) {
$key = Uuid::uuid4();
$usergroup=new Usergroup;
$usergroup->setUser($group->getOwner());
$usergroup->setGroup($group);
$usergroup->setKeyvalue($key);
}
$usergroup->setFgmanager(true);
$em->persist($usergroup);
$em->flush();
}
}
protected function ctrlFgcanshare($group,$access) {
$em = $this->getDoctrine()->getManager();
@ -901,7 +1179,20 @@ class GroupController extends Controller
$em->persist($page);
$em->persist($group);
$em->flush();
$em->flush();
}
$pages=$group->getPages();
$this->idpage=$pages[0]->getId();
if($pages[0]->getName()!=$group->getLabel()) {
$pages[0]->setName($group->getLabel());
$em->persist($pages[0]);
$em->flush();
}
foreach($pages as $page) {
$page->setUser($group->getOwner());
$em->persist($page);
$em->flush();
}
// On regarde s'il a au moins un calendrier
@ -919,6 +1210,19 @@ class GroupController extends Controller
$em->persist($calendar);
$em->flush();
}
else {
$calendars=$group->getCalendars();
if($calendars[0]->getName()!=$group->getLabel()) {
$calendars[0]->setName($group->getLabel());
$em->persist($calendars[0]);
$em->flush();
}
foreach($calendars as $calendar) {
$calendar->setUser($group->getOwner());
$em->persist($calendar);
$em->flush();
}
}
// On regarde s'il a au moins un blog
if($group->getBlogs()->isEmpty()) {
@ -930,10 +1234,49 @@ class GroupController extends Controller
$em->persist($blog);
$em->flush();
}
}
else {
$blogs=$group->getBlogs();
if($blogs[0]->getName()!=$group->getLabel()) {
$blogs[0]->setName($group->getLabel());
$em->persist($blogs[0]);
$em->flush();
}
foreach($blogs as $blog) {
$blog->setUser($group->getOwner());
$em->persist($blog);
$em->flush();
}
}
// On regarde s'il a au moins un project
if($group->getProjects()->isEmpty()) {
$project=new Project();
$project->setName($group->getLabel());
$project->addGroup($group);
if($access=="user")$project->setUser($this->getUser());
$em->persist($project);
$em->flush();
}
else {
$projects=$group->getProjects();
if($projects[0]->getName()!=$group->getLabel()) {
$projects[0]->setName($group->getLabel());
$em->persist($projects[0]);
$em->flush();
}
foreach($projects as $project) {
$project->setUser($group->getOwner());
$em->persist($project);
$em->flush();
}
}
}
}
protected function getDatas()
{
$em = $this->getDoctrine()->getManager();
@ -966,7 +1309,7 @@ class GroupController extends Controller
else return true;
}
protected function getErrorForm($id,$form,$request,$data,$mode) {
protected function getErrorForm($id,$form,$request,$data,$mode,$access) {
if ($form->get('submit')->isClicked()&&$mode=="delete") {
}
@ -978,10 +1321,21 @@ class GroupController extends Controller
$tmp=$this->getEntityBy("CadolesCoreBundle:Niveau02","label",$data->getLabel());
if($tmp) $form->addError(new FormError('Un niveau de rang 02 utilise déjà ce label'));
// On s'assure que le label ne contient pas des caractères speciaux
$string = preg_replace('~[^ éèêôöàïî\'@a-zA-Z0-9._-]~', '', $data->getLabel());
if($string!=$data->getLabel())
{
$form->addError(new FormError('Caractères interdit dans ce label'));
}
if($data->getFgcanshare()&&is_null($data->getPagetemplate()))
$form->addError(new FormError("Un groupe de travail doit avoir un modèle de page d'accueil"));
}
if ($form->get('submit')->isClicked() && $mode=="update" && $access=="user") {
if(!$data->getOwner()) $form->addError(new FormError('Le propriétaire du groupe est obligatoire'));
}
if ($form->get('submit')->isClicked() && !$form->isValid()) {
$this->get('session')->getFlashBag()->clear();
$validator = $this->get('validator');

View File

@ -0,0 +1,106 @@
<?php
namespace Cadoles\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Form\FormError;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Cadoles\CoreBundle\Entity\Mail;
use Cadoles\CoreBundle\Form\MailType;
class MailController extends Controller
{
public function invitationgroupAction($id,Request $request)
{
// Recherche du groupe
$em = $this->getDoctrine()->getManager();
$group = $em->getRepository("CadolesCoreBundle:Group")->find($id);
if (!$group) {
throw $this->createNotFoundException('Unable to find '.$this->labeldata);
}
// Création du formulaire
$form = $this->createForm(MailType::class);
// Récupération des data du formulaire
$form->handleRequest($request);
// Sujet
$subject = $this->get('session')->get('appname')." : Invitation au groupe de travail ".$group->getLabel();
// Sujet
$url = $this->generateUrl('cadoles_core_registration',[], UrlGeneratorInterface::ABSOLUTE_URL)."?group=".$group->getId();
$message = "Bonjour,<br><br>En tant que responsable du projet <b>'".$group->getLabel()."'</b>, je vous ai invité à rejoindre cette communauté de travail<br><br>";
$message.= "Merci de bien vouloir tout dabord vous inscrire sur <b>".$this->get('session')->get('appname')."</b> en suivant le lien suivant<br>";
$message.= "<a href='$url'>$url</a><br><br>";
$message.= "Une fois le processus d'inscription complété, vous serez automatiquement rattaché à notre groupe de travail<br><br>";
$message.= "Cordialement<br>";
$message.= $this->getUser()->getFirstname()." ".$this->getUser()->getLastname();
// To close ?
$closed = false;
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
$closed = true;
$destinataires=$form->get("destinataire")->getData();
$to=explode(";",$destinataires);
// On s'assure que les destinataires ne sont pas déjà inscrit dans le portail
$usersnotin=[];
$usersin=[];
foreach($to as $key => $mail) {
// Si le mail existe on l'enlève de la liste des utilisateurs à inviter
$user=$em->getRepository("CadolesCoreBundle:User")->findOneBy(["email"=>$mail]);
if($user) {
unset($to[$key]);
$usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$user,"group"=>$group]);
if($usergroup) array_push($usersin,$user);
else array_push($usersnotin,$user);
}
}
$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');
$message->sendEmail($template, $mail_params, $to, $from, $fromName);
}
if($closed && (!empty($usersin)||!empty($usersnotin))) {
return $this->render('CadolesCoreBundle:Mail:users.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'usersin' => $usersin,
'usersnotin' => $usersnotin,
'group' => $group
]);
}
else {
return $this->render('CadolesCoreBundle:Mail:mail.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'closed' => $closed,
'subject' => $subject,
'message' => $message,
'form' => $form->createView()
]);
}
}
}

View File

@ -43,20 +43,35 @@ class Niveau01Controller extends Controller
$draw= $request->query->get('draw');
$order= $request->query->get('order');
// Modo ?
$ismodo=false;
if($this->getUser()->getRole()=="ROLE_MODO") {
$ismodo=true;
}
// Nombre total d'enregistrement
$total = $em->createQueryBuilder()->select('COUNT(table)')->from($this->labelentity,'table')->getQuery()->getSingleScalarResult();
if($ismodo)
$total = $em->createQueryBuilder()->select('COUNT(table)')->from("CadolesCoreBundle:UserModo",'table')->where("table.user = :user")->setParameter("user", $this->getUser())->getQuery()->getSingleScalarResult();
else
$total = $em->createQueryBuilder()->select('COUNT(table)')->from($this->labelentity,'table')->getQuery()->getSingleScalarResult();
// Nombre d'enregistrement filtré
if($search["value"]=="")
$totalf = $total;
else {
$totalf= $em->createQueryBuilder()
$qb = $em->createQueryBuilder()
->select('COUNT(table)')
->from($this->labelentity,'table')
->where('table.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
->setParameter("value", "%".$search["value"]."%");
if($ismodo)
$qb ->from("CadolesCoreBundle:UserModo","usermodo")
->andwhere("usermodo.user = :user")
->andWhere("usermodo.niveau01=table")
->setParameter("user", $this->getUser());
$totalf = $qb->getQuery()->getSingleScalarResult();
}
// Construction du tableau de retour
@ -70,8 +85,15 @@ class Niveau01Controller extends Controller
// Parcours des Enregistrement
$qb = $em->createQueryBuilder();
$qb->select('table')->from($this->labelentity,'table');
if($ismodo) {
$qb->from("CadolesCoreBundle:UserModo","usermodo")
->where("usermodo.user = :user")
->andWhere("usermodo.niveau01=table")
->setParameter("user", $this->getUser());
}
if($search["value"]!="") {
$qb ->where('table.label LIKE :value')
$qb ->andwhere('table.label LIKE :value')
->setParameter("value", "%".$search["value"]."%");
}
switch($order[0]["column"]) {
@ -84,7 +106,7 @@ class Niveau01Controller extends Controller
foreach($datas as $data) {
$action ="<a href='".$this->generateUrl('cadoles_core_config_niveau01_update', array('id'=>$data->getId()))."'><i class='fa fa-file fa-fw'></i></a>";
if($data->getId()>0) $action.="<a href='".$this->generateUrl('cadoles_core_config_niveau01_delete', array('id'=>$data->getId()))."'><i class='fa fa-trash fa-fw'></i></a>";
if($data->getId()>0&&!$ismodo) $action.="<a href='".$this->generateUrl('cadoles_core_config_niveau01_delete', array('id'=>$data->getId()))."'><i class='fa fa-trash fa-fw'></i></a>";
array_push($output["data"],array($action,$data->getLabel()));
}
@ -97,6 +119,10 @@ class Niveau01Controller extends Controller
// Initialisation de l'enregistrement
$data = new Niveau01();
// Interdit pour les modos
if($this->getUser()->getRole()=="ROLE_MODO")
throw $this->createNotFoundException('Permission denied');
// Création du formulaire
$form = $this->createForm(Niveau01Type::class,$data,array(
"mode" => "submit",
@ -136,10 +162,16 @@ class Niveau01Controller extends Controller
public function updateAction($id,Request $request)
{
$em = $this->getDoctrine()->getManager();
// Récupération de l'enregistrement courant
$data=$this->getData($id);
// Vérifier que cet enregistrement est modifiable
// Modification modo que si niveau modéré
if($this->getUser()->getRole()=="ROLE_MODO") {
$usermodo=$em->getRepository("CadolesCoreBundle:UserModo")->findOneBy(["user"=>$this->getUser(),"niveau01"=>$data]);
if(!$usermodo) throw $this->createNotFoundException('Permission denied');
}
// Création du formulaire
$form = $this->createForm(Niveau01Type::class,$data,array(
@ -156,7 +188,6 @@ class Niveau01Controller extends Controller
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$data = $form->getData();
// Sauvegarde
@ -184,7 +215,9 @@ class Niveau01Controller extends Controller
// Récupération de l'enregistrement courant
$data=$this->getData($id);
// Vérifier que cet enregistrement est supprimable
// Interdit pour les modos
if($this->getUser()->getRole()=="ROLE_MODO")
throw $this->createNotFoundException('Permission denied');
// Création du formulaire
$form = $this->createForm(Niveau01Type::class,$data,array(
@ -228,6 +261,15 @@ class Niveau01Controller extends Controller
]);
}
public function headerAction()
{
return $this->render('CadolesCoreBundle:Niveau01:header.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
]);
}
protected function getDatas()
{
$em = $this->getDoctrine()->getManager();
@ -273,7 +315,7 @@ class Niveau01Controller extends Controller
if($data->getNiveau02s()->count() > 0) {
$form->addError(new FormError('Un niveau de rang 02 utilise ce niveau de rang 01 : suppression impossible'));
}
}
}
if ($form->get('submit')->isClicked() && ($mode=="submit" || $mode=="update")) {
@ -282,6 +324,13 @@ class Niveau01Controller extends Controller
$tmp=$this->getEntityBy("CadolesCoreBundle:Niveau02","label",$data->getLabel());
if($tmp) $form->addError(new FormError('Un niveau de rang 02 utilise déjà ce label'));
// On s'assure que le label ne contient pas des caractères speciaux
$string = preg_replace('~[^ éèêôöàïî\'@a-zA-Z0-9._-]~', '', $data->getLabel());
if($string!=$data->getLabel())
{
$form->addError(new FormError('Caractères interdit dans ce label'));
}
}
if ($form->get('submit')->isClicked() && !$form->isValid()) {

View File

@ -43,22 +43,45 @@ class Niveau02Controller extends Controller
$draw= $request->query->get('draw');
$order= $request->query->get('order');
// Modo ?
$ismodo=false;
if($this->getUser()->getRole()=="ROLE_MODO") {
$ismodo=true;
}
// Nombre total d'enregistrement
$total = $em->createQueryBuilder()->select('COUNT(table)')->from($this->labelentity,'table')->getQuery()->getSingleScalarResult();
if($ismodo) {
$total = $em->createQueryBuilder()->select('COUNT(table)')
->from($this->labelentity,'table')
->from("CadolesCoreBundle:UserModo","usermodo")
->Where("table.niveau01=usermodo.niveau01")
->andWhere("usermodo.user=:user")
->setParameter("user",$this->getUser())
->getQuery()->getSingleScalarResult();
}
else
$total = $em->createQueryBuilder()->select('COUNT(table)')->from($this->labelentity,'table')->getQuery()->getSingleScalarResult();
// Nombre d'enregistrement filtré
if($search["value"]=="")
$totalf = $total;
else {
$totalf= $em->createQueryBuilder()
$qb = $em ->createQueryBuilder()
->select('COUNT(table)')
->from($this->labelentity,'table')
->from("CadolesCoreBundle:Niveau01",'nv1')
->where('table.niveau01=nv1.id')
->andwhere('table.label LIKE :value or nv1.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
->setParameter("value", "%".$search["value"]."%");
if($ismodo) {
$qb ->from("CadolesCoreBundle:UserModo","usermodo")
->andwhere("table.niveau01=usermodo.niveau01")
->andWhere("usermodo.user=:user")
->setParameter("user",$this->getUser());
}
$totalf = $qb->getQuery()->getSingleScalarResult();
}
// Construction du tableau de retour
@ -79,6 +102,13 @@ class Niveau02Controller extends Controller
$qb ->andwhere('table.label LIKE :value or nv1.label LIKE :value')
->setParameter("value", "%".$search["value"]."%");
}
if($ismodo) {
$qb->from("CadolesCoreBundle:UserModo","usermodo")
->andWhere("table.niveau01=usermodo.niveau01")
->andWhere("usermodo.user=:user")
->setParameter("user",$this->getUser());
}
switch($order[0]["column"]) {
case 1 :
$qb->orderBy('nv1.label',$order[0]["dir"]);
@ -107,7 +137,7 @@ class Niveau02Controller extends Controller
$data = new Niveau02();
// Création du formulaire
$form = $this->createForm(Niveau02Type::class,$data,array("mode"=>"submit"));
$form = $this->createForm(Niveau02Type::class,$data,array("mode"=>"submit","user"=>$this->getUser()));
// Récupération des data du formulaire
$form->handleRequest($request);
@ -141,13 +171,19 @@ class Niveau02Controller extends Controller
public function updateAction($id,Request $request)
{
$em = $this->getDoctrine()->getManager();
// Récupération de l'enregistrement courant
$data=$this->getData($id);
// Vérifier que cet enregistrement est modifiable
// Suppression modo que si niveau modéré
if($this->getUser()->getRole()=="ROLE_MODO") {
$usermodo=$em->getRepository("CadolesCoreBundle:UserModo")->findOneBy(["user"=>$this->getUser(),"niveau01"=>$data->getNiveau01()]);
if(!$usermodo) throw $this->createNotFoundException('Permission denied');
}
// Création du formulaire
$form = $this->createForm(Niveau02Type::class,$data,array("mode"=>"update"));
$form = $this->createForm(Niveau02Type::class,$data,array("mode"=>"update","user"=>$this->getUser()));
// Récupération des data du formulaire
$form->handleRequest($request);
@ -157,7 +193,6 @@ class Niveau02Controller extends Controller
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$data = $form->getData();
// Sauvegarde
@ -182,13 +217,19 @@ class Niveau02Controller extends Controller
public function deleteAction($id,Request $request)
{
$em = $this->getDoctrine()->getManager();
// Récupération de l'enregistrement courant
$data=$this->getData($id);
// Vérifier que cet enregistrement est supprimable
// Suppression modo que si niveau modéré
if($this->getUser()->getRole()=="ROLE_MODO") {
$usermodo=$em->getRepository("CadolesCoreBundle:UserModo")->findOneBy(["user"=>$this->getUser(),"niveau01"=>$data->getNiveau01()]);
if(!$usermodo) throw $this->createNotFoundException('Permission denied');
}
// Création du formulaire
$form = $this->createForm(Niveau02Type::class,$data,array("mode"=>"delete"));
$form = $this->createForm(Niveau02Type::class,$data,array("mode"=>"delete","user"=>$this->getUser()));
// Récupération des data du formulaire
$form->handleRequest($request);
@ -198,7 +239,6 @@ class Niveau02Controller extends Controller
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->remove($data);
$em->flush();
@ -267,6 +307,13 @@ class Niveau02Controller extends Controller
$tmp=$this->getEntityBy("CadolesCoreBundle:Niveau01","label",$data->getLabel());
if($tmp) $form->addError(new FormError('Un niveau de rang 01 utilise déjà ce label'));
// On s'assure que le label ne contient pas des caractères speciaux
$string = preg_replace('~[^ éèêôöàïî\'@a-zA-Z0-9._-]~', '', $data->getLabel());
if($string!=$data->getLabel())
{
$form->addError(new FormError('Caractères interdit dans ce label'));
}
}
if ($form->get('submit')->isClicked() && !$form->isValid()) {

View File

@ -13,6 +13,7 @@ use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\CoreBundle\Entity\Usergroup;
use Cadoles\CoreBundle\Entity\Registration;
use Cadoles\CoreBundle\Form\RegistrationType;
use Cadoles\CoreBundle\Form\UserType;
@ -158,7 +159,7 @@ class RegistrationController extends Controller
$action,
$data->getUsername(),
$data->getEmail(),
$data->getNiveau01()->getLabel(),
$data->getNiveau01()->getLabel()."<br>".$data->getNiveau01other(),
$data->getStatut()->getLabel(),
(is_null($data->getKeyexpire())?"":$data->getKeyexpire()->format('d/m/Y H:i:s'))
));
@ -176,6 +177,8 @@ class RegistrationController extends Controller
$moderegistration = $this->getParameter('moderegistration');
$masteridentity = $this->getParameter('masteridentity');
$groupid = $request->query->get('group');
if($moderegistration=="none"||$masteridentity!="SQL")
throw $this->createNotFoundException('Permission denied');
@ -192,14 +195,31 @@ class RegistrationController extends Controller
// Récupération des data du formulaire
$form->handleRequest($request);
// si mode de registration byuser
if($moderegistration=="byuser") {
$idstatut=2;
}
else {
// On recherche le domaine du mail dans la liste blanche
$email=explode("@",$data->getEmail());
$domaine=end($email);
$whitelist = $em->getRepository("CadolesCoreBundle:Whitelist")->findBy(["label"=>$domaine]);
$idstatut=(!$whitelist?1:2);
}
$statut = $em->getRepository("CadolesCoreBundle:Statut")->find($idstatut);
$data->setStatut($statut);
// Sur erreur
$this->getErrorForm(null,$form,$request,$data,"submit");
$this->getErrorForm(null,$form,$request,$data,"submit",$idstatut);
// Sur validation(z)
if ($form->get('submit')->isClicked() && $form->isValid()) {
$data = $form->getData();
// On enregistre l'invitation à un groupe dans l'inscription
$data->setGroupid($groupid);
$appname = $this->get('session')->get('appname');
$noreply = $this->getParameter('noreply');
$keyterm = $this->getParameter('keyterm');
@ -213,22 +233,7 @@ class RegistrationController extends Controller
$password = $encoder->encodePassword($data->getPassword(),$data->getSalt());
$data->setPassword($password);
*/
// si mode de registration byuser
if($moderegistration=="byuser") {
$idstatut=2;
}
else {
// On recherche le domaine du mail dans la liste blanche
$email=explode("@",$data->getEmail());
$domaine=end($email);
$whitelist = $em->getRepository("CadolesCoreBundle:Whitelist")->findBy(["label"=>$domaine]);
$idstatut=(!$whitelist?1:2);
}
$statut = $em->getRepository("CadolesCoreBundle:Statut")->find($idstatut);
$data->setStatut($statut);
// si non : validation par administrateur
if($idstatut==1) {
// Email à destination de l'inscript pour le prévenir qu'un administrateur doit valider
@ -279,12 +284,19 @@ class RegistrationController extends Controller
foreach($emailmodos as $emailmodo) {
array_push($to,$emailmodo["email"]);
}
$url = $this->generateUrl('cadoles_core_config_registration', [], UrlGeneratorInterface::ABSOLUTE_URL);
$motivation = "Login = ".$data->getUsername()."\n";
$motivation.= "Nom = ".$data->getLastname()."\n";
$motivation.= "Prénom = ".$data->getFirstname()."\n";
$motivation.= "Mail = ".$data->getEmail()."\n";
$motivation.= $this->getParameter("labelniveau01")." = ".$data->getNiveau01()->getLabel()." ".$data->getNiveau01other()."\n\n";
$motivation.= $data->getMotivation();
$text="Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.";
$mail_params=array(
"subject" => $appname." : Inscription à valider",
"body_html"=>nl2br($text),
"body_text"=>$text
"subject" => $appname." : Inscription à valider",
"body_html"=>"Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.<br><br>Veuillez vérifier cette inscription à cette adresse:<br><a href='$url'>$url</a><br><br>".nl2br($motivation),
"body_text"=>"Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.\n\nVeuillez vérifier cette inscription à cette adresse:\n$url\n\n".$motivation
);
$message = $this->container->get('cadoles.core.service.mail');
@ -380,7 +392,19 @@ class RegistrationController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"send");
$this->getErrorForm($id,$form,$request,$data,"send",null);
// Sur validation
if ($form->get('save')->isClicked() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$data = $form->getData();
// Sauvegarde
$em->persist($data);
$em->flush();
return $this->redirectToRoute('cadoles_core_config_registration');
}
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -506,11 +530,31 @@ class RegistrationController extends Controller
$user->setAuthlevel("simple");
$user->setBelongingpopulation("agent");
// Sauvegarde
$em->persist($user);
$em->flush();
// Si invitation à un groupe : on le rattache directement à ce groupe
$groupid=$data[0]->getGroupid();
$userid=$user->getId();
if($groupid) {
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
if($group) {
$key = Uuid::uuid4();
$usergroup=new Usergroup;
$user=$em->getRepository("CadolesCoreBundle:User")->find($userid);
$usergroup->setUser($user);
$usergroup->setGroup($group);
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
// Notification message
$message="Inscription de l'utilisateur<br>".$user->getLastname()." ".$user->getFirstname()."<br>Inscription via inviation";
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$userid,$groupid,$message);
}
}
$em->remove($data[0]);
$em->flush();
}
@ -543,7 +587,7 @@ class RegistrationController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"delete");
$this->getErrorForm($id,$form,$request,$data,"delete",null);
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -691,7 +735,7 @@ class RegistrationController extends Controller
$password=$data["password"];
$message="";
if(!empty($password)) {
if (strlen($password) < '8') {
if (strlen($password) < $this->getParameter("keyterm")) {
$message = "Votre mot de passe doit contenir au minimum 8 caractères, constitué de chiffres, de lettres et caractères spéciaux";
}
elseif(!preg_match("#[0-9]+#",$password)) {
@ -800,7 +844,7 @@ class RegistrationController extends Controller
}
protected function getErrorForm($id,$form,$request,$data,$mode) {
protected function getErrorForm($id,$form,$request,$data,$mode,$idstatut) {
if ($form->get('submit')->isClicked()&&$mode=="delete") {
}
@ -821,6 +865,25 @@ class RegistrationController extends Controller
if($this->getUserBy("username",$data->getUsername())||$this->getUserBy("email",$data->getEmail())) {
$form->addError(new FormError('Un utilisateur utilise déjà ce login ou cet email'));
}
// Si niveau01 commence par autre = niveau01other obligatoire
$niveau01=strtolower($data->getNiveau01()->getLabel());
if(stripos($niveau01,"autre")===0) {
if(!$data->getNiveau01other()) {
$form->addError(new FormError("Merci d'indiquer votre ".$this->getParameter("labelniveau01")));
}
}
// Si validation par administrateur demander une motivation
$moderegistration = $this->getParameter('moderegistration');
if(is_null($data->getMotivation())&&$moderegistration=="byadmin") {
// On recherche le domaine du mail dans la liste blanche
$email=explode("@",$data->getEmail());
$domaine=end($email);
$whitelist = $this->getDoctrine()->getManager()->getRepository("CadolesCoreBundle:Whitelist")->findBy(["label"=>$domaine]);
if(!$whitelist)
$form->addError(new FormError("Attention, le suffixe de votre adresse mail nest pas dans la liste des administrations autorisées, merci de bien vouloir privilégier votre adresse professionnelle si vous en avez une.<br>Si ce nest pas le cas, il faut que vous renseigniez la case motivation de votre demande"));
}
}
if ($form->get('submit')->isClicked() && !$form->isValid()) {

View File

@ -29,9 +29,25 @@ use Cadoles\CoreBundle\Form\UserType;
class RestController extends Controller
{
public function userAction($key, $login, Request $request)
public function loginAction(Request $request)
{
$key=$request->get('key');
$output=[];
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
return new Response(json_encode($output), 200);
}
public function userAction($login, Request $request)
{
$key=$request->get('key');
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
@ -54,6 +70,7 @@ class RestController extends Controller
$output["bookmarks"] = [];
$output["items"] = [];
$output["itemcategorys"] = [];
$output["groups"] = [];
$bookmarks=null;
$items=null;
@ -61,14 +78,16 @@ class RestController extends Controller
$weburl="https://".$this->getParameter("weburl")."/".$this->getParameter("alias")."/";
$em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,3);
$this->getDoctrine()->getRepository("CadolesPortalBundle:Page")->getPagesUser($user,null,$entity,$pagesuser,$pagesadmin,$groupsshared);
// Construction de la réponse
$output["user"]["firstname"] = $user->getFirstname();
$output["user"]["lasttname"] = $user->getLastname();
$output["user"]["lastname"] = $user->getLastname();
$output["user"]["email"] = $user->getEmail();
$output["user"]["avatar"] = $weburl."uploads/avatar/".$user->getAvatar();
$output["user"]["niveau01"] = $user->getNiveau01()->getLabel();
$output["user"]["niveau02"] = ($user->getNiveau02()?$user->getNiveau02()->getLabel():null);
$output["user"]["role"] = $user->getRole();
if($bookmarks) {
foreach($bookmarks as $bookmark) {
@ -114,10 +133,83 @@ class RestController extends Controller
}
}
foreach($user->getGroups() as $usergroup) {
$tmp=[];
$tmp["id"] = $usergroup->getGroup()->getId();
$tmp["title"] = $usergroup->getGroup()->getLabel();
array_push($output["groups"],$tmp);
}
// Retour
return new Response(json_encode($output), 200);
}
public function usersAction(Request $request)
{
$key=$request->get('key');
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
$weburl="https://".$this->getParameter("weburl")."/".$this->getParameter("alias")."/";
$em = $this->getDoctrine()->getManager();
$output = [];
$users=$em->getRepository('CadolesCoreBundle:User')->findAll();
foreach($users as $user) {
// Construction de la réponse
$output[$user->getId()]["id"] = $user->getId();
$output[$user->getId()]["username"] = $user->getUsername();
$output[$user->getId()]["firstname"] = $user->getFirstname();
$output[$user->getId()]["lastname"] = $user->getLastname();
$output[$user->getId()]["email"] = $user->getEmail();
$output[$user->getId()]["avatar"] = $weburl."uploads/avatar/".$user->getAvatar();
$output[$user->getId()]["role"] = $user->getRole();
}
// Retour
return new Response(json_encode($output), 200);
}
public function groupsAction(Request $request)
{
$key=$request->get('key');
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
$em = $this->getDoctrine()->getManager();
$output = [];
$groups=$em->getRepository('CadolesCoreBundle:Group')->findAll();
foreach($groups as $group) {
// Construction de la réponse
$output[$group->getId()]["id"] = $group->getId();
$output[$group->getId()]["name"] = $group->getLabel();
$output[$group->getId()]["users"] = [];
$usergroups=$group->getUsers();
foreach($usergroups as $usergroup) {
$user=$usergroup->getUser();
$output[$group->getId()]["users"][$user->getId()]["id"]=$user->getId();
$output[$group->getId()]["users"][$user->getId()]["username"]=$user->getUsername();
}
}
// Retour
return new Response(json_encode($output), 200);
}
}

View File

@ -192,4 +192,11 @@ class SecurityController extends Controller
return new Response();
}
public function redirectAction($route,$id,Request $request) {
if($route=="cadoles_core_home")
return $this->redirectToRoute($route,["id"=>$id]);
else
return $this->redirectToRoute("cadoles_core_home",["gotoroute"=>$route,"gotoid"=>$id]);
}
}

View File

@ -0,0 +1,109 @@
<?php
namespace Cadoles\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Response;
use Cadoles\PortalBundle\Entity\Page;
class StatisticController extends Controller
{
public function listAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$totcptvisite=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptvisite"]);
$totcptvisitegroup=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptvisitegroup"]);
$totcptmessage=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptmessage"]);
$totcptblogarticle=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptblogarticle"]);
$totcptprojecttask=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"totcptprojecttask"]);
//groupcptvisite
$statistics=$em->getRepository("CadolesCoreBundle:Statistic")->findBy(["keyvalue"=>"groupcptvisite"]);
$groupcptvisite=[];
foreach($statistics as $statistic) {
$value=$statistic->getValue();
$tmp=[
"id" => $statistic->getGroup()->getId(),
"name" => $statistic->getGroup()->getLabel(),
"value" => end($value),
];
array_push($groupcptvisite,$tmp);
}
usort($groupcptvisite, function($a, $b) {
return $a['value'] <=> $b['value'];
});
$topgroupcptvisite = array_slice($groupcptvisite, -20);
//groupcptmessage
$statistics=$em->getRepository("CadolesCoreBundle:Statistic")->findBy(["keyvalue"=>"groupcptmessage"]);
$groupcptmessage=[];
foreach($statistics as $statistic) {
$value=$statistic->getValue();
$tmp=[
"id" => $statistic->getGroup()->getId(),
"name" => $statistic->getGroup()->getLabel(),
"value" => end($value),
];
array_push($groupcptmessage,$tmp);
}
usort($groupcptmessage, function($a, $b) {
return $a['value'] <=> $b['value'];
});
$topgroupcptmessage = array_slice($groupcptmessage, -20);
//groupcptblogarticle
$statistics=$em->getRepository("CadolesCoreBundle:Statistic")->findBy(["keyvalue"=>"groupcptblogarticle"]);
$groupcptblogarticle=[];
foreach($statistics as $statistic) {
$value=$statistic->getValue();
$tmp=[
"id" => $statistic->getGroup()->getId(),
"name" => $statistic->getGroup()->getLabel(),
"value" => end($value),
];
array_push($groupcptblogarticle,$tmp);
}
usort($groupcptblogarticle, function($a, $b) {
return $a['value'] <=> $b['value'];
});
$topgroupcptblogarticle = array_slice($groupcptblogarticle, -20);
//groupcptprojecttask
$statistics=$em->getRepository("CadolesCoreBundle:Statistic")->findBy(["keyvalue"=>"groupcptprojecttask"]);
$groupcptprojecttask=[];
foreach($statistics as $statistic) {
$value=$statistic->getValue();
$tmp=[
"id" => $statistic->getGroup()->getId(),
"name" => $statistic->getGroup()->getLabel(),
"value" => end($value),
];
array_push($groupcptprojecttask,$tmp);
}
usort($groupcptprojecttask, function($a, $b) {
return $a['value'] <=> $b['value'];
});
$topgroupcptprojecttask = array_slice($groupcptprojecttask, -20);
return $this->render('CadolesCoreBundle:Statistic:list.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
'totcptvisite' => $totcptvisite,
'totcptvisitegroup' => $totcptvisitegroup,
'totcptmessage' => $totcptmessage,
'totcptblogarticle' => $totcptblogarticle,
'totcptprojecttask' => $totcptprojecttask,
'groupcptvisite' => $topgroupcptvisite,
'groupcptmessage' => $topgroupcptmessage,
'groupcptblogarticle' => $topgroupcptblogarticle,
'groupcptprojecttask' => $topgroupcptprojecttask,
]);
}
}

View File

@ -16,6 +16,9 @@ use Symfony\Component\Console\Output\OutputInterface;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\CoreBundle\Entity\UserGroup;
@ -25,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
@ -65,71 +69,92 @@ class UserController extends Controller
$draw= $request->query->get('draw');
$order= $request->query->get('order');
$viewniveau02=$this->getParameter('viewniveau02');
$fields=$this->getDefaultDatauser();
$fgusevisible=!($fields["visible"]["perm"]==0);
// Nombre total d'enregistrement
if($this->isGranted('ROLE_ADMIN')||$access=="user")
$total = $em->createQueryBuilder()->select('COUNT(user)')->from($this->labelentity,'user')->getQuery()->getSingleScalarResult();
elseif($this->isGranted('ROLE_MODO')) {
$usermodo=$this->get('security.token_storage')->getToken()->getUser()->getId();
$total = $em->createQueryBuilder()
->select('COUNT(user)')
->from($this->labelentity,'user')
->from("CadolesCoreBundle:UserModo",'usermodo')
->where("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo)
->getQuery()->getSingleScalarResult();
if($access=="config") {
if($this->isGranted('ROLE_ADMIN')) {
$total = $em->createQueryBuilder()->select('COUNT(user)')->from($this->labelentity,'user')->getQuery()->getSingleScalarResult();
}
elseif($this->isGranted('ROLE_MODO')) {
$usermodo=$this->get('security.token_storage')->getToken()->getUser()->getId();
$total = $em->createQueryBuilder()
->select('COUNT(user)')
->from($this->labelentity,'user')
->from("CadolesCoreBundle:UserModo",'usermodo')
->where("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo)
->getQuery()->getSingleScalarResult();
}
}
else {
if($fgusevisible) {
$total = $em->createQueryBuilder()->select('COUNT(user)')->from($this->labelentity,'user')->where('user.visible=true')->getQuery()->getSingleScalarResult();
}
else {
$total = $em->createQueryBuilder()->select('COUNT(user)')->from($this->labelentity,'user')->getQuery()->getSingleScalarResult();
}
}
elseif($this->isGranted('ROLE_ANIM')||$this->isGranted('ROLE_USER')) {
$niveau01=$this->get('security.token_storage')->getToken()->getUser()->getNiveau01();
$total = $em->createQueryBuilder()
->select('COUNT(user)')
->from($this->labelentity,'user')
->where("user.niveau01 = :niveau01")
->setParameter("niveau01", $niveau01)
->getQuery()->getSingleScalarResult();
}
// Nombre d'enregistrement filtré
if($search["value"]=="")
$totalf = $total;
else {
if($this->isGranted('ROLE_ADMIN')||$access=="user")
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
elseif($this->isGranted('ROLE_MODO'))
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->from('CadolesCoreBundle:UserModo', 'usermodo')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo)
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
elseif($this->isGranted('ROLE_ANIM')||$this->isGranted('ROLE_USER'))
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->andWhere("user.niveau01 = :niveau01")
->setParameter("niveau01", $niveau01)
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
if($access=="config") {
if($this->isGranted('ROLE_ADMIN')) {
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
elseif($this->isGranted('ROLE_MODO')) {
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->from('CadolesCoreBundle:UserModo', 'usermodo')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo)
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
}
else {
if($fgusevisible) {
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.visible=true')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
else {
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
}
}
// Construction du tableau de retour
@ -142,23 +167,24 @@ class UserController extends Controller
// Parcours des Enregistrement
$qb = $em->createQueryBuilder();
if($this->isGranted('ROLE_ADMIN')||$access=="user") {
if($access=="config") {
if($this->isGranted('ROLE_ADMIN')) {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01');
$qb->where('user.niveau01=niveau01.id');
}
elseif($this->isGranted('ROLE_MODO')) {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01')->from('CadolesCoreBundle:UserModo', 'usermodo');
$qb->where('user.niveau01=niveau01.id')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo);
}
}
else {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01');
$qb->where('user.niveau01=niveau01.id');
if($fgusevisible) $qb->andWhere('user.visible=true');
}
elseif($this->isGranted('ROLE_MODO')) {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01')->from('CadolesCoreBundle:UserModo', 'usermodo');
$qb->where('user.niveau01=niveau01.id')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo);
}
elseif($this->isGranted('ROLE_ANIM')||$this->isGranted('ROLE_USER')) {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01');
$qb->where('user.niveau01=niveau01.id')
->andwhere("user.niveau01 = :niveau01")
->setParameter("niveau01", $niveau01);
}
if($search["value"]!="") {
$qb ->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
@ -184,10 +210,26 @@ class UserController extends Controller
break;
case 6 :
$qb->orderBy('user.telephonenumber',$order[0]["dir"]);
break;
case 7 :
$qb->orderBy('niveau01.label',$order[0]["dir"]);
break;
case 9 :
case 10 :
$qb->orderBy('user.job',$order[0]["dir"]);
break;
case 11 :
$qb->orderBy('user.position',$order[0]["dir"]);
break;
case 12 :
$qb->orderBy('user.visitedate',$order[0]["dir"]);
break;
case 13 :
$qb->orderBy('user.role',$order[0]["dir"]);
break;
}
@ -211,10 +253,26 @@ class UserController extends Controller
break;
case 5 :
$qb->orderBy('user.telephonenumber',$order[0]["dir"]);
break;
case 6 :
$qb->orderBy('niveau01.label',$order[0]["dir"]);
break;
case 7 :
case 8 :
$qb->orderBy('user.job',$order[0]["dir"]);
break;
case 9 :
$qb->orderBy('user.position',$order[0]["dir"]);
break;
case 10 :
$qb->orderBy('user.visitedate',$order[0]["dir"]);
break;
case 11 :
$qb->orderBy('user.role',$order[0]["dir"]);
break;
}
@ -240,14 +298,18 @@ class UserController extends Controller
$tmp=array();
if($access=="config") array_push($tmp,$action);
array_push($tmp,"<img src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' class='avatar' style='margin:auto;display:block;'>");
array_push($tmp,"<img style='cursor:pointer' onClick='seeUser(".$data->getId().")' src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' class='avatar' style='margin:auto;display:block;'>");
array_push($tmp,$data->getUsername());
array_push($tmp,$data->getLastname());
array_push($tmp,$data->getFirstname());
array_push($tmp,"<a href='mailto:".$data->getEmail()."'>".$data->getEmail()."</a>");
array_push($tmp,$data->getNiveau01()->getLabel());
array_push($tmp,$data->getTelephonenumber());
array_push($tmp,$data->getNiveau01()->getLabel()."<br>".$data->getNiveau01other());
if($viewniveau02) array_push($tmp,($data->getNiveau02()!==null?$data->getNiveau02()->getLabel():""));
array_push($tmp,$groups);
array_push($tmp,$data->getJob());
array_push($tmp,$data->getPosition());
array_push($tmp,($data->getVisitedate()?$data->getVisitedate()->format("d/m/Y H:i")."<br>nb = ".$data->getVisitecpt():""));
array_push($tmp,$data->getRole());
array_push($output["data"],$tmp);
@ -338,15 +400,17 @@ class UserController extends Controller
foreach($lstgroups as $idgroup) {
$group=$em->getRepository("CadolesCoreBundle:Group")->find($idgroup);
$key = Uuid::uuid4();
$usergroup= new UserGroup();
$usergroup->setUser($data);
$datagroup = $group;
$usergroup->setGroup($datagroup);
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
$usergroup=$em->getRepository('CadolesCoreBundle:UserGroup')->findBy(["user"=>$data,"group"=>$group]);
if(!$usergroup) {
$key = Uuid::uuid4();
$usergroup= new UserGroup();
$usergroup->setUser($data);
$datagroup = $group;
$usergroup->setGroup($datagroup);
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
}
// Notification message
$message="Inscription de l'utilisateur<br>".$data->getLastname()." ".$data->getFirstname()."<br>Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();
@ -478,16 +542,19 @@ class UserController extends Controller
foreach($addgroups as $idgroup) {
$group=$em->getRepository("CadolesCoreBundle:Group")->find($idgroup);
$key = Uuid::uuid4();
$usergroup= new UserGroup();
$usergroup->setUser($data);
$datagroup = $group;
$usergroup->setGroup($datagroup);
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
$usergroup=$em->getRepository('CadolesCoreBundle:UserGroup')->findBy(["user"=>$data,"group"=>$group]);
if(!$usergroup) {
$key = Uuid::uuid4();
$usergroup= new UserGroup();
$usergroup->setUser($data);
$datagroup = $group;
$usergroup->setGroup($datagroup);
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
}
// notification message
$message="Inscription de l'utilisateur<br>".$data->getLastname()." ".$data->getFirstname()."<br>Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$id,$idgroup,$message);
@ -533,7 +600,7 @@ class UserController extends Controller
// Notification mail auprès des managers
if($group->getFgcanshare()) {
$text=$data->getUsername()." a été désinscrit dugroupe de travail : ".$group->getLabel();
$text=$data->getUsername()." a été désinscrit du groupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : ".$data->getUsername()." = Désinscription au groupe de travail ".$group->getLabel()."\n\n".$group->getDescription(),
@ -623,7 +690,7 @@ class UserController extends Controller
$fields=$this->getDefaultDatauser();
// Si un acces modo via console d'admin on s'assure qu'il a les droit dessus sinon retour à la liste
if($this->isGranted('ROLE_MODO')&&$access=="config") {
if($this->isGranted('ROLE_MODO')) {
$niveau01=$data->getNiveau01();
$modos=$this->get('security.token_storage')->getToken()->getUser()->getmodos();
$fgperm=false;
@ -635,7 +702,17 @@ class UserController extends Controller
// Vérifier que cet enregistrement est supprimable
if($this->GetParameter("masteridentity")=="LDAP")
throw $this->createNotFoundException('Permission denied');
throw $this->createNotFoundException('Permission denied');
// Alerte si utilisateur propriétaire de groupe
if(!$data->getOwnergroups()->isEmpty()) {
$message ="ATTENTION CET UTILSATEUR EST PROPRIETAIRE DES GROUPES DE TRAVAIL SUIVANT<br>";
foreach($data->getOwnergroups() as $group) {
$message.=" - <a href='".$this->generateUrl('cadoles_core_config_group_update', array('id'=>$group->getId()))."' target='_blank'>".$group->getLabel()."</a><br>";
}
$message.="<br>En le supprimant les groupes en question n'auront plus de propriétaire";
$request->getSession()->getFlashBag()->add("notice", $message);
}
// Création du formulaire
$form = $this->createForm(UserType::class,$data,array(
@ -655,6 +732,37 @@ class UserController extends Controller
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
// Avant de supprimer l'utilisateur on passe à vide l'ensemble des groupes propriétaire à vide
foreach($data->getOwnergroups() as $group) {
$pages=$group->getPages();
foreach($pages as $page) {
$page->setUser(null);
$em->persist($page);
$em->flush();
}
$blogs=$group->getBlogs();
foreach($blogs as $blog) {
$blog->setUser(null);
$em->persist($blog);
$em->flush();
}
$calendars=$group->getCalendars();
foreach($calendars as $calendar) {
$calendar->setUser(null);
$em->persist($calendar);
$em->flush();
}
$projects=$group->getProjects();
foreach($projects as $project) {
$project->setUser(null);
$em->persist($project);
$em->flush();
}
}
$em->remove($data);
$em->flush();
@ -704,7 +812,152 @@ class UserController extends Controller
return $this->updateAction($user->getId(),"user",$request);
}
public function viewAction($id, Request $request)
{
$user=$this->getData($id);
return $this->render('CadolesCoreBundle:User:view.html.twig', [
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
"user" => $user
]);
}
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/';
$file = "export.csv";
$fs = new Filesystem();
$fs->mkdir($dir);
$csvh = fopen($dir.$file, 'w');
$d = ';'; // this is the default but i like to be explicit
$e = '"'; // this is the default but i like to be explicit
// Entête de colonne
$data=["id","Login","Nom","Prénom","Email","Téléphone",$this->getParameter("labelniveau01"),$this->getParameter("labelniveau02"),"Métier","Fonction","Nom Usage","Autres Prénom","Sexe","Adresse","Date Naissance","Pays Naissance","Ville Naissance"];
fputcsv($csvh, $data, $d, $e);
// Liste des utilisateurs en fonction du role de l'utilisateur en cours
if($this->isGranted('ROLE_ADMIN')) {
$users=$em->getRepository($this->labelentity)->findAll();
}
elseif($this->isGranted('ROLE_MODO')) {
$qb = $em->createQueryBuilder();
$users = $qb->select('user')
->from($this->labelentity,'user')
->from('CadolesCoreBundle:Niveau01','niveau01')
->from('CadolesCoreBundle:UserModo', 'usermodo')
->where('user.niveau01=niveau01.id')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $this->getUser()->getId())
->getQuery()
->getResult();
}
foreach($users as $user) {
$data = [
"id"=>$user->getId(),
"username"=>$user->getUsername(),
"name"=>$user->getLastname(),
"firstname"=>$user->getFirstname(),
"email"=>$user->getEmail(),
"phone"=>$user->getTelephonenumber(),
"niveau01"=>$user->getNiveau01()->getLabel(),
"niveau02"=>($user->getNiveau02()?$user->getNiveau02()->getLabel():""),
"job"=>$user->getJob(),
"position"=>$user->getPosition(),
"usualname"=>$user->getUsualname(),
"givensname"=>$user->getGivensname(),
"gender"=>$user->getGender(),
"postaladress"=>$user->getPostaladress(),
"birthdate"=>($user->getBirthdate()?$user->getBirthdate()->format("d/m/Y"):""),
"birthcountry"=>($user->getBirthcountry()?$user->getBirthcountry()->getLabel():""),
"birthplace"=>($user->getBirthplace()?$user->getBirthplace()->getLabel():""),
];
fputcsv($csvh, $data, $d, $e);
}
fclose($csvh);
$response = new BinaryFileResponse($dir.$file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
return $response;
}
public function importuserAction(Request $request) {
if($this->GetParameter("masteridentity")!="SQL")
@ -762,7 +1015,14 @@ class UserController extends Controller
$error.="<p>Utilisateur = ".$user["login"]." existe déjà</p>";
}
if(strlen($user["login"])<5) $error.="<p>Utilisateur = ".$user["login"]." login trop court doit être >= 5</p>";
// On s'assure que le login n'est pas trop court
if(strlen($user["login"])<5)
$error.="<p>Utilisateur = ".$user["login"]." login trop court doit être >= 5</p>";
// On s'assure que le username ne contient pas des caractères speciaux
$string = preg_replace('~[^@a-zA-Z0-9._-]~', '', $user["login"]);
if($string!=$user["login"])
$error.="<p>Utilisateur = ".$user["login"]." login avec caractères invalide</p>";
// On regarde si le email n'est pas déjà existant
$userbdd=$em->getRepository('CadolesCoreBundle:User')->findOneBy(["email"=>$user["email"]]);
@ -921,6 +1181,31 @@ class UserController extends Controller
return $response;
}
public function viewcalendarAction (Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$user=$this->getUser();
if($user) {
$em = $this->getDoctrine()->getManager();
$view=$request->request->get('view');
$idview=1;
if($view=="month") $idview=1;
if($view=="agendaWeek") $idview=2;
if($view=="agendaDay") $idview=3;
$user->setViewcalendar($idview);
$em->persist($user);
$em->flush();
}
return new Response();
}
protected function getDatas()
{
$em = $this->getDoctrine()->getManager();
@ -986,55 +1271,88 @@ class UserController extends Controller
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$fields=$config->getValue();
$fields=json_decode($fields,true);
if(!is_array($fields)) $fields=[];
if($fields=="") {
// Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
// Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
if(!array_key_exists("firstname",$fields)) {
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prénom";
}
if(!array_key_exists("visible",$fields)) {
$fields["visible"]["perm"]=2;
$fields["visible"]["label"]="Visible";
}
if(!array_key_exists("authlevel",$fields)) {
$fields["authlevel"]["perm"]=2;
$fields["authlevel"]["label"]="Niveau d'authentification";
}
if(!array_key_exists("belongingpopulation",$fields)) {
$fields["belongingpopulation"]["perm"]=2;
$fields["belongingpopulation"]["label"]="Population d'appartenance";
}
if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
}
if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
}
if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]="Niveau 02";
}
if(!array_key_exists("usualname",$fields)) {
$fields["usualname"]["perm"]=1;
$fields["usualname"]["label"]="Nom d'Usage";
}
if(!array_key_exists("gender",$fields)) {
$fields["gender"]["perm"]=1;
$fields["gender"]["label"]="Sexe";
}
if(!array_key_exists("givensname",$fields)) {
$fields["givensname"]["perm"]=1;
$fields["givensname"]["label"]="Autre Prénom";
}
if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
}
if(!array_key_exists("postaladress",$fields)) {
$fields["postaladress"]["perm"]=1;
$fields["postaladress"]["label"]="Adresse";
}
if(!array_key_exists("birthdate",$fields)) {
$fields["birthdate"]["perm"]=1;
$fields["birthdate"]["label"]="Date de Naissance";
}
if(!array_key_exists("birthcountry",$fields)) {
$fields["birthcountry"]["perm"]=1;
$fields["birthcountry"]["label"]="Pays de Naissance";
}
if(!array_key_exists("birthplace",$fields)) {
$fields["birthplace"]["perm"]=1;
$fields["birthplace"]["label"]="Ville de Naissance";
}
if(!array_key_exists("visite",$fields)) {
$fields["visite"]["perm"]=1;
$fields["visite"]["label"]="Visite";
}
return $fields;
}
@ -1059,6 +1377,14 @@ class UserController extends Controller
if($this->getRegistrationBy("username",$data->getUsername())||$this->getRegistrationBy("email",$data->getEmail())) {
$form->addError(new FormError('Une inscription utilise déjà ce login ou cet email'));
}
// Si niveau01 commence par autre = niveau01other obligatoire
$niveau01=strtolower($data->getNiveau01()->getLabel());
if(stripos($niveau01,"autre")===0) {
if(!$data->getNiveau01other()) {
$form->addError(new FormError("Merci d'indiquer votre ".$this->getParameter("labelniveau01")));
}
}
}

View File

@ -54,20 +54,25 @@ class Group
private $fgcanshare;
/**
* @ORM\Column(type="boolean", options={"default" : true})
* @ORM\Column(type="boolean", options={"default" : false})
*/
private $fgcancreatepage;
/**
* @ORM\Column(type="boolean", options={"default" : true})
* @ORM\Column(type="boolean", options={"default" : false})
*/
private $fgcancreateblog;
/**
* @ORM\Column(type="boolean", options={"default" : true})
* @ORM\Column(type="boolean", options={"default" : false})
*/
private $fgcancreatecalendar;
/**
* @ORM\Column(type="boolean", options={"default" : false})
*/
private $fgcancreateproject;
/**
* @ORM\Column(type="boolean", options={"default" : false})
*/
@ -88,6 +93,11 @@ class Group
*/
private $attributes;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $idonlyoffice;
/**
* @ORM\ManyToOne(targetEntity="Cadoles\PortalBundle\Entity\Icon", inversedBy="groups")
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
@ -151,9 +161,13 @@ class Group
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Blog", mappedBy="groups")
*/
protected $blogs;
protected $blogs;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Project", mappedBy="groups")
*/
protected $projects;
/**
* @var ArrayCollection $message
* @var Message
@ -162,6 +176,25 @@ class Group
*/
protected $messages;
/**
* @ORM\OneToMany(targetEntity="Statistic", mappedBy="group", cascade={"persist"}, orphanRemoval=true)
*/
private $statistics;
// Champs temporaire
protected $nosynconly;
public function getNosynconly()
{
return $this->nosynconly;
}
public function setNosynconly($nosynconly)
{
$this->nosynconly = $nosynconly;
return $this;
}
// ATTENTION NE SURTOUT PAS REGEN TOTALEMENT LES SETTER
// Methode custom sur les Addxxx et Removexxx
@ -178,6 +211,7 @@ class Group
$this->notices = new \Doctrine\Common\Collections\ArrayCollection();
$this->calendars = new \Doctrine\Common\Collections\ArrayCollection();
$this->blogs = new \Doctrine\Common\Collections\ArrayCollection();
$this->projects = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
@ -430,6 +464,30 @@ class Group
return $this->attributes;
}
/**
* Set idonlyoffice
*
* @param string $idonlyoffice
*
* @return Group
*/
public function setIdonlyoffice($idonlyoffice)
{
$this->idonlyoffice = $idonlyoffice;
return $this;
}
/**
* Get idonlyoffice
*
* @return string
*/
public function getIdonlyoffice()
{
return $this->idonlyoffice;
}
/**
* Add user
*
@ -903,4 +961,99 @@ class Group
{
return $this->calendarevents;
}
/**
* Add project
*
* @param \Cadoles\PortalBundle\Entity\Project $project
*
* @return Group
*/
public function addProject(\Cadoles\PortalBundle\Entity\Project $project)
{
$project->addGroup($this);
$this->projects[] = $project;
return $this;
}
/**
* Remove project
*
* @param \Cadoles\PortalBundle\Entity\Project $project
*/
public function removeProject(\Cadoles\PortalBundle\Entity\Project $project)
{
$project->removeGroup($this);
$this->projects->removeElement($project);
}
/**
* Get projects
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjects()
{
return $this->projects;
}
/**
* Set fgcancreateproject
*
* @param boolean $fgcancreateproject
*
* @return Group
*/
public function setFgcancreateproject($fgcancreateproject)
{
$this->fgcancreateproject = $fgcancreateproject;
return $this;
}
/**
* Get fgcancreateproject
*
* @return boolean
*/
public function getFgcancreateproject()
{
return $this->fgcancreateproject;
}
/**
* Add statistic
*
* @param \Cadoles\CoreBundle\Entity\Statistic $statistic
*
* @return Group
*/
public function addStatistic(\Cadoles\CoreBundle\Entity\Statistic $statistic)
{
$this->statistics[] = $statistic;
return $this;
}
/**
* Remove statistic
*
* @param \Cadoles\CoreBundle\Entity\Statistic $statistic
*/
public function removeStatistic(\Cadoles\CoreBundle\Entity\Statistic $statistic)
{
$this->statistics->removeElement($statistic);
}
/**
* Get statistics
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getStatistics()
{
return $this->statistics;
}
}

View File

@ -44,6 +44,36 @@ class Niveau01
*/
private $logo;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $header;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $colormain;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $fontcolorhover;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $colorbody;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $fontfacetitle;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $fontfacebody;
/**
* @ORM\Column(type="text", nullable=true)
*/
@ -91,6 +121,10 @@ class Niveau01
*/
protected $items;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Alert", mappedBy="niveau01s")
*/
protected $alerts;
/**
* Constructor
@ -427,4 +461,182 @@ class Niveau01
{
return $this->items;
}
/**
* Add alert
*
* @param \Cadoles\PortalBundle\Entity\Alert $alert
*
* @return Niveau01
*/
public function addAlert(\Cadoles\PortalBundle\Entity\Alert $alert)
{
$this->alerts[] = $alert;
return $this;
}
/**
* Remove alert
*
* @param \Cadoles\PortalBundle\Entity\Alert $alert
*/
public function removeAlert(\Cadoles\PortalBundle\Entity\Alert $alert)
{
$this->alerts->removeElement($alert);
}
/**
* Get alerts
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAlerts()
{
return $this->alerts;
}
/**
* Set header
*
* @param string $header
*
* @return Niveau01
*/
public function setHeader($header)
{
$this->header = $header;
return $this;
}
/**
* Get header
*
* @return string
*/
public function getHeader()
{
return $this->header;
}
/**
* Set colormain
*
* @param string $colormain
*
* @return Niveau01
*/
public function setColormain($colormain)
{
$this->colormain = $colormain;
return $this;
}
/**
* Get colormain
*
* @return string
*/
public function getColormain()
{
return $this->colormain;
}
/**
* Set fontcolorhover
*
* @param string $fontcolorhover
*
* @return Niveau01
*/
public function setFontcolorhover($fontcolorhover)
{
$this->fontcolorhover = $fontcolorhover;
return $this;
}
/**
* Get fontcolorhover
*
* @return string
*/
public function getFontcolorhover()
{
return $this->fontcolorhover;
}
/**
* Set colorbody
*
* @param string $colorbody
*
* @return Niveau01
*/
public function setColorbody($colorbody)
{
$this->colorbody = $colorbody;
return $this;
}
/**
* Get colorbody
*
* @return string
*/
public function getColorbody()
{
return $this->colorbody;
}
/**
* Set fontfacetitle
*
* @param string $fontfacetitle
*
* @return Niveau01
*/
public function setFontfacetitle($fontfacetitle)
{
$this->fontfacetitle = $fontfacetitle;
return $this;
}
/**
* Get fontfacetitle
*
* @return string
*/
public function getFontfacetitle()
{
return $this->fontfacetitle;
}
/**
* Set fontfacebody
*
* @param string $fontfacebody
*
* @return Niveau01
*/
public function setFontfacebody($fontfacebody)
{
$this->fontfacebody = $fontfacebody;
return $this;
}
/**
* Get fontfacebody
*
* @return string
*/
public function getFontfacebody()
{
return $this->fontfacebody;
}
}

View File

@ -123,6 +123,21 @@ class Registration implements UserInterface, \Serializable
*/
private $position;
/**
* @ORM\Column(type="string", length=150, nullable=true)
*/
private $niveau01other;
/**
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $motivation;
/**
* @ORM\Column(type="integer", length=60, nullable=true)
*/
private $groupid;
/**
* @ORM\ManyToOne(targetEntity="Country", inversedBy="registrations")
* @ORM\JoinColumn(nullable=true)
@ -709,4 +724,76 @@ class Registration implements UserInterface, \Serializable
{
return $this->niveau02;
}
/**
* Set groupid
*
* @param integer $groupid
*
* @return Registration
*/
public function setGroupid($groupid)
{
$this->groupid = $groupid;
return $this;
}
/**
* Get groupid
*
* @return integer
*/
public function getGroupid()
{
return $this->groupid;
}
/**
* Set niveau01other
*
* @param string $niveau01other
*
* @return Registration
*/
public function setNiveau01other($niveau01other)
{
$this->niveau01other = $niveau01other;
return $this;
}
/**
* Get niveau01other
*
* @return string
*/
public function getNiveau01other()
{
return $this->niveau01other;
}
/**
* Set motivation
*
* @param string $motivation
*
* @return Registration
*/
public function setMotivation($motivation)
{
$this->motivation = $motivation;
return $this;
}
/**
* Get motivation
*
* @return string
*/
public function getMotivation()
{
return $this->motivation;
}
}

View File

@ -0,0 +1,57 @@
<?php
namespace Cadoles\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="script")
*/
class Script
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $name;
/**
* Get id
*
* @return string
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
*
* @return Script
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
}

View File

@ -0,0 +1,118 @@
<?php
namespace Cadoles\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="statistic")
*/
class Statistic
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string")
*/
protected $keyvalue;
/**
* @var string
*
* @ORM\Column(type="array", nullable=true)
*/
private $value;
/**
* @ORM\ManyToOne(targetEntity="Group", inversedBy="statistics")
* @ORM\JoinColumn(name="group_id", referencedColumnName="id", nullable=true)
*/
private $group;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set keyvalue
*
* @param string $keyvalue
*
* @return Statistic
*/
public function setKeyvalue($keyvalue)
{
$this->keyvalue = $keyvalue;
return $this;
}
/**
* Get keyvalue
*
* @return string
*/
public function getKeyvalue()
{
return $this->keyvalue;
}
/**
* Set value
*
* @param array $value
*
* @return Statistic
*/
public function setValue($value)
{
$this->value = $value;
return $this;
}
/**
* Get value
*
* @return array
*/
public function getValue()
{
return $this->value;
}
/**
* Set group
*
* @param \Cadoles\CoreBundle\Entity\Group $group
*
* @return Statistic
*/
public function setGroup(\Cadoles\CoreBundle\Entity\Group $group = null)
{
$this->group = $group;
return $this;
}
/**
* Get group
*
* @return \Cadoles\CoreBundle\Entity\Group
*/
public function getGroup()
{
return $this->group;
}
}

View File

@ -83,7 +83,7 @@ class User implements UserInterface, \Serializable
private $authlevel;
/**
* @ORM\Column(type="string", length=9)
* @ORM\Column(type="string", length=9, nullable=true)
*/
private $siren;
@ -92,6 +92,17 @@ class User implements UserInterface, \Serializable
*/
private $siret;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $labelniveau01;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $labelniveau02;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
@ -147,6 +158,26 @@ class User implements UserInterface, \Serializable
*/
private $belongingpopulation;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $viewcalendar;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $visitedate;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $visitecpt;
/**
* @ORM\Column(type="string", length=150, nullable=true)
*/
private $niveau01other;
/**
* @ORM\ManyToOne(targetEntity="Country", inversedBy="users")
* @ORM\JoinColumn(nullable=true)
@ -245,6 +276,51 @@ class User implements UserInterface, \Serializable
*/
private $blogarticles;
/**
* @var ArrayCollection $blogcomment
* @var Blogcomment
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Blogcomment", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*/
private $blogcomments;
/**
* @var ArrayCollection $project
* @var Project
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Project", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*/
private $projects;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Project", mappedBy="writers")
*/
private $projectwriters;
/**
* @var ArrayCollection $projecttask
* @var Projecttask
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Projecttask", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*/
private $projecttasks;
/**
* @var ArrayCollection $projecttask
* @var Projecttask
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Projecttask", mappedBy="owner", cascade={"persist"}, orphanRemoval=true)
*/
private $projectownertasks;
/**
* @var ArrayCollection $projectcomment
* @var Projectcomment
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Projectcomment", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*/
private $projectcomments;
/**
* @var ArrayCollection $icon
* @var Icon
@ -271,6 +347,12 @@ class User implements UserInterface, \Serializable
*/
protected $messagesees;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Alert", mappedBy="readers")
*/
protected $alertreaders;
//== CODE A NE PAS REGENERER
/**
* @ORM\PostLoad
@ -624,6 +706,54 @@ class User implements UserInterface, \Serializable
return $this->siret;
}
/**
* Set labelniveau01
*
* @param string $labelniveau01
*
* @return User
*/
public function setLabelniveau01($labelniveau01)
{
$this->labelniveau01 = $labelniveau01;
return $this;
}
/**
* Get labelniveau01
*
* @return string
*/
public function getLabelniveau01()
{
return $this->labelniveau01;
}
/**
* Set labelniveau02
*
* @param string $labelniveau02
*
* @return User
*/
public function setLabelniveau02($labelniveau02)
{
$this->labelniveau02 = $labelniveau02;
return $this;
}
/**
* Get labelniveau02
*
* @return string
*/
public function getLabelniveau02()
{
return $this->labelniveau02;
}
/**
* Set usualname
*
@ -888,6 +1018,30 @@ class User implements UserInterface, \Serializable
return $this->belongingpopulation;
}
/**
* Set viewcalendar
*
* @param integer $viewcalendar
*
* @return User
*/
public function setViewcalendar($viewcalendar)
{
$this->viewcalendar = $viewcalendar;
return $this;
}
/**
* Get viewcalendar
*
* @return integer
*/
public function getViewcalendar()
{
return $this->viewcalendar;
}
/**
* Set birthcountry
*
@ -1459,4 +1613,314 @@ class User implements UserInterface, \Serializable
{
return $this->messagesees;
}
/**
* Add blogcomment
*
* @param \Cadoles\PortalBundle\Entity\Blogcomment $blogcomment
*
* @return User
*/
public function addBlogcomment(\Cadoles\PortalBundle\Entity\Blogcomment $blogcomment)
{
$this->blogcomments[] = $blogcomment;
return $this;
}
/**
* Remove blogcomment
*
* @param \Cadoles\PortalBundle\Entity\Blogcomment $blogcomment
*/
public function removeBlogcomment(\Cadoles\PortalBundle\Entity\Blogcomment $blogcomment)
{
$this->blogcomments->removeElement($blogcomment);
}
/**
* Get blogcomments
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getBlogcomments()
{
return $this->blogcomments;
}
/**
* Add project
*
* @param \Cadoles\PortalBundle\Entity\Project $project
*
* @return User
*/
public function addProject(\Cadoles\PortalBundle\Entity\Project $project)
{
$this->projects[] = $project;
return $this;
}
/**
* Remove project
*
* @param \Cadoles\PortalBundle\Entity\Project $project
*/
public function removeProject(\Cadoles\PortalBundle\Entity\Project $project)
{
$this->projects->removeElement($project);
}
/**
* Get projects
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjects()
{
return $this->projects;
}
/**
* Add projectwriter
*
* @param \Cadoles\PortalBundle\Entity\Project $projectwriter
*
* @return User
*/
public function addProjectwriter(\Cadoles\PortalBundle\Entity\Project $projectwriter)
{
$this->projectwriters[] = $projectwriter;
return $this;
}
/**
* Remove projectwriter
*
* @param \Cadoles\PortalBundle\Entity\Project $projectwriter
*/
public function removeProjectwriter(\Cadoles\PortalBundle\Entity\Project $projectwriter)
{
$this->projectwriters->removeElement($projectwriter);
}
/**
* Get projectwriters
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjectwriters()
{
return $this->projectwriters;
}
/**
* Add projecttask
*
* @param \Cadoles\PortalBundle\Entity\Projecttask $projecttask
*
* @return User
*/
public function addProjecttask(\Cadoles\PortalBundle\Entity\Projecttask $projecttask)
{
$this->projecttasks[] = $projecttask;
return $this;
}
/**
* Remove projecttask
*
* @param \Cadoles\PortalBundle\Entity\Projecttask $projecttask
*/
public function removeProjecttask(\Cadoles\PortalBundle\Entity\Projecttask $projecttask)
{
$this->projecttasks->removeElement($projecttask);
}
/**
* Get projecttasks
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjecttasks()
{
return $this->projecttasks;
}
/**
* Add projectownertask
*
* @param \Cadoles\PortalBundle\Entity\Projecttask $projectownertask
*
* @return User
*/
public function addProjectownertask(\Cadoles\PortalBundle\Entity\Projecttask $projectownertask)
{
$this->projectownertasks[] = $projectownertask;
return $this;
}
/**
* Remove projectownertask
*
* @param \Cadoles\PortalBundle\Entity\Projecttask $projectownertask
*/
public function removeProjectownertask(\Cadoles\PortalBundle\Entity\Projecttask $projectownertask)
{
$this->projectownertasks->removeElement($projectownertask);
}
/**
* Get projectownertasks
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjectownertasks()
{
return $this->projectownertasks;
}
/**
* Add projectcomment
*
* @param \Cadoles\PortalBundle\Entity\Projectcomment $projectcomment
*
* @return User
*/
public function addProjectcomment(\Cadoles\PortalBundle\Entity\Projectcomment $projectcomment)
{
$this->projectcomments[] = $projectcomment;
return $this;
}
/**
* Remove projectcomment
*
* @param \Cadoles\PortalBundle\Entity\Projectcomment $projectcomment
*/
public function removeProjectcomment(\Cadoles\PortalBundle\Entity\Projectcomment $projectcomment)
{
$this->projectcomments->removeElement($projectcomment);
}
/**
* Get projectcomments
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjectcomments()
{
return $this->projectcomments;
}
/**
* Set visitedate
*
* @param \DateTime $visitedate
*
* @return User
*/
public function setVisitedate($visitedate)
{
$this->visitedate = $visitedate;
return $this;
}
/**
* Get visitedate
*
* @return \DateTime
*/
public function getVisitedate()
{
return $this->visitedate;
}
/**
* Set visitecpt
*
* @param integer $visitecpt
*
* @return User
*/
public function setVisitecpt($visitecpt)
{
$this->visitecpt = $visitecpt;
return $this;
}
/**
* Get visitecpt
*
* @return integer
*/
public function getVisitecpt()
{
return $this->visitecpt;
}
/**
* Set niveau01other
*
* @param string $niveau01other
*
* @return User
*/
public function setNiveau01other($niveau01other)
{
$this->niveau01other = $niveau01other;
return $this;
}
/**
* Get niveau01other
*
* @return string
*/
public function getNiveau01other()
{
return $this->niveau01other;
}
/**
* Add alertreader
*
* @param \Cadoles\PortalBundle\Entity\Alert $alertreader
*
* @return User
*/
public function addAlertreader(\Cadoles\PortalBundle\Entity\Alert $alertreader)
{
$this->alertreaders[] = $alertreader;
return $this;
}
/**
* Remove alertreader
*
* @param \Cadoles\PortalBundle\Entity\Alert $alertreader
*/
public function removeAlertreader(\Cadoles\PortalBundle\Entity\Alert $alertreader)
{
$this->alertreaders->removeElement($alertreader);
}
/**
* Get alertreaders
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAlertreaders()
{
return $this->alertreaders;
}
}

View File

@ -9,7 +9,7 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="usergroupe")
* @ORM\Table(name="usergroupe",uniqueConstraints={@ORM\UniqueConstraint(columns={"user_id", "group_id"})})
* @ORM\HasLifecycleCallbacks()
*
* @UniqueEntity(fields={"user", "group"}, message="Cette liaison existe déjà !")
@ -44,7 +44,17 @@ class UserGroup
* @ORM\Column(type="string", length=60, nullable=true)
*/
private $keyvalue;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $visitedate;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $visitecpt;
/**
* Get id
*
@ -150,4 +160,52 @@ class UserGroup
{
return $this->keyvalue;
}
/**
* Set visitedate
*
* @param \DateTime $visitedate
*
* @return UserGroup
*/
public function setVisitedate($visitedate)
{
$this->visitedate = $visitedate;
return $this;
}
/**
* Get visitedate
*
* @return \DateTime
*/
public function getVisitedate()
{
return $this->visitedate;
}
/**
* Set visitecpt
*
* @param integer $visitecpt
*
* @return UserGroup
*/
public function setVisitecpt($visitecpt)
{
$this->visitecpt = $visitecpt;
return $this;
}
/**
* Get visitecpt
*
* @return integer
*/
public function getVisitecpt()
{
return $this->visitecpt;
}
}

View File

@ -54,11 +54,6 @@
$session->set($config->getId(), strval($config->getValue()));
}
// Calcul des couleurs
$color = $this->container->get('cadoles.core.service.color');
$color->setColor();
// Utilisateur en cours
$curentuserid=0;
$token = $this->token_storage->getToken();
@ -79,28 +74,36 @@
// App activate
$app=[];
$app["importuser_activate"] =($masteridentity=="SQL");
$app["portal_activate"] =$this->container->getParameter('portal_activate');
$app["cron_activate"] =$this->container->getParameter('cron_activate');
$app["module_activate"] =$this->container->getParameter('module_activate');
$app["page_activate"] =$this->container->getParameter('page_activate');
$app["item_activate"] =$this->container->getParameter('item_activate');
$app["alert_activate"] =$this->container->getParameter('alert_activate');
$app["calendar_activate"] =$this->container->getParameter('calendar_activate');
$app["blog_activate"] =$this->container->getParameter('blog_activate');
$app["flux_activate"] =$this->container->getParameter('flux_activate');
$app["notice_activate"] =$this->container->getParameter('notice_activate');
$app["syncenvole_activate"] =$this->container->getParameter('syncenvole_activate');
$app["activate_widlimesurvey"] =$this->container->getParameter('activate_widlimesurvey');
$app["activate_widmoodle"] =$this->container->getParameter('activate_widmoodle');
$app["activate_widpiwik"] =$this->container->getParameter('activate_widpiwik');
$app["activate_widwordpress"] =$this->container->getParameter('activate_widwordpress');
$app["importuser_activate"] =($masteridentity=="SQL");
$app["portal_activate"] =$this->container->getParameter('portal_activate');
$app["cron_activate"] =$this->container->getParameter('cron_activate');
$app["module_activate"] =$this->container->getParameter('module_activate');
$app["page_activate"] =$this->container->getParameter('page_activate');
$app["item_activate"] =$this->container->getParameter('item_activate');
$app["alert_activate"] =$this->container->getParameter('alert_activate');
$app["calendar_activate"] =$this->container->getParameter('calendar_activate');
$app["blog_activate"] =$this->container->getParameter('blog_activate');
$app["flux_activate"] =$this->container->getParameter('flux_activate');
$app["notice_activate"] =$this->container->getParameter('notice_activate');
$app["syncenvole_activate"] =$this->container->getParameter('syncenvole_activate');
$app["activate_widlimesurvey"] =$this->container->getParameter('activate_widlimesurvey');
$app["activate_widmoodle"] =$this->container->getParameter('activate_widmoodle');
$app["activate_widpiwik"] =$this->container->getParameter('activate_widpiwik');
$app["activate_widwordpress"] =$this->container->getParameter('activate_widwordpress');
$app["widbalado_activate_syncenvole"] =$this->container->getParameter('widbalado_activate_syncenvole');
$app["widgepi_activate_syncenvole"] =$this->container->getParameter('widgepi_activate_syncenvole');
$app["widnextcloud_activate_syncenvole"] =$this->container->getParameter('widnextcloud_activate_syncenvole');
$app["widpiwik_activate_syncenvole"] =$this->container->getParameter('widpiwik_activate_syncenvole');
$app["widsacoche_activate_syncenvole"] =$this->container->getParameter('widsacoche_activate_syncenvole');
// 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');
@ -108,6 +111,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";
@ -254,6 +258,7 @@
$session->set('cancreatepage',false);
$session->set('cancreatecalendar',false);
$session->set('cancreateblog',false);
$session->set('cancreateproject',false);
$session->remove("sublogo");
if($curentuser!="anon.") {
@ -263,6 +268,7 @@
if($group->getFgcancreatepage()) $session->set('cancreatepage',true);
if($group->getFgcancreatecalendar()) $session->set('cancreatecalendar',true);
if($group->getFgcancreateblog()) $session->set('cancreateblog',true);
if($group->getFgcancreateproject()) $session->set('cancreateproject',true);
}
$niveau01=$curentuser->getNiveau01();
@ -272,7 +278,51 @@
if(!is_null($niveau01->getLogo()))
$session->set("sublogo", $niveau01->getLogo());
if(!is_null($niveau01->getHeader()))
$session->set("header", $niveau01->getHeader());
if(!is_null($niveau01->getColormain()))
$session->set("colormain", $niveau01->getColormain());
if(!is_null($niveau01->getFontcolorhover()))
$session->set("fontcolorhover", $niveau01->getFontcolorhover());
if(!is_null($niveau01->getColorbody()))
$session->set("colorbody", $niveau01->getColorbody());
if(!is_null($niveau01->getFontfacebody()))
$session->set("fontfacebody", $niveau01->getFontfacebody());
if(!is_null($niveau01->getFontfacetitle()))
$session->set("fontfacetitle", $niveau01->getFontfacetitle());
}
}
// Calcul des couleurs
$color = $this->container->get('cadoles.core.service.color');
$color->setColor();
// Visite
if($curentuser!="anon.") {
$now=new \DateTime();
if(!$curentuser->getVisitedate()) {
$curentuser->setVisitedate($now);
$curentuser->setVisitecpt($curentuser->getVisitecpt()+1);
$this->em->persist($curentuser);
$this->em->flush();
}
else {
$visitedate=clone $curentuser->getVisitedate();
$visitedate->add(new \DateInterval("PT1H"));
if($visitedate<$now) {
$curentuser->setVisitedate($now);
$curentuser->setVisitecpt($curentuser->getVisitecpt()+1);
$this->em->persist($curentuser);
$this->em->flush();
}
}
}
}
}

View File

@ -39,7 +39,10 @@ class syncGroup implements EventSubscriber
if(!($entity instanceof Group)) return;
// Synchronisation uniquement si changement de valeur
$this->shouldSync = $args->hasChangedField('label');
$this->shouldSync = $args->hasChangedField('label') ||
$args->hasChangedField('description') ||
$args->hasChangedField('owner') ||
$args->hasChangedField('fgcanshare');
if($args->hasChangedField('label')) $this->oldid=$args->getOldValue('label');
}
@ -74,6 +77,7 @@ class syncGroup implements EventSubscriber
}
public function removeGroup($group) {
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche dans l'annuaire
@ -84,13 +88,19 @@ class syncGroup implements EventSubscriber
if(count($results)) {
$ldap->deleteGroup($group);
}
}
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->delGroup($group);
}
}
public function upsertGroup($group, $force = false)
{
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche dans l'annuaire
if(isset($this->oldid))
@ -109,7 +119,13 @@ class syncGroup implements EventSubscriber
else {
$ldap->addGroup($group);
}
}
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->syncGroup($group,$this->oldid);
}
}
public function getBaseGroup() {

View File

@ -20,6 +20,7 @@ class syncNiveau01 implements EventSubscriber
$this->em = $em;
$this->shouldSync = true;
$this->changeSiren = true;
$this->changeLabel = true;
}
public function getSubscribedEvents()
@ -41,6 +42,7 @@ class syncNiveau01 implements EventSubscriber
// Synchronisation uniquement si changement de valeur
$this->shouldSync = $args->hasChangedField('label')||$args->hasChangedField('siren');
$this->changeSiren = $args->hasChangedField('siren');
$this->changeLabel = $args->hasChangedField('label');
if($args->hasChangedField('label')) $this->oldid=$args->getOldValue('label');
@ -57,7 +59,7 @@ class syncNiveau01 implements EventSubscriber
}
if ($entity instanceof Niveau01 && $this->changeSiren) {
if ($entity instanceof Niveau01 && ($this->changeSiren||$this->changeLabel)) {
// On change le SIRET de l'ensemble des utlisateurs associés à cet établissement
$qb = $this->em->createQueryBuilder();
$datas= $qb ->select('table')->from('CadolesCoreBundle:User','table')
@ -67,10 +69,11 @@ class syncNiveau01 implements EventSubscriber
->getResult();
foreach($datas as $data) {
$data->setSiren($entity->getSiren());
$data->setLabelniveau01($entity->getLabel());
$this->em->persist($data);
$this->em->flush();
}
}
}
}
public function postPersist(LifecycleEventArgs $args)

View File

@ -22,6 +22,7 @@ class syncNiveau02 implements EventSubscriber
$this->em = $em;
$this->shouldSync = true;
$this->changeSiret = true;
$this->changeLabel = true;
}
public function getSubscribedEvents()
@ -43,6 +44,7 @@ class syncNiveau02 implements EventSubscriber
// Synchronisation uniquement si changement de valeur
$this->shouldSync = $args->hasChangedField('label')||$args->hasChangedField('siret')||$args->hasChangedField('postaladress');
$this->changeSiret = $args->hasChangedField('siret');
$this->changeLabel = $args->hasChangedField('label');
if($args->hasChangedField('label')) $this->oldid=$args->getOldValue('label');
}
@ -56,7 +58,7 @@ class syncNiveau02 implements EventSubscriber
$this->upsertNiveau02($entity);
}
if ($entity instanceof Niveau02 && $this->changeSiret) {
if ($entity instanceof Niveau02 && ($this->changeSiret||$this->changeLabel)) {
// On change le SIRET de l'ensemble des utlisateurs associés à cet établissement
$qb = $this->em->createQueryBuilder();
$datas= $qb ->select('table')->from('CadolesCoreBundle:User','table')
@ -66,6 +68,7 @@ class syncNiveau02 implements EventSubscriber
->getResult();
foreach($datas as $data) {
$data->setSiret($entity->getSiret());
$data->setLabelniveau02($entity->getLabel());
$this->em->persist($data);
$this->em->flush();
}

View File

@ -53,6 +53,8 @@ class syncUser implements EventSubscriber
$args->hasChangedField('niveau02') ||
$args->hasChangedField('siren') ||
$args->hasChangedField('siret') ||
$args->hasChangedField('labelniveau01') ||
$args->hasChangedField('labelniveau02') ||
$args->hasChangedField('authlevel') ||
$args->hasChangedField('usualname') ||
$args->hasChangedField('telephonenumber') ||
@ -68,10 +70,15 @@ class syncUser implements EventSubscriber
;
$entity->setSiren($entity->getNiveau01()->getSiren());
if($entity->getNiveau02()!==null)
$entity->setLabelniveau01($entity->getNiveau01()->getLabel());
if($entity->getNiveau02()!==null) {
$entity->setSiret($entity->getNiveau02()->getSiret());
else
$entity->setLabelniveau02($entity->getNiveau02()->getLabel());
}
else {
$entity->setSiret(null);
$entity->setLabelniveau02(null);
}
}
public function postUpdate(LifecycleEventArgs $args)
@ -105,6 +112,7 @@ class syncUser implements EventSubscriber
}
public function removeUser($user) {
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche l'utilisateur dans l'annuaire
@ -115,13 +123,19 @@ class syncUser implements EventSubscriber
if(count($results)) {
$ldap->deleteUser($user);
}
}
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->delUser($user);
}
}
public function upsertUser($user, $force = false)
{
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche l'utilisateur dans l'annuaire
$criteria = '(uid='.$user->getUsername().')';
@ -140,6 +154,12 @@ class syncUser implements EventSubscriber
$ldap->addGroupUser($user);
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->syncUser($user);
}
// On ajoute l'utilisateur au groupe 'Tout le Monde' quoi qu'il arrive
$fgall=$this->em->getRepository('CadolesCoreBundle:Group')->findBy(array('fgall'=>true));
if($fgall) {

View File

@ -39,7 +39,8 @@ class syncUserGroup implements EventSubscriber
if(!($entity instanceof UserGroup)) return;
$this->shouldSync = true;
// Aucune raison de mettre à jour LDAP et Only sur une modification
$this->shouldSync = false;
}
public function postUpdate(LifecycleEventArgs $args)
@ -72,6 +73,7 @@ class syncUserGroup implements EventSubscriber
}
public function removeGroup($group) {
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche dans l'annuaire
@ -82,13 +84,19 @@ class syncUserGroup implements EventSubscriber
if(count($results)) {
$ldap->delUserGroup($group);
}
}
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->delUserGroup($group);
}
}
public function upsertGroup($group, $force = false)
{
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche dans l'annuaire
$criteria = '(cn='.$group->getGroup()->getLabel().')';
@ -100,7 +108,13 @@ class syncUserGroup implements EventSubscriber
if(count($results) > 0) {
$ldap->addUserGroup($group);
}
}
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->addUserGroup($group);
}
}
public function getBaseGroup() {

View File

@ -108,13 +108,36 @@ class uploadListener
if (in_array(strtolower($file->GetExtension()), array('jpg', 'jpeg', 'jpe', 'png', 'gif', 'bmp'))) {
$fs = new Filesystem();
$fs->copy($pathname."/".$directory."/".$filename,$pathname."/".$directory."/thumb/".$filename);
$max_width=350;
$max_width=300;
$width = $this->getWidth($pathname."/".$directory."/thumb/".$filename);
$height = $this->getHeight($pathname."/".$directory."/thumb/".$filename);
$scale = $max_width/$width;
$this->resizeImage($pathname."/".$directory."/thumb/".$filename,$width,$height,$scale);
}
if (in_array(strtolower($file->GetExtension()), array('pdf'))) {
$im = new \Imagick();
$im->setResolution(300, 300);
$im->readImage($pathname."/".$directory."/".$filename."[0]");
$im->setImageBackgroundColor('#ffffff');
$im = $im->flattenImages();
$im->setImageFormat('jpeg');
$fs->mkdir($pathname."/".$directory."/thumb");
$im->writeImage($pathname."/".$directory."/thumb/".$filename.".jpg");
$fs->rename($pathname."/".$directory."/thumb/".$filename.".jpg", $pathname."/".$directory."/thumb/".$filename);
}
if($fs->exists($pathname."/".$directory."/thumb/".$filename)) {
$fs->mkdir($pathname."/".$directory."/thumbmini");
$fs->copy($pathname."/".$directory."/thumb/".$filename,$pathname."/".$directory."/thumbmini/".$filename);
$max_width=60;
$width = $this->getWidth($pathname."/".$directory."/thumbmini/".$filename);
$height = $this->getHeight($pathname."/".$directory."/thumbmini/".$filename);
$scale = $max_width/$width;
$this->resizeImage($pathname."/".$directory."/thumbmini/".$filename,$width,$height,$scale);
}
if (strpos($directory, 'widget') === 0) {
$tmp=explode("-",$directory);
$widgetid=$tmp[1];
@ -125,8 +148,31 @@ class uploadListener
if($fgexit) $message="Modification fichier<br>".$filename;
else $message="Création fichier<br>".$filename;
$key=$this->em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$this->token->getToken()->getUser()])->getKeyvalue();
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key,$this->token->getToken()->getUser()->getId(),$group->getId(),$message);
$usergroup=$this->em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$this->token->getToken()->getUser()]);
if($usergroup) {
$key=$usergroup->getKeyvalue();
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key,$this->token->getToken()->getUser()->getId(),$group->getId(),$message);
}
}
}
}
}
if (strpos($directory, 'projecttask') === 0) {
$tmp=explode("-",$directory);
$projecttaskid=$tmp[1];
$projecttask=$this->em->getRepository("CadolesPortalBundle:Projecttask")->find($projecttaskid);
if($projecttask) {
foreach($projecttask->getProject()->getGroups() as $group) {
if($group->getFgcanshare()) {
if($fgexit) $message="Modification fichier dans la tâche ".$projecttask->getName()."<br>".$filename;
else $message="Création fichier dans la tâche ".$projecttask->getName()."<br>".$filename;
$usergroup=$this->em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$this->token->getToken()->getUser()]);
if($usergroup) {
$key=$usergroup->getKeyvalue();
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key,$this->token->getToken()->getUser()->getId(),$group->getId(),$message);
}
}
}
}

View File

@ -54,18 +54,18 @@ class GroupType extends AbstractType
"query_builder"=> function (EntityRepository $er) {
return $er->createQueryBuilder('page')->where('page.parentfor=:parentfor')->setParameter('parentfor', 'group');
},
"disabled" => ($options["mode"]=="delete"||$options["masteridentity"]!="SQL"?true:false),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]=="delete"?true:false))
]);
if($options["access"]=="config") {
if($options["access"]=="config" || $options["mode"] == "update") {
$builder->add('owner',
Select2EntityType::class, array(
'label' => "Propriétaire",
'disabled' => ($options["mode"]=="delete"?true:false),
"required" => false,
'multiple' => false,
'remote_route' => 'cadoles_core_config_user_ajax_selectlist',
'remote_route' => 'cadoles_core_'.$options["access"].'_user_ajax_selectlist',
'class' => 'Cadoles\coreBundle\Entity\User',
'primary_key' => 'id',
'text_property' => 'username',
@ -110,6 +110,15 @@ class GroupType extends AbstractType
)
);
$builder->add("fgcancreateproject",
ChoiceType::class,array(
"label" =>"Permission de créer des Projets",
'disabled' => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"),
"choices" => $choices
)
);
$builder->add('pages', Select2EntityType::class, [
'label' => 'Afficher les Pages',
'class' => 'CadolesPortalBundle:Page',
@ -195,6 +204,24 @@ class GroupType extends AbstractType
'placeholder' => 'Selectionner des blogs',
]);
$builder->add('projects', Select2EntityType::class, [
'label' => 'Afficher les Projets',
'class' => 'CadolesPortalBundle:Project',
'multiple' => true,
'remote_route' => 'cadoles_portal_config_ajax_project_seleclist',
'primary_key' => 'id',
'text_property' => 'name',
'minimum_input_length' => 0,
'page_limit' => 100,
'allow_clear' => true,
'delay' => 250,
'cache' => false,
'cache_timeout' => 60000,
'language' => 'fr',
'placeholder' => 'Selectionner des projets',
]);
$builder->add('fluxs', Select2EntityType::class, [
'label' => 'Afficher les Flux',
'class' => 'CadolesPortalBundle:Flux',
@ -267,7 +294,7 @@ class GroupType extends AbstractType
);
// Si masteridentity = LDAP alors on demande le filtre des utilisateurs qui appartiennent à ce groupe
if($options["masteridentity"]=="LDAP")
if($options["masteridentity"]=="LDAP"&&$options["access"]=="config")
{
$choices=array("oui" => "1","non" => "0");
$builder->add("fgassoc",

View File

@ -0,0 +1,63 @@
<?php
namespace Cadoles\CoreBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Ivory\CKEditorBundle\Form\Type\CKEditorType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\EntityManager;
class MailType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('submit',
SubmitType::class, array(
"label" => "Envoyer l'inviation",
"attr" => array("class" => "btn btn-success")
)
);
$builder->add('destinataire',
TextType::class, array(
"label" =>"Destinataires",
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"),
"mapped" => false
)
);
$builder->add('subject',
TextType::class, array(
"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' => false,
'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"),
'config' => ["height" => "150px",'filebrowserUploadRoute' => 'cadoles_portal_user_pagewidget_upload']
]);
}
public function configureOptions(OptionsResolver $resolver)
{
}
}

View File

@ -0,0 +1,116 @@
<?php
namespace Cadoles\CoreBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Tetranz\Select2EntityBundle\Form\Type\Select2EntityType;
use Ivory\CKEditorBundle\Form\Type\CKEditorType;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr\Join;
class MailingType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$session = new Session();
$builder->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",
));
}
}

View File

@ -57,7 +57,68 @@ class Niveau01Type extends AbstractType
)
);
$choices=array(
"Helvetica" => "Helvetica",
"Peacesans" => "Peacesans",
"Acme-Regular" => "Acme-Regular",
"Redressed" => "Redressed",
"Roboto-Regular" => "Roboto-Regular",
"Justanotherhand-Regular" => "Justanotherhand-Regular",
"Lato-Regular" => "Lato-Regular",
"ABeeZee-Regular" => "ABeeZee-Regular",
"AlfaSlabOne-Regular" => "AlfaSlabOne-Regular",
"Anton-Regular" => "Anton-Regular",
"FredokaOne-Regular" => "FredokaOne-Regular",
"Overpass-Black" => "Overpass-Black",
"Righteous-Regular" => "Righteous-Regular",
"Signika-Regular" => "Signika-Regular",
"Teko-Bold" => "Teko-Bold",
"LuckiestGuy-Regular" => "LuckiestGuy-Regular",
"Baloo-Regular" => "Baloo-Regular",
"CarterOne-Regular" => "CarterOne-Regular",
"Chewy-Regular" => "Chewy-Regular",
"Courgette-Regular" => "Courgette-Regular",
"LexendDeca-Regular" => "LexendDeca-Regular",
"RubikMonoOne-Regular" => "RubikMonoOne-Regular",
"SigmarOne-Regular" => "SigmarOne-Regular",
"Viga-Regular" => "Viga-Regular",
);
$builder->add('colormain',
TextType::class,
array("label" => "Couleur principale",
"attr" => array("class" => "pick-a-color form-control"),
'required' => false));
$builder->add('fontcolorhover',
TextType::class,
array("label" => "Couleur de texte sur couleur Principale",
"attr" => array("class" => "pick-a-color form-control"),
'required' => false));
$builder->add('colorbody',
TextType::class,
array("label" => "Couleur de fond des pages",
"attr" => array("class" => "pick-a-color form-control"),
'required' => false));
$builder->add("fontfacebody", ChoiceType::class,
array("label" =>"Police principale",
"attr" => array("class" => "form-control"),
'required' => false,
"choices" => $choices));
$builder->add("fontfacetitle", ChoiceType::class,
array("label" =>"Police pour les titres",
"attr" => array("class" => "form-control"),
'required' => false,
"choices" => $choices));
$builder->add('logo',HiddenType::class);
$builder->add('header',HiddenType::class);
// Si masteridentity = LDAP alors on demande obligatoirement le filtre des utilisateurs qui appartiennent à ce niveau01
if($options["masteridentity"]=="LDAP")

View File

@ -18,6 +18,7 @@ use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Query\Expr\Join;
class Niveau02Type extends AbstractType
{
@ -31,16 +32,37 @@ class Niveau02Type extends AbstractType
)
);
$builder->add('niveau01',
EntityType::class,
array(
"class" => "CadolesCoreBundle:Niveau01",
"label" => $session->get('labelniveau01'),
"choice_label" => "label",
"disabled" => ($options["mode"]!="submit"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]!="submit"?true:false))
)
);
if($options["user"]->getRole()=="ROLE_MODO") {
$userid=$options["user"]->getId();
$builder->add('niveau01',
EntityType::class,
array(
"class" => "CadolesCoreBundle:Niveau01",
"label" => $session->get('labelniveau01'),
"choice_label" => "label",
"disabled" => ($options["mode"]!="submit"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]!="submit"?true:false)),
"query_builder"=> function (EntityRepository $er) use($userid) {
$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;
},
)
);
}
else {
$builder->add('niveau01',
EntityType::class,
array(
"class" => "CadolesCoreBundle:Niveau01",
"label" => $session->get('labelniveau01'),
"choice_label" => "label",
"disabled" => ($options["mode"]!="submit"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]!="submit"?true:false))
)
);
}
$builder->add('label',
TextType::class, array(
@ -73,7 +95,8 @@ class Niveau02Type extends AbstractType
{
$resolver->setDefaults(array(
'data_class' => 'Cadoles\CoreBundle\Entity\Niveau02',
'mode' => "string"
'mode' => "string",
'user' => 'Cadoles\CoreBundle\Entity\User',
));
}
}

View File

@ -33,24 +33,33 @@ class RegistrationType extends AbstractType
$builder->add('submit',
SubmitType::class, array(
"label" => ($options["mode"]=="delete"?"Confirmer la Suppression":"Valider"),
"label" => ($options["mode"]=="delete"?"Confirmer la Suppression":($options["mode"]=="submit"?"Confirmer":"Enregistrer et envoyer le mail")),
"attr" => ($options["mode"]=="delete"?array("class" => "btn btn-danger"):array("class" => "btn btn-success"))
)
);
if($options["mode"]=="send") {
$builder->add('save',
SubmitType::class, array(
"label" => "Enregistrer sans envoyer le mail",
"attr" => array("class" => "btn btn-success")
)
);
}
# Obligatoire
$builder->add('username',
TextType::class, array(
"label" =>"Login",
"disabled" => ($options["mode"]=="submit"?false:true),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px", "autocomplete" => "new-password")
)
);
$builder->add('lastname',
TextType::class, array(
"label" =>"Nom de Famille",
"disabled" => ($options["mode"]=="delete"||$options["mode"]=="send"?true:false),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -58,7 +67,7 @@ class RegistrationType extends AbstractType
$builder->add('email',
EmailType::class, array(
"label" =>"Mail",
"disabled" => ($options["mode"]=="delete"||$options["mode"]=="send"?true:false),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -67,9 +76,20 @@ class RegistrationType extends AbstractType
EntityType::class,
array("class" => "CadolesCoreBundle:Niveau01",
"label" => $session->get('labelniveau01'),
'placeholder' => '== Choisir '.$session->get('labelniveau01').' ==',
"choice_label" => "label",
"disabled" => ($options["mode"]=="delete"||$options["mode"]=="send"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]=="submit"?false:true))));
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]=="delete"?true:false))));
$builder->add('niveau01other',
TextType::class, array(
"label" =>"Autre ".$session->get('labelniveau01'),
"disabled" => ($options["mode"]=="delete"?true:false),
"required" => false,
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
# Password
if($options["mode"]!="delete"&&$options["mode"]!="send") {
@ -77,7 +97,7 @@ class RegistrationType extends AbstractType
RepeatedType::class, array(
"type" => PasswordType::class,
"required" => ($options["mode"]=="submit"?true:false),
"first_options" => array("label" => "Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px")),
"first_options" => array("label" => "Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px", "autocomplete" => "new-password")),
"second_options" => array('label' => 'Confirmer Mot de Passe',"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"))
)
);
@ -98,7 +118,7 @@ class RegistrationType extends AbstractType
TextType::class, array(
"label" =>"Prénom",
"required" => (!array_key_exists("firstname",$fields)?false:($fields["firstname"]["perm"]==2)),
"disabled" => ($options["mode"]=="delete"||$options["mode"]=="send"?true:false),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -110,7 +130,7 @@ class RegistrationType extends AbstractType
ChoiceType::class,array(
"label" =>"Visible",
"required" => (!array_key_exists("visible",$fields)?false:($fields["visible"]["perm"]==2)),
'disabled' => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"),
"choices" => $choices
)
@ -122,7 +142,7 @@ class RegistrationType extends AbstractType
TextType::class, array(
"label" => "Nom d'Usage",
"required" => (!array_key_exists("usualname",$fields)?false:($fields["usualname"]["perm"]==2)),
"disabled" => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -133,7 +153,7 @@ class RegistrationType extends AbstractType
TextType::class, array(
"label" => "Autre Prénom",
"required" => (!array_key_exists("givensname",$fields)?false:($fields["givensname"]["perm"]==2)),
"disabled" => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -144,7 +164,7 @@ class RegistrationType extends AbstractType
TextType::class, array(
"label" => "Téléphone",
"required" => (!array_key_exists("telephonenumber",$fields)?false:($fields["telephonenumber"]["perm"]==2)),
"disabled" => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -155,7 +175,7 @@ class RegistrationType extends AbstractType
TextareaType::class, array(
"label" => "Adresse",
"required" => (!array_key_exists("postaladress",$fields)?false:($fields["postaladress"]["perm"]==2)),
"disabled" => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px; height: 90px")
)
);
@ -166,7 +186,7 @@ class RegistrationType extends AbstractType
DateType::class, array(
"label" => "Date de Naissance",
"required" => (!array_key_exists("birthdate",$fields)?false:($fields["birthdate"]["perm"]==2)),
"disabled" => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"widget" => 'single_text',
"format" => "dd/MM/yyyy",
"html5" => false,
@ -182,7 +202,7 @@ class RegistrationType extends AbstractType
ChoiceType::class,array(
"label" =>"Sexe",
"required" => (!array_key_exists("gender",$fields)?false:($fields["gender"]["perm"]==2)),
'disabled' => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"),
"choices" => $choices
)
@ -194,7 +214,7 @@ class RegistrationType extends AbstractType
TextType::class, array(
"label" => "Métier",
"required" => (!array_key_exists("job",$fields)?false:($fields["job"]["perm"]==2)),
"disabled" => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -205,7 +225,7 @@ class RegistrationType extends AbstractType
TextType::class, array(
"label" => "Fonction",
"required" => (!array_key_exists("position",$fields)?false:($fields["position"]["perm"]==2)),
"disabled" => ($options["mode"]=="submit"?false:true),
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -216,7 +236,7 @@ class RegistrationType extends AbstractType
$builder->add('birthcountry',
Select2EntityType::class, array(
'label' => "Pays de Naissance",
'disabled' => ($options["mode"]=="delete"?true:false),
"disabled" => ($options["mode"]=="delete"?true:false),
"required" => (!array_key_exists("birthcountry",$fields)?false:($fields["birthcountry"]["perm"]==2)),
'multiple' => false,
'remote_route' => 'cadoles_core_ajax_country_list',
@ -240,8 +260,8 @@ class RegistrationType extends AbstractType
$builder->add('birthplace',
Select2EntityType::class, array(
'label' => "Ville de Naissance",
'disabled' => ($options["mode"]=="delete"?true:false),
"required" => false,
"disabled" => ($options["mode"]=="delete"?true:false),
"required" => false,
'multiple' => false,
'remote_route' => 'cadoles_core_ajax_city_list',
'class' => 'Cadoles\coreBundle\Entity\City',
@ -265,7 +285,7 @@ class RegistrationType extends AbstractType
$builder->add('niveau02',
Select2EntityType::class, array(
'label' => $session->get('labelniveau02'),
'disabled' => ($options["mode"]=="delete"?true:false),
"disabled" => ($options["mode"]=="delete"?true:false),
"required" => (!array_key_exists("niveau02",$fields)?false:($fields["niveau02"]["perm"]==2)),
'multiple' => false,
'remote_route' => 'cadoles_core_ajax_niveau02_list',
@ -287,6 +307,14 @@ class RegistrationType extends AbstractType
}
}
$builder->add('motivation',
TextareaType::class, array(
"label" => "Motivation",
"required" => false,
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px; height: 90px")
)
);
}
public function configureOptions(OptionsResolver $resolver)

View File

@ -16,6 +16,8 @@ use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Tetranz\Select2EntityBundle\Form\Type\Select2EntityType;
@ -42,7 +44,7 @@ class UserType extends AbstractType
TextType::class, array(
"label" =>"Login",
"disabled" => ($options["mode"]=="submit"?false:true),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px", "autocomplete" => "new-password")
)
);
@ -82,6 +84,7 @@ class UserType extends AbstractType
EntityType::class,
array("class" => "CadolesCoreBundle:Niveau01",
"label" => $session->get('labelniveau01'),
'placeholder' => '== Choisir '.$session->get('labelniveau01').' ==',
"choice_label" => "label",
"query_builder"=> function (EntityRepository $er) use($access,$perm,$userid) {
if($access=="config") {
@ -100,14 +103,24 @@ class UserType extends AbstractType
},
"disabled" => ($options["mode"]=="delete"||$options["masteridentity"]!="SQL"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]=="delete"?true:false))));
$builder->add('niveau01other',
TextType::class, array(
"label" =>"Autre ".$session->get('labelniveau01'),
"disabled" => ($options["mode"]=="delete"?true:false),
"required" => false,
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
if($options["mode"]!="delete"&&$options["masteridentity"]=="SQL") {
$builder->add('password',
RepeatedType::class, array(
"type" => PasswordType::class,
"required" => ($options["mode"]=="submit"?true:false),
"options" => array("always_empty" => true),
"first_options" => array("label" => "Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px")),
"first_options" => array("label" => "Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px", "autocomplete" => "new-password")),
"second_options" => array('label' => 'Confirmer Mot de Passe',"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"))
)
);
@ -360,6 +373,22 @@ class UserType extends AbstractType
}
}
if(!array_key_exists("visite",$fields)) $fields["visite"]["perm"]==2;
if($fields["visite"]["perm"]!=0) {
$builder->add('visitedate', DateTimeType::class, [
"label" => 'Date de dernière visite',
"disabled" => true,
"required" => ($fields["visite"]["perm"]==2),
"widget" => 'single_text',
]);
$builder->add('visitecpt', IntegerType::class, [
"label" => 'Nombre de visites',
"required" => ($fields["visite"]["perm"]==2),
"disabled" => true,
]);
}
# Avatar
$builder->add('avatar',HiddenType::class, array("empty_data" => "noavatar.png"));

View File

@ -41,6 +41,9 @@ cadoles_core_ldap_login:
path: /ldaplogin
defaults: { _controller: CadolesCoreBundle:Security:login }
cadoles_core_redirect:
path: /user/redirect/{route}/{id}
defaults: { _controller: CadolesCoreBundle:Security:redirect }
#== Crop Image ===========================================================================================================
cadoles_core_crop01:
@ -76,7 +79,7 @@ cadoles_core_config_file_download:
#-- Access user
cadoles_core_user_file_upload:
path: /user/config/file/upload/{id}/{type}
path: /user/file/upload/{id}/{type}
defaults: { _controller: CadolesCoreBundle:File:upload, access: user }
cadoles_core_user_file_delete:
@ -132,6 +135,12 @@ cadoles_core_config:
defaults: { _controller: CadolesCoreBundle:Config:home }
#== Mail =================================================================================================================
cadoles_core_mail_invitationgroup:
path: /user/mail/invitationgroup/{id}
defaults: { _controller: CadolesCoreBundle:Mail:invitationgroup }
#== Commun Config Commun =================================================================================================
cadoles_core_config_commun:
path: /config/commun
@ -165,10 +174,18 @@ cadoles_core_config_datauser:
path: /config/commun/datauser
defaults: { _controller: CadolesCoreBundle:Config:datauser }
cadoles_core_config_datauserdefault:
path: /config/commun/datauserdefault
defaults: { _controller: CadolesCoreBundle:Config:datauserdefault }
cadoles_core_config_datausers:
path: /config/commun/datausers
defaults: { _controller: CadolesCoreBundle:Config:datausers }
cadoles_core_config_datausersdefault:
path: /config/commun/datausersdefault
defaults: { _controller: CadolesCoreBundle:Config:datausersdefault }
#== Registration =========================================================================================================
#-- Access config
@ -240,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 }
@ -252,6 +273,10 @@ cadoles_core_config_importuser_filectrl:
path: /config/importuserfilectrl
defaults: { _controller: CadolesCoreBundle:User:importuserfilectrl }
cadoles_core_config_user_export:
path: /config/exportuser
defaults: { _controller: CadolesCoreBundle:User:exportuser }
#-- Access user
cadoles_core_user:
path: /user
@ -261,10 +286,21 @@ cadoles_core_user_user_ajax_list:
path: /user/user/ajax/list
defaults: { _controller: CadolesCoreBundle:User:ajaxlist, access: user }
cadoles_core_user_user_ajax_selectlist:
path: /user/user/ajax/selectlist
defaults: { _controller: CadolesCoreBundle:User:selectlist, access: user }
cadoles_core_user_users:
path: /user/users
defaults: { _controller: CadolesCoreBundle:User:list, access: user }
cadoles_core_user_view:
path: /user/view/{id}
defaults: { _controller: CadolesCoreBundle:User:view }
cadoles_core_user_viewcalendar:
path: /user/viewcalendar
defaults: { _controller: CadolesCoreBundle:User:viewcalendar }
#== Niveau01 =============================================================================================================
cadoles_core_config_niveau01:
@ -291,6 +327,9 @@ cadoles_core_config_niveau01_logo:
path: /config/niveau01/logo
defaults: { _controller: CadolesCoreBundle:Niveau01:logo }
cadoles_core_config_niveau01_header:
path: /config/niveau01/header
defaults: { _controller: CadolesCoreBundle:Niveau01:header }
#== Niveau02 =============================================================================================================
cadoles_core_config_niveau02:
@ -340,6 +379,10 @@ cadoles_core_config_group_users:
path: /config/group/users/{id}
defaults: { _controller: CadolesCoreBundle:Group:users, access: config }
cadoles_core_config_group_statistic:
path: /config/group/statistic/{id}
defaults: { _controller: CadolesCoreBundle:Group:statistic, access: config }
cadoles_core_config_group_ajax_usersnotin:
path: /config/group/ajax/usersnotin/{id}
defaults: { _controller: CadolesCoreBundle:Group:ajaxusersnotin, access: config }
@ -360,6 +403,10 @@ cadoles_core_config_group_ajax_switchmanager:
path: /config/group/ajax/switchmanager
defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: config }
cadoles_core_config_group_usergroup_export:
path: /config/group/users/export/{id}
defaults: { _controller: CadolesCoreBundle:Group:usergroupexport, access: config }
#-- Access user
cadoles_core_user_group:
path: /user/group
@ -385,6 +432,10 @@ cadoles_core_user_group_users:
path: /user/group/users/{id}
defaults: { _controller: CadolesCoreBundle:Group:users, access: user }
cadoles_core_user_group_statistic:
path: /user/group/statistic/{id}
defaults: { _controller: CadolesCoreBundle:Group:statistic, access: user }
cadoles_core_user_group_out:
path: /user/group/out/{id}
defaults: { _controller: CadolesCoreBundle:Group:out, access: user }
@ -409,7 +460,9 @@ cadoles_core_user_group_ajax_switchmanager:
path: /user/group/ajax/switchmanager
defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: user }
cadoles_core_user_group_usergroup_export:
path: /user/group/users/export/{id}
defaults: { _controller: CadolesCoreBundle:Group:usergroupexport, access: user }
#== Whitelist ============================================================================================================
@ -433,10 +486,24 @@ cadoles_core_config_whitelist_ajax_list:
path: /config/whitelist/ajax/list
defaults: { _controller: CadolesCoreBundle:Whitelist:ajaxlist }
#== Statistic =============================================================================================================
cadoles_core_config_statistic:
path: /config/statistic
defaults: { _controller: CadolesCoreBundle:Statistic:list }
#== REST ==================================================================================================================
cadoles_core_rest_login:
path: /rest/login
defaults: { _controller: CadolesCoreBundle:Rest:login }
cadoles_core_rest_user:
path: /rest/user/{key}/{login}
defaults: { _controller: CadolesCoreBundle:Rest:user }
path: /rest/user/{login}
defaults: { _controller: CadolesCoreBundle:Rest:user }
cadoles_core_rest_users:
path: /rest/users
defaults: { _controller: CadolesCoreBundle:Rest:users }
cadoles_core_rest_groups:
path: /rest/groups
defaults: { _controller: CadolesCoreBundle:Rest:groups }

View File

@ -1,4 +1,28 @@
services:
Cadoles\CoreBundle\Command\InitDataCommand:
tags:
- { name: 'console.command', command: 'Core:InitData' }
Cadoles\CoreBundle\Command\OnlyCommand:
tags:
- { name: 'console.command', command: 'Core:Only' }
Cadoles\CoreBundle\Command\PurgeFileCommand:
tags:
- { name: 'console.command', command: 'Core:PurgeFile' }
Cadoles\CoreBundle\Command\PurgeRegistrationCommand:
tags:
- { name: 'console.command', command: 'Core:PurgeRegistration' }
Cadoles\CoreBundle\Command\SetPasswordCommand:
tags:
- { name: 'console.command', command: 'Core:SetPassword' }
Cadoles\CoreBundle\Command\SynchroCommand:
tags:
- { name: 'console.command', command: 'Core:Synchro' }
cadoles.core.session.listener:
public: true
class: Cadoles\CoreBundle\EventListener\sessionListener
@ -92,6 +116,11 @@ services:
- [setBaseGroup, ["%ldap_basegroup%"]]
- [setLdapSync, ["%ldap_sync%","%masteridentity%"]]
cadoles.core.service.only:
public: true
class: Cadoles\CoreBundle\Service\onlyService
arguments: ['@service_container','@doctrine.orm.entity_manager']
cadoles.core.service.mail:
public: true
class: Cadoles\CoreBundle\Service\mailService
@ -127,4 +156,9 @@ services:
cadoles.saml_attribute_mapper:
public: true
class: Cadoles\CoreBundle\Service\samlAttributeMapperService
class: Cadoles\CoreBundle\Service\samlAttributeMapperService

File diff suppressed because one or more lines are too long

View File

@ -18,6 +18,10 @@ body {
margin-top:100px;
}
.imageshadow {
filter: drop-shadow(1px 1px 1px #222);
}
/*== HEADER =============================================================================================================================================*/
.header {
@ -119,6 +123,57 @@ body {
.navbarsmall { display: block !important}
}
.navbar-top-links li.active a, .dropdownactive {
border-bottom: 5px solid #FFF;
}
.dropdown-submenu {
position: relative;
}
.dropdown-submenu>.dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
-webkit-border-radius: 0 6px 6px 6px;
-moz-border-radius: 0 6px 6px;
border-radius: 0 6px 6px 6px;
}
.dropdown-submenu:hover>.dropdown-menu {
display: block;
}
.dropdown-submenu>a:after {
display: block;
content: " ";
float: right;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
border-width: 5px 0 5px 5px;
border-left-color: #ccc;
margin-top: 5px;
margin-right: -10px;
}
.dropdown-submenu:hover>a:after {
border-left-color: #fff;
}
.dropdown-submenu.pull-left {
float: none;
}
.dropdown-submenu.pull-left>.dropdown-menu {
left: -100%;
margin-left: 10px;
-webkit-border-radius: 6px 0 6px 6px;
-moz-border-radius: 6px 0 6px 6px;
border-radius: 6px 0 6px 6px;
}
/*== SIDEBAR ============================================================================================================================================*/
@ -204,9 +259,9 @@ span.item-drag {
.grid {
list-style-type: none;
margin: 0px;
margin: 0 auto;
padding: 0;
width: 100%;
/*width: 100%;*/
min-height: 30px;
background: transparent;
}
@ -232,6 +287,10 @@ span.item-drag {
display: block;
}
.grid-item .grid-item-content {
/*height: 100%;*/
}
.grid-item .grid-item-content:hover {
opacity: 0.8;
}
@ -261,7 +320,6 @@ span.item-drag {
.grid-item-logo {
display: inline-block;
padding: 10px;
width: 40%;
height: 150px;
vertical-align: middle;
@ -270,27 +328,23 @@ span.item-drag {
.grid-item .item-link img {
display: block;
margin: 10px auto;
max-width: 100%;
max-height: 110px;
//max-height: 110px;
height: auto;
}
.grid-item-img {
filter: drop-shadow(1px 1px 1px #222);
}
.grid-item .grid-item-title {
display: inline-block;
vertical-align: top;
padding: 15px 5px;;
padding: 0px 5px;;
font-size: 12px;
width: 50%;
line-height: 1;
}
.grid-item .grid-item-title h2 {
font-size: 20px;
font-size: 17px;
margin: 10px 0 0 0;
border-bottom: 1px solid #fff;
padding-bottom: 5px;
@ -304,8 +358,9 @@ span.item-drag {
a.item-preview {
display: none;
position: absolute;
right: 5px;
right: 0px;
top: 2px;
width:20px;
z-index: 1000;
}
@ -372,11 +427,11 @@ a.item-heart {
.grid .grid-small {
width:100px;
height:120px;
height:130px;
}
.grid .grid-small .item-link {
height:120px;
height:130px;
}
.grid .grid-small .grid-item-logo {
@ -387,7 +442,7 @@ a.item-heart {
.grid .grid-small .grid-item-logo img {
height: 60px;
width: auto;
margin: 5px auto;
margin: 10px auto;
}
.grid .grid-small .grid-item-title {
display: block;
@ -397,10 +452,46 @@ a.item-heart {
text-align:center;
width: 100%;
}
.grid .grid-small .grid-item-title h2 { font-size:10px; border-bottom: none; }
.grid .grid-small .grid-item-title h2 {
font-size:10px;
border-bottom: none;
max-height: 55px;
overflow-y: hidden;
}
.grid .grid-small .grid-item-title span { display: none }
.grid .grid-verysmall {
width:80px;
height:105px;
}
.grid .grid-verysmall .item-link {
height:105px;
}
.grid .grid-verysmall .grid-item-logo {
display: block;
height:40px;
width:auto;
}
.grid .grid-verysmall .grid-item-logo img {
height: 40px;
width: auto;
margin: 10px auto;
}
.grid .grid-verysmall .grid-item-title {
display: block;
vertical-align: top;
font-size: 12px;
line-height: 1;
text-align:center;
width: 100%;
}
.grid .grid-verysmall .grid-item-title h2 { font-size:10px; border-bottom: none; }
.grid .grid-verysmall .grid-item-title span { display: none }
.grid .grid-list {
width:100%;
height:auto;
@ -466,7 +557,7 @@ a.item-heart {
/* Preview */
.grid .grid-preview {
width:19.2%;
min-width:220px;
min-width:185px;
height:auto;
text-align: left;
}
@ -500,7 +591,7 @@ a.item-heart {
word-wrap: break-word;
width: 100%;
display: block;
line-height: initial;
line-height: 14px;
padding: 0px;
}
@ -508,13 +599,14 @@ a.item-heart {
border: none;
margin: 0px;
padding: 0px;
font-size: 18px;
}
.grid .grid-preview .grid-item-title small {
margin-bottom: 10px;
font-size:9px;
}
@media (max-width: 991px) {
.grid .grid-preview {
width:32.666666667%;
@ -603,6 +695,9 @@ a.item-heart {
position: absolute;
margin-left:50px;
cursor: pointer;
font-size: 1.5vw;
height: 50px;
overflow-y: hidden;
}
.widgetheader iframe,
@ -611,6 +706,10 @@ a.item-heart {
border:0px;
}
.widgetbody img {
max-width: 100%;
}
.frameitem {
position: absolute;
right: 0px;
@ -619,6 +718,12 @@ a.item-heart {
height:100%;
}
@media (max-width: 991px) {
.widgetheader .title {
font-size: 25px;
}
}
/*== FEED ===============================================================================================================================================*/
.cat-list-feed {
@ -702,9 +807,6 @@ a.item-heart {
}
.blogarticle {
margin-bottom:150px;
}
@ -729,6 +831,10 @@ a.item-heart {
margin-bottom:0px;
}
.blogarticle .blogbody img{
max-width: 100%;
}
.blogarticle .blogbody {
font-size: 18px;
}
@ -743,4 +849,53 @@ a.item-heart {
}
/* Project */
.projectpreview .projectitle{
text-align:center;
text-transform: uppercase;
}
.projecttask {
margin-bottom:150px;
}
.projecttask .projecttitle h1{
text-align:left
}
.projecttask .projectimage {
width:100%;
height:450px;
background-size:cover;
background-position: center;
margin-top:20px;
}
.projecttask .projecttitle {
margin-bottom:20px;
}
.projecttask .projecttitle legend {
margin-bottom:0px;
}
.projecttask .projectbody img{
max-width: 100%;
}
.projecttask .projectbody {
font-size: 18px;
}
.projecttask .projectsidebar {
border-left: 1px solid #e5e5e5;
margin-top: 20px;
}
.projecttask .projectsidebartitle {
margin-bottom:0px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Some files were not shown because too many files have changed in this diff Show More