diff --git a/dicos/90_ninegate.xml b/dicos/90_ninegate.xml index 277ae646..b4bb906f 100644 --- a/dicos/90_ninegate.xml +++ b/dicos/90_ninegate.xml @@ -112,13 +112,20 @@ - oui + + + + oui + + + + @@ -129,9 +136,6 @@ - - - non @@ -140,17 +144,12 @@ - - - non - - non @@ -158,7 +157,6 @@ - non @@ -168,6 +166,17 @@ + + + + 5555 + + + 5556 + + + + @@ -193,6 +202,7 @@ Paramètres associés aux look de l'application Paramètres associés aux modules à activer Paramètres associés au Portail + Paramètres associés au Serveur WEBSOCKET Paramètres associés aux Mails Paramètres associés à la Base de Données @@ -249,6 +259,7 @@ ninegate_activate_notice ninegate_activate_syncenvole ninegate_activate_cron + ninegate_activate_websocket ninegate_noreply ninegate_smtphost @@ -365,6 +376,24 @@ + + + non + + ninegate_websocket_url + ninegate_websocket_portinterne + ninegate_websocket_portexterne + + + + oui + activer_apache + web_url + None + + + + oui diff --git a/src/ninegate-1.0/app/config/config.yml b/src/ninegate-1.0/app/config/config.yml index 0e26e14c..cd10f260 100644 --- a/src/ninegate-1.0/app/config/config.yml +++ b/src/ninegate-1.0/app/config/config.yml @@ -136,10 +136,14 @@ gos_web_socket: shared_config: true server: port: %websocket_port% #The port the socket server will listen on - host: %weburl% #The host ip to bind to + host: %websocket_host% #The host ip to bind to router: resources: - "@CadolesWebsocketBundle/Resources/config/topic.yml" + pushers: + wamp: + host: %websocket_host% + port: %websocket_portinterne% # ckeditor configuration ivory_ck_editor: diff --git a/src/ninegate-1.0/app/config/security.yml b/src/ninegate-1.0/app/config/security.yml index 35fc8633..080e8072 100644 --- a/src/ninegate-1.0/app/config/security.yml +++ b/src/ninegate-1.0/app/config/security.yml @@ -41,7 +41,10 @@ security: check_path: /saml/acs access_control: - - { path: ^/websocket, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_USER] } - - { path: ^/user, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_USER] } + - { path: ^/websocket, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_ANIM, ROLE_USER] } + - { path: ^/user/group/submit, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_ANIM] } + - { path: ^/user/group/update, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_ANIM] } + - { path: ^/user/group/delete, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_ANIM] } + - { path: ^/user, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_ANIM, ROLE_USER] } - { path: ^/config, roles: [ROLE_ADMIN, ROLE_MODO] } diff --git a/src/ninegate-1.0/app/config/twig.yml b/src/ninegate-1.0/app/config/twig.yml index 41f2689f..0dab5d2e 100644 --- a/src/ninegate-1.0/app/config/twig.yml +++ b/src/ninegate-1.0/app/config/twig.yml @@ -9,6 +9,7 @@ twig: cron_activate: %cron_activate% portal_activate: %portal_activate% item_activate: %item_activate% + websocket_activate: %websocket_activate% activate_widsonde: %activate_widsonde% widsonde_url: %widsonde_url% diff --git a/src/ninegate-1.0/composer.json b/src/ninegate-1.0/composer.json index 984894cd..e8126ef1 100644 --- a/src/ninegate-1.0/composer.json +++ b/src/ninegate-1.0/composer.json @@ -22,6 +22,7 @@ "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", diff --git a/src/ninegate-1.0/composer.lock b/src/ninegate-1.0/composer.lock index 4fb47c91..a4a1702f 100644 --- a/src/ninegate-1.0/composer.lock +++ b/src/ninegate-1.0/composer.lock @@ -4,9 +4,62 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "f60fc0c21429506c604cf52a1c57f8b1", - "content-hash": "ad29a4c36418b2be7c6f60297d160623", + "hash": "0430b523c39e2d254cfe1fb91666119b", + "content-hash": "36178f772c0f0ff6bd5ac90edd474c25", "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.1.4", @@ -589,16 +642,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "1.10.2", + "version": "1.10.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "1f99e6645030542079c57d4680601a4a8778a1bd" + "reference": "907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/1f99e6645030542079c57d4680601a4a8778a1bd", - "reference": "1f99e6645030542079c57d4680601a4a8778a1bd", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c", + "reference": "907dafe1ba73c4c3b0f0ae8cfc1b9958c002e58c", "shasum": "" }, "require": { @@ -670,7 +723,7 @@ "orm", "persistence" ], - "time": "2019-02-06 13:18:04" + "time": "2019-04-04 08:03:53" }, { "name": "doctrine/doctrine-cache-bundle", @@ -1004,21 +1057,24 @@ }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "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": { @@ -1026,8 +1082,8 @@ } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -1048,13 +1104,16 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "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" + "parser", + "php" ], - "time": "2014-09-09 13:34:57" + "time": "2019-06-08 11:03:04" }, { "name": "doctrine/migrations", @@ -1330,30 +1389,25 @@ }, { "name": "evenement/evenement", - "version": "v2.1.0", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/igorw/evenement.git", - "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a" + "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a", - "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a", + "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", + "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^6.0||^5.7||^4.8.35" + "phpunit/phpunit": "^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { "psr-0": { "Evenement": "src" @@ -1374,7 +1428,7 @@ "event-dispatcher", "event-emitter" ], - "time": "2017-07-17 17:39:19" + "time": "2017-07-23 21:35:13" }, { "name": "fig/link-util", @@ -1538,137 +1592,39 @@ ], "time": "2018-10-04 17:09:23" }, - { - "name": "gos/ratchet", - "version": "v0.3.6", - "source": { - "type": "git", - "url": "https://github.com/GeniusesOfSymfony/Ratchet.git", - "reference": "f72ee4f70f24da1fc232537088e6c368ae4211e0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GeniusesOfSymfony/Ratchet/zipball/f72ee4f70f24da1fc232537088e6c368ae4211e0", - "reference": "f72ee4f70f24da1fc232537088e6c368ae4211e0", - "shasum": "" - }, - "require": { - "guzzle/http": "^3.6", - "php": ">=5.3.9", - "react/socket": "^0.3 || ^0.4", - "symfony/http-foundation": "^2.2|^3.0|^4.0", - "symfony/routing": "^2.2|^3.0|^4.0" - }, - "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" - ], - "time": "2017-12-12 16:15:11" - }, - { - "name": "gos/ratchet-stack", - "version": "v0.2.0", - "source": { - "type": "git", - "url": "https://github.com/GeniusesOfSymfony/RatchetStack.git", - "reference": "a7dfc817bf8b786c575022e290ab0769dbf09814" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GeniusesOfSymfony/RatchetStack/zipball/a7dfc817bf8b786c575022e290ab0769dbf09814", - "reference": "a7dfc817bf8b786c575022e290ab0769dbf09814", - "shasum": "" - }, - "require": { - "cboden/ratchet": "^0.3|^0.4", - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Gos\\Component\\RatchetStack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Johann Saunier", - "email": "johann_27@hotmail.fr" - } - ], - "description": "Ratchet Stack", - "homepage": "https://github.com/GeniusesOfSymfony/RatchetStack", - "keywords": [ - "Ratchet", - "application", - "stack" - ], - "time": "2018-05-02 13:03:51" - }, { "name": "gos/web-socket-bundle", - "version": "v1.8.11", + "version": "v1.8.13", "source": { "type": "git", "url": "https://github.com/GeniusesOfSymfony/WebSocketBundle.git", - "reference": "a26b71e9014a73b95ddbb02a813157563a296a48" + "reference": "016f4b49a16731945fc3ee1e0781f53167e393cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/a26b71e9014a73b95ddbb02a813157563a296a48", - "reference": "a26b71e9014a73b95ddbb02a813157563a296a48", + "url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/016f4b49a16731945fc3ee1e0781f53167e393cf", + "reference": "016f4b49a16731945fc3ee1e0781f53167e393cf", "shasum": "" }, "require": { - "gos/pnctl-event-loop-emitter": "~0.1", - "gos/pubsub-router-bundle": "~0.2", - "gos/ratchet": "~0.3.5", - "gos/ratchet-stack": "~0.1", - "gos/websocket-client": "~0.1.0", + "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" - }, - "replace": { - "cboden/ratchet": "~0.3.0" + "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": "*", - "ocramius/proxy-manager": "~1.0", + "symfony/cache": ">=3.1 to use symfony/cache as a client driver", "symfony/proxy-manager-bridge": "~2.3" }, "type": "symfony-bundle", @@ -1705,7 +1661,7 @@ "io", "websocket" ], - "time": "2017-09-29 16:00:43" + "time": "2018-07-29 14:31:46" }, { "name": "gos/websocket-client", @@ -1864,208 +1820,6 @@ ], "time": "2018-11-20 10:41:34" }, - { - "name": "guzzle/common", - "version": "v3.9.2", - "target-dir": "Guzzle/Common", - "source": { - "type": "git", - "url": "https://github.com/Guzzle3/common.git", - "reference": "2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Guzzle3/common/zipball/2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc", - "reference": "2e36af7cf2ce3ea1f2d7c2831843b883a8e7b7dc", - "shasum": "" - }, - "require": { - "php": ">=5.3.2", - "symfony/event-dispatcher": ">=2.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7-dev" - } - }, - "autoload": { - "psr-0": { - "Guzzle\\Common": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Common libraries used by Guzzle", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "collection", - "common", - "event", - "exception" - ], - "abandoned": "guzzle/guzzle", - "time": "2014-08-11 04:32:36" - }, - { - "name": "guzzle/http", - "version": "v3.9.2", - "target-dir": "Guzzle/Http", - "source": { - "type": "git", - "url": "https://github.com/Guzzle3/http.git", - "reference": "1e8dd1e2ba9dc42332396f39fbfab950b2301dc5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Guzzle3/http/zipball/1e8dd1e2ba9dc42332396f39fbfab950b2301dc5", - "reference": "1e8dd1e2ba9dc42332396f39fbfab950b2301dc5", - "shasum": "" - }, - "require": { - "guzzle/common": "self.version", - "guzzle/parser": "self.version", - "guzzle/stream": "self.version", - "php": ">=5.3.2" - }, - "suggest": { - "ext-curl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7-dev" - } - }, - "autoload": { - "psr-0": { - "Guzzle\\Http": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "HTTP libraries used by Guzzle", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "Guzzle", - "client", - "curl", - "http", - "http client" - ], - "abandoned": "guzzle/guzzle", - "time": "2014-08-11 04:32:36" - }, - { - "name": "guzzle/parser", - "version": "v3.9.2", - "target-dir": "Guzzle/Parser", - "source": { - "type": "git", - "url": "https://github.com/Guzzle3/parser.git", - "reference": "6874d171318a8e93eb6d224cf85e4678490b625c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Guzzle3/parser/zipball/6874d171318a8e93eb6d224cf85e4678490b625c", - "reference": "6874d171318a8e93eb6d224cf85e4678490b625c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7-dev" - } - }, - "autoload": { - "psr-0": { - "Guzzle\\Parser": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Interchangeable parsers used by Guzzle", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "URI Template", - "cookie", - "http", - "message", - "url" - ], - "abandoned": "guzzle/guzzle", - "time": "2014-02-05 18:29:46" - }, - { - "name": "guzzle/stream", - "version": "v3.9.2", - "target-dir": "Guzzle/Stream", - "source": { - "type": "git", - "url": "https://github.com/Guzzle3/stream.git", - "reference": "60c7fed02e98d2c518dae8f97874c8f4622100f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Guzzle3/stream/zipball/60c7fed02e98d2c518dae8f97874c8f4622100f0", - "reference": "60c7fed02e98d2c518dae8f97874c8f4622100f0", - "shasum": "" - }, - "require": { - "guzzle/common": "self.version", - "php": ">=5.3.2" - }, - "suggest": { - "guzzle/http": "To convert Guzzle request objects to PHP streams" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7-dev" - } - }, - "autoload": { - "psr-0": { - "Guzzle\\Stream": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle stream wrapper component", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "Guzzle", - "component", - "stream" - ], - "abandoned": "guzzle/guzzle", - "time": "2014-05-01 21:36:02" - }, { "name": "guzzlehttp/guzzle", "version": "6.3.3", @@ -2184,33 +1938,37 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.5.2", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "9f83dded91781a01c63574e387eaa769be769115" + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", - "reference": "9f83dded91781a01c63574e387eaa769be769115", + "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" + "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.5-dev" + "dev-master": "1.6-dev" } }, "autoload": { @@ -2247,7 +2005,7 @@ "uri", "url" ], - "time": "2018-12-04 20:46:45" + "time": "2019-07-01 23:21:34" }, { "name": "incenteev/composer-parameter-handler", @@ -2726,91 +2484,40 @@ ], "time": "2018-11-05 09:00:11" }, - { - "name": "ocramius/package-versions", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "ad8a245decad4897cc6b432743913dad0d69753c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/ad8a245decad4897cc6b432743913dad0d69753c", - "reference": "ad8a245decad4897cc6b432743913dad0d69753c", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0", - "php": "~7.0" - }, - "require-dev": { - "composer/composer": "^1.3", - "ext-zip": "*", - "humbug/humbug": "dev-master", - "phpunit/phpunit": "^6.4" - }, - "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": "2017-11-24 11:07:03" - }, { "name": "ocramius/proxy-manager", - "version": "2.0.4", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "a55d08229f4f614bf335759ed0cf63378feeb2e6" + "reference": "57e9272ec0e8deccf09421596e0e2252df440e11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/a55d08229f4f614bf335759ed0cf63378feeb2e6", - "reference": "a55d08229f4f614bf335759ed0cf63378feeb2e6", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/57e9272ec0e8deccf09421596e0e2252df440e11", + "reference": "57e9272ec0e8deccf09421596e0e2252df440e11", "shasum": "" }, "require": { - "ocramius/package-versions": "^1.0", - "php": "7.0.0 - 7.0.5 || ^7.0.7", - "zendframework/zend-code": "3.0.0 - 3.0.2 || ^3.0.4" + "php": ">=5.3.3", + "zendframework/zend-code": ">2.2.5,<3.0" }, "require-dev": { - "couscous/couscous": "^1.4.0", "ext-phar": "*", - "phpbench/phpbench": "^0.11.2", - "phpunit/phpunit": "^5.4.6", - "squizlabs/php_codesniffer": "^2.6.0" + "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": "3.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2826,7 +2533,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" + "homepage": "http://ocramius.github.com/" } ], "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", @@ -2838,7 +2545,7 @@ "proxy pattern", "service proxies" ], - "time": "2016-11-04 15:53:15" + "time": "2015-08-09 04:28:19" }, { "name": "oneup/uploader-bundle", @@ -3255,24 +2962,24 @@ }, { "name": "ralouphie/getallheaders", - "version": "2.0.5", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", - "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": ">=5.3" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "~3.7.0", - "satooshi/php-coveralls": ">=1.0" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", "autoload": { @@ -3291,7 +2998,7 @@ } ], "description": "A polyfill for getallheaders.", - "time": "2016-02-11 07:05:27" + "time": "2019-03-08 08:55:37" }, { "name": "ramsey/uuid", @@ -3376,29 +3083,161 @@ "time": "2018-07-19 23:38:55" }, { - "name": "react/event-loop", - "version": "v0.4.3", + "name": "ratchet/rfc6455", + "version": "v0.2.5", "source": { "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f" + "url": "https://github.com/ratchetphp/RFC6455.git", + "reference": "c62f7cd95ffbb6e94fd657be694fc7372ecd6e62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/8bde03488ee897dc6bb3d91e4e17c353f9c5252f", - "reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f", + "url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/c62f7cd95ffbb6e94fd657be694fc7372ecd6e62", + "reference": "c62f7cd95ffbb6e94fd657be694fc7372ecd6e62", "shasum": "" }, "require": { - "php": ">=5.4.0" + "guzzlehttp/psr7": "^1.0", + "php": ">=5.4.2" }, "require-dev": { - "phpunit/phpunit": "~4.8" + "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.1.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f", + "reference": "a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f", + "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/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-07-18 09:47:47" + }, + { + "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", - "ext-libev": "*", - "ext-libevent": ">=0.1.0" + "ext-event": "~1.0 for ExtEventLoop", + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" }, "type": "library", "autoload": { @@ -3410,12 +3249,12 @@ "license": [ "MIT" ], - "description": "Event loop abstraction layer that libraries can use for evented I/O.", + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", "keywords": [ "asynchronous", "event-loop" ], - "time": "2017-04-27 10:56:23" + "time": "2018-07-09 13:51:04" }, { "name": "react/promise", @@ -3464,30 +3303,84 @@ "time": "2019-01-07 21:25:54" }, { - "name": "react/socket", - "version": "v0.4.6", + "name": "react/promise-timer", + "version": "v1.5.1", "source": { "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "cf074e53c974df52388ebd09710a9018894745d2" + "url": "https://github.com/reactphp/promise-timer.git", + "reference": "35fb910604fd86b00023fc5cda477c8074ad0abc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/cf074e53c974df52388ebd09710a9018894745d2", - "reference": "cf074e53c974df52388ebd09710a9018894745d2", + "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/35fb910604fd86b00023fc5cda477c8074ad0abc", + "reference": "35fb910604fd86b00023fc5cda477c8074ad0abc", "shasum": "" }, "require": { - "evenement/evenement": "~2.0|~1.0", - "php": ">=5.3.0", - "react/event-loop": "0.4.*|0.3.*", - "react/promise": "^2.0 || ^1.1", - "react/stream": "^0.4.5" + "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": { - "clue/block-react": "^1.1", - "phpunit/phpunit": "~4.8", - "react/socket-client": "^0.5.1" + "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": { @@ -3499,38 +3392,38 @@ "license": [ "MIT" ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server for React PHP", + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", "keywords": [ - "Socket" + "Connection", + "Socket", + "async", + "reactphp", + "stream" ], - "time": "2017-01-26 09:23:38" + "time": "2019-07-10 10:11:14" }, { "name": "react/stream", - "version": "v0.4.6", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/reactphp/stream.git", - "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee" + "reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/44dc7f51ea48624110136b535b9ba44fd7d0c1ee", - "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee", + "url": "https://api.github.com/repos/reactphp/stream/zipball/50426855f7a77ddf43b9266c22320df5bf6c6ce6", + "reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6", "shasum": "" }, "require": { - "evenement/evenement": "^2.0|^1.0", - "php": ">=5.3.8" + "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", - "react/event-loop": "^0.4|^0.3", - "react/promise": "^2.0|^1.0" - }, - "suggest": { - "react/event-loop": "^0.4", - "react/promise": "^2.0" + "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" }, "type": "library", "autoload": { @@ -3542,12 +3435,18 @@ "license": [ "MIT" ], - "description": "Basic readable and writable stream interfaces that support piping.", + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", "keywords": [ + "event-driven", + "io", + "non-blocking", "pipe", - "stream" + "reactphp", + "readable", + "stream", + "writable" ], - "time": "2017-01-25 14:44:14" + "time": "2019-01-01 16:15:09" }, { "name": "robrichards/xmlseclibs", @@ -3589,21 +3488,21 @@ }, { "name": "sensio/distribution-bundle", - "version": "v5.0.24", + "version": "v5.0.25", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", - "reference": "59eac70f15f97ee945924948a6f5e2f6f86b7a4b" + "reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/59eac70f15f97ee945924948a6f5e2f6f86b7a4b", - "reference": "59eac70f15f97ee945924948a6f5e2f6f86b7a4b", + "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/80a38234bde8321fb92aa0b8c27978a272bb4baf", + "reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf", "shasum": "" }, "require": { "php": ">=5.3.9", - "sensiolabs/security-checker": "~5.0", + "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", @@ -3637,7 +3536,7 @@ "configuration", "distribution" ], - "time": "2018-12-14 17:36:15" + "time": "2019-06-18 15:43:58" }, { "name": "sensio/framework-extra-bundle", @@ -3882,30 +3781,30 @@ }, { "name": "symfony/monolog-bundle", - "version": "v3.3.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "572e143afc03419a75ab002c80a2fd99299195ff" + "reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/572e143afc03419a75ab002c80a2fd99299195ff", - "reference": "572e143afc03419a75ab002c80a2fd99299195ff", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/7fbecb371c1c614642c93c6b2cbcdf723ae8809d", + "reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d", "shasum": "" }, "require": { "monolog/monolog": "~1.22", "php": ">=5.6", - "symfony/config": "~2.7|~3.3|~4.0", - "symfony/dependency-injection": "~2.7|~3.4.10|^4.0.10", - "symfony/http-kernel": "~2.7|~3.3|~4.0", - "symfony/monolog-bridge": "~2.7|~3.3|~4.0" + "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": "~2.7|~3.3|~4.0", - "symfony/phpunit-bridge": "^3.3|^4.0", - "symfony/yaml": "~2.7|~3.3|~4.0" + "symfony/console": "~3.4|~4.0", + "symfony/phpunit-bridge": "^3.4.19|^4.0", + "symfony/yaml": "~3.4|~4.0" }, "type": "symfony-bundle", "extra": { @@ -3941,7 +3840,7 @@ "log", "logging" ], - "time": "2018-11-04 09:58:13" + "time": "2019-06-20 12:18:19" }, { "name": "symfony/orm-pack", @@ -4430,16 +4329,16 @@ }, { "name": "symfony/symfony", - "version": "v3.4.26", + "version": "v3.4.29", "source": { "type": "git", "url": "https://github.com/symfony/symfony.git", - "reference": "1b89e7baec9891c323bbf1ec81af77d901fc60c9" + "reference": "4c9b6d7d898457ae2189efdfaca58712269fc994" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/symfony/zipball/1b89e7baec9891c323bbf1ec81af77d901fc60c9", - "reference": "1b89e7baec9891c323bbf1ec81af77d901fc60c9", + "url": "https://api.github.com/repos/symfony/symfony/zipball/4c9b6d7d898457ae2189efdfaca58712269fc994", + "reference": "4c9b6d7d898457ae2189efdfaca58712269fc994", "shasum": "" }, "require": { @@ -4458,7 +4357,7 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php56": "~1.0", "symfony/polyfill-php70": "~1.6", - "twig/twig": "^1.35|^2.4.4" + "twig/twig": "^1.40|^2.9" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", @@ -4537,7 +4436,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", + "symfony/phpunit-bridge": "~3.4|~4.0|~5.0", "symfony/security-acl": "~2.8|~3.0" }, "type": "library", @@ -4581,34 +4480,34 @@ "keywords": [ "framework" ], - "time": "2019-04-17 15:57:27" + "time": "2019-06-26 13:56:55" }, { "name": "tetranz/select2entity-bundle", - "version": "v2.9.5", - "target-dir": "Tetranz/Select2EntityBundle", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/tetranz/select2entity-bundle.git", - "reference": "c57281f4af06ca0c7e74c27fcc4bf8c95a1beaad" + "reference": "67b61be1a23228bc4e77a2e59ba5fff8fd9fffab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/c57281f4af06ca0c7e74c27fcc4bf8c95a1beaad", - "reference": "c57281f4af06ca0c7e74c27fcc4bf8c95a1beaad", + "url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/67b61be1a23228bc4e77a2e59ba5fff8fd9fffab", + "reference": "67b61be1a23228bc4e77a2e59ba5fff8fd9fffab", "shasum": "" }, "require": { "doctrine/orm": ">=2.4", - "php": ">=5.4.0" + "php": ">=5.4.0", + "twig/twig": ">=2.9" }, "type": "symfony-bundle", "extra": { "branch-alias": [] }, "autoload": { - "psr-0": { - "Tetranz\\Select2EntityBundle": "" + "psr-4": { + "Tetranz\\Select2EntityBundle\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -4621,14 +4520,14 @@ "email": "tetranz@gmail.com" } ], - "description": "A Symfony2 bundle that integrates Select2 as a drop-in replacement for a standard entity field on a Symfony form.", + "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": "2018-03-05 02:52:46" + "time": "2019-07-07 23:00:30" }, { "name": "thecsea/simple-caldav-client", @@ -4675,16 +4574,16 @@ }, { "name": "twig/twig", - "version": "v2.8.1", + "version": "v2.11.3", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "91cc2594d3143761ce0399c1caffd0b500ffe5b9" + "reference": "699ed2342557c88789a15402de5eb834dedd6792" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/91cc2594d3143761ce0399c1caffd0b500ffe5b9", - "reference": "91cc2594d3143761ce0399c1caffd0b500ffe5b9", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/699ed2342557c88789a15402de5eb834dedd6792", + "reference": "699ed2342557c88789a15402de5eb834dedd6792", "shasum": "" }, "require": { @@ -4695,12 +4594,12 @@ "require-dev": { "psr/container": "^1.0", "symfony/debug": "^2.7", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "2.11-dev" } }, "autoload": { @@ -4738,31 +4637,30 @@ "keywords": [ "templating" ], - "time": "2019-04-16 17:14:24" + "time": "2019-06-18 15:37:11" }, { "name": "zendframework/zend-code", - "version": "3.1.0", + "version": "2.6.3", "source": { "type": "git", "url": "https://github.com/zendframework/zend-code.git", - "reference": "2899c17f83a7207f2d7f53ec2f421204d3beea27" + "reference": "95033f061b083e16cdee60530ec260d7d628b887" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-code/zipball/2899c17f83a7207f2d7f53ec2f421204d3beea27", - "reference": "2899c17f83a7207f2d7f53ec2f421204d3beea27", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/95033f061b083e16cdee60530ec260d7d628b887", + "reference": "95033f061b083e16cdee60530ec260d7d628b887", "shasum": "" }, "require": { - "php": "^5.6 || 7.0.0 - 7.0.4 || ^7.0.6", + "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", - "ext-phar": "*", + "fabpot/php-cs-fixer": "1.7.*", "phpunit/phpunit": "^4.8.21", - "squizlabs/php_codesniffer": "^2.5", "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "suggest": { @@ -4772,8 +4670,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" } }, "autoload": { @@ -4791,7 +4689,7 @@ "code", "zf2" ], - "time": "2016-10-24 13:23:32" + "time": "2016-04-20 17:26:42" }, { "name": "zendframework/zend-eventmanager", @@ -4851,16 +4749,16 @@ "packages-dev": [ { "name": "nikic/php-parser", - "version": "v4.2.1", + "version": "v4.2.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0" + "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/5221f49a608808c1e4d436df32884cbc1b821ac0", - "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420", + "reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420", "shasum": "" }, "require": { @@ -4898,7 +4796,7 @@ "parser", "php" ], - "time": "2019-02-16 20:54:15" + "time": "2019-05-25 20:07:01" }, { "name": "sensio/generator-bundle", @@ -4956,16 +4854,16 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.11.6", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "d262c2cace4d9bca99137a84f6fc6ba909a17e02" + "reference": "201d0e050dca336c44f93657ce1f34f3b3868432" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/d262c2cace4d9bca99137a84f6fc6ba909a17e02", - "reference": "d262c2cace4d9bca99137a84f6fc6ba909a17e02", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/201d0e050dca336c44f93657ce1f34f3b3868432", + "reference": "201d0e050dca336c44f93657ce1f34f3b3868432", "shasum": "" }, "require": { @@ -4981,12 +4879,14 @@ "symfony/http-kernel": "^3.4|^4.0" }, "require-dev": { - "allocine/twigcs": "^3.0", "doctrine/doctrine-bundle": "^1.8", "doctrine/orm": "^2.3", "friendsofphp/php-cs-fixer": "^2.8", - "symfony/phpunit-bridge": "^3.4|^4.0", + "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" }, "type": "symfony-bundle", @@ -5018,20 +4918,20 @@ "scaffold", "scaffolding" ], - "time": "2019-04-19 17:26:45" + "time": "2019-07-09 22:19:18" }, { "name": "symfony/phpunit-bridge", - "version": "v3.4.26", + "version": "v3.4.29", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "a43a2f6c465a2d99635fea0addbebddc3864ad97" + "reference": "521489968e58dcdb8df153436cc18349737e49e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a43a2f6c465a2d99635fea0addbebddc3864ad97", - "reference": "a43a2f6c465a2d99635fea0addbebddc3864ad97", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/521489968e58dcdb8df153436cc18349737e49e3", + "reference": "521489968e58dcdb8df153436cc18349737e49e3", "shasum": "" }, "require": { @@ -5083,7 +4983,7 @@ ], "description": "Symfony PHPUnit Bridge", "homepage": "https://symfony.com", - "time": "2019-04-16 09:03:16" + "time": "2019-06-26 10:03:25" } ], "aliases": [], diff --git a/src/ninegate-1.0/scripts/ninegate-postservice-01.sh b/src/ninegate-1.0/scripts/ninegate-postservice-01.sh index 3f472fac..906af8dd 100755 --- a/src/ninegate-1.0/scripts/ninegate-postservice-01.sh +++ b/src/ninegate-1.0/scripts/ninegate-postservice-01.sh @@ -8,6 +8,9 @@ affniveau02=$(CreoleGet ninegate_niveau02view non) labelsniveau02=$(CreoleGet ninegate_niveau02labels non) iconniveau02=$(CreoleGet ninegate_niveau02icon non) weburl=$(CreoleGet web_url non) +ninegate_websocket=$(CreoleGet ninegate_activate_websocket non) +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" @@ -50,12 +53,15 @@ fi ./perm.sh www-data # Server Websocket -echo "" -echo WEBSOCKET = STOP -pid="$(pgrep -f gos:websocket)" -if [ -n "${pid}" ]; then - kill -9 ${pid}; -fi +if [[ "$ninegate_websocket" = 'oui' ]] +then + echo "" + echo WEBSOCKET = STOP + pid="$(pgrep -f gos:websocket)" + if [ -n "${pid}" ]; then + kill -9 ${pid}; + fi -echo WEBSOCKET = START -bin/console gos:websocket:server --port 5556 -a $web_url --no-debug -n -q --env=prod & disown \ No newline at end of file + echo WEBSOCKET = START + bin/console gos:websocket:server --port $websocket_portinterne -a $websocket_url --no-debug -n -q --env=prod & disown +fi \ No newline at end of file diff --git a/src/ninegate-1.0/scripts/ninegate-websocket.sh b/src/ninegate-1.0/scripts/ninegate-websocket.sh new file mode 100755 index 00000000..6a42c30e --- /dev/null +++ b/src/ninegate-1.0/scripts/ninegate-websocket.sh @@ -0,0 +1,13 @@ +#!/bin/bash +websocket_url=$(CreoleGet adresse_ip_eth0 non) +websocket_portinterne=$(CreoleGet ninegate_websocket_portinterne non) + +# Server Websocket +echo WEBSOCKET = STOP +pid="$(pgrep -f gos:websocket)" +if [ -n "${pid}" ]; then + kill -9 ${pid}; +fi + +echo WEBSOCKET = START +bin/console gos:websocket:server --port $websocket_portinterne -a $websocket_url --no-debug -n -q --env=prod & disown \ No newline at end of file diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php index 15454705..f581080c 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/InitDataCommand.php @@ -8,6 +8,8 @@ use Symfony\Component\Finder\Finder; use Symfony\Component\HttpKernel\KernelInterface; use Doctrine\DBAL\Connection as DBALConnection; use Doctrine\ORM\EntityManager; +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; use Cadoles\CoreBundle\Entity\Group; use Cadoles\CoreBundle\Entity\UserGroup; @@ -114,9 +116,11 @@ class InitDataCommand extends ContainerAwareCommand $datas=$qb->getQuery()->getResult(); foreach($datas as $data) { $output->writeln(" > Ratachement ".$data->getId()." ".$data->getUsername()); + $key = Uuid::uuid4(); $usergroup=new UserGroup(); $usergroup->setUser($data); $usergroup->setGroup($group); + $usergroup->setKeyvalue($key); $em->persist($usergroup); $em->flush(); } diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql index 4981021e..e475b660 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Command/data/core-init-01.sql @@ -8,7 +8,7 @@ INSERT IGNORE INTO `niveau01` (`id`, `label`, `siren`) VALUES (-100, 'DRAAF', '130007107'); INSERT IGNORE INTO `user` (`id`, `niveau01_id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`,`siren`,`authlevel`) VALUES -(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}fTB28jypXVo+jctUtN4bThWKPiqY6H6k +(-100, -100, 'admin', 'Administrateur', 'draaf', '{SSHA}XuBTTUoInXPRBr1msGCFHj0Nm1C83fj/ ', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN', '130007107', 'simple'); diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php index 4d78dbf0..0d086f5e 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/GroupController.php @@ -9,6 +9,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Form\FormError; use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; use Cadoles\CoreBundle\Entity\Group; use Cadoles\CoreBundle\Entity\Usergroup; @@ -16,6 +17,7 @@ use Cadoles\CoreBundle\Entity\Usermodo; use Cadoles\CoreBundle\Form\GroupType; use Cadoles\PortalBundle\Entity\Calendar; use Cadoles\PortalBundle\Entity\Blog; +use Cadoles\WebsocketBundle\Entity\Message; class GroupController extends Controller { @@ -24,22 +26,24 @@ class GroupController extends Controller private $labeldata = 'group'; private $labeldatas = 'groups'; - public function listAction() + public function listAction($access) { return $this->render('CadolesCoreBundle:Group:list.html.twig',[ 'useheader' => true, 'usemenu' => false, - 'usesidebar' => true, + 'usesidebar' => ($access=="config"), + 'access' => $access ]); } - public function ajaxlistAction(Request $request) + public function ajaxlistAction(Request $request,$access) { // S'assurer que c'est un appel ajax if (!$request->isXmlHttpRequest()) { return new JsonResponse(array('message' => 'Interdit'), 400); } + $user=$this->getUser(); $portal_activate=$this->getParameter("portal_activate"); $em = $this->getDoctrine()->getManager(); @@ -51,19 +55,39 @@ class GroupController extends Controller $order= $request->query->get('order'); // Nombre total d'enregistrement - $total = $em->createQueryBuilder()->select('COUNT(table)')->from($this->labelentity,'table')->getQuery()->getSingleScalarResult(); + $qb=$em->createQueryBuilder(); + $qb->select('COUNT(table)')->from($this->labelentity,'table'); + if($access=="user") { + $qb->from("CadolesCoreBundle:UserGroup","ug") + ->andWhere(("table.fgcanshare=:flag")) + ->andWhere("table.id=ug.group") + ->andWhere(":user=ug.user") + ->setParameter("flag", true) + ->setParameter("user", $user); + + } + $total = $qb->getQuery()->getSingleScalarResult(); // Nombre d'enregistrement filtré if($search["value"]=="") $totalf = $total; else { - $totalf= $em->createQueryBuilder() - ->select('COUNT(table)') - ->from($this->labelentity,'table') - ->where('table.label LIKE :value') - ->setParameter("value", "%".$search["value"]."%") - ->getQuery() - ->getSingleScalarResult(); + $qb=$em->createQueryBuilder(); + $qb->select('COUNT(table)') + ->from($this->labelentity,'table') + ->where('table.label LIKE :value') + ->setParameter("value", "%".$search["value"]."%"); + if($access=="user") { + $qb->from("CadolesCoreBundle:UserGroup","ug") + ->andWhere(("table.fgcanshare=:flag")) + ->andWhere("table.id=ug.group") + ->andWhere(":user=ug.user") + ->setParameter("flag", true) + ->setParameter("user", $user); + + } + + $totalf= $qb->getQuery()->getSingleScalarResult(); } // Construction du tableau de retour @@ -77,8 +101,17 @@ class GroupController extends Controller // Parcours des Enregistrement $qb = $em->createQueryBuilder(); $qb->select('table')->from($this->labelentity,'table'); + if($access=="user") { + $qb->from("CadolesCoreBundle:UserGroup","ug") + ->andWhere(("table.fgcanshare=:flag")) + ->andWhere("table.id=ug.group") + ->andWhere(":user=ug.user") + ->setParameter("flag", true) + ->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"]) { @@ -107,20 +140,40 @@ class GroupController extends Controller foreach($datas as $data) { $action = ""; - // Modification possible si groupe non template et non tout le monde - if(!$data->getFgTemplate() && !$data->getFgall()) - $action .="$data->getId()))."'>"; + if($access=="config") { + // Modification possible si groupe non template et non tout le monde + if(!$data->getFgTemplate() && !$data->getFgall()) + $action .="$data->getId()))."'>"; + + // Modification possible si groupe template mais avec module portail activé + elseif($data->getFgTemplate()&&$portal_activate) + $action .="$data->getId()))."'>"; + + // Modification possible si groupe tout le monde mais avec module portail activé + elseif($data->getFgall()&&$portal_activate) + $action .="$data->getId()))."'>"; + + if($data->getId()>0&&!$data->getFgall()&&!$data->getFgTemplate()&&$this->isGranted('ROLE_ADMIN')) $action.="$data->getId()))."'>"; + if(!$data->getFgall()) $action .="$data->getId()))."'>"; + + } + else { + $fgproprio=($user==$data->getOwner()); + $fgmanager=$this->getDoctrine()->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$data])->getFgmanager(); + + // Modification possible uniquement si l'utilisateur est propriétaire du groupe + if($fgproprio) { + $action .="$data->getId()))."'>"; + $action .="$data->getId()))."'>"; + } + + // Gestion des utilisateurs du groupe uniquement pour le proprio ou les managers + if($fgproprio||$fgmanager) { + $action .="$data->getId()))."'>"; + } + + } - // Modification possible si groupe template mais avec module portail activé - elseif($data->getFgTemplate()&&$portal_activate) - $action .="$data->getId()))."'>"; - - // Modification possible si groupe tout le monde mais avec module portail activé - elseif($data->getFgall()&&$portal_activate) - $action .="$data->getId()))."'>"; - - if($data->getId()>0&&!$data->getFgall()&&!$data->getFgTemplate()&&$this->isGranted('ROLE_ADMIN')) $action.="$data->getId()))."'>"; - if(!$data->getFgall()) $action .="$data->getId()))."'>"; $filtre=""; if($this->GetParameter("masteridentity")=="LDAP") $filtre=$data->getLdapfilter(); @@ -144,7 +197,7 @@ class GroupController extends Controller } - public function ajaxusersnotinAction($id,Request $request) + public function ajaxusersnotinAction($id,Request $request,$access="config") { // S'assurer que c'est un appel ajax if (!$request->isXmlHttpRequest()) { @@ -168,7 +221,7 @@ class GroupController extends Controller // Nombre total d'enregistrement $qb = $em->createQueryBuilder(); - if($this->isGranted('ROLE_ADMIN')) + if($this->isGranted('ROLE_ADMIN')||$access=="user") $qb->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))) @@ -190,7 +243,7 @@ class GroupController extends Controller if($search["value"]=="") $totalf = $total; else { - if($this->isGranted('ROLE_ADMIN')) + if($this->isGranted('ROLE_ADMIN')||$access=="user") $totalf= $em->createQueryBuilder() ->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') @@ -229,7 +282,7 @@ class GroupController extends Controller $qb = $em->createQueryBuilder(); $qb->select('user')->from("CadolesCoreBundle:User",'user'); - if($this->isGranted('ROLE_ADMIN')) + if($this->isGranted('ROLE_ADMIN')||$access=="user") $qb->where($qb->expr()->not($qb->expr()->exists($sub->getDQL()))); else $qb->from('CadolesCoreBundle:UserModo','usermodo') @@ -273,7 +326,7 @@ class GroupController extends Controller return new Response(json_encode($output), 200); } - public function ajaxusersinAction($id,Request $request) + public function ajaxusersinAction($id,Request $request,$access="config") { // S'assurer que c'est un appel ajax if (!$request->isXmlHttpRequest()) { @@ -298,7 +351,7 @@ class GroupController extends Controller // Nombre total d'enregistrement $qb = $em->createQueryBuilder(); - if($this->isGranted('ROLE_ADMIN')) + if($this->isGranted('ROLE_ADMIN')||$access=="user") $qb->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') ->where($qb->expr()->exists($sub->getDQL())) @@ -320,7 +373,7 @@ class GroupController extends Controller if($search["value"]=="") $totalf = $total; else { - if($this->isGranted('ROLE_ADMIN')) + if($this->isGranted('ROLE_ADMIN')||$access=="user") $totalf= $em->createQueryBuilder() ->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') @@ -359,7 +412,7 @@ class GroupController extends Controller $qb = $em->createQueryBuilder(); $qb->select('user')->from("CadolesCoreBundle:User",'user'); - if($this->isGranted('ROLE_ADMIN')) + if($this->isGranted('ROLE_ADMIN')||$access=="user") $qb->where($qb->expr()->exists($sub->getDQL())); else $qb->from('CadolesCoreBundle:UserModo','usermodo') @@ -386,10 +439,13 @@ class GroupController extends Controller $datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult(); foreach($datas as $data) { - + // Propriétaire + $usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$data->getId(),"group"=>$id]); + $fgproprio=($usergroup->getUser()==$group->getOwner()); + // Action $action = ""; - if($group->getLdapfilter()==""&&$group->getAttributes()=="") + if($group->getLdapfilter()==""&&$group->getAttributes()==""&&!$fgproprio) $action.=""; // Avatar @@ -398,9 +454,11 @@ class GroupController extends Controller // Flag manager $fgmanager=""; if($fgcanshare) { - $usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$data->getId(),"group"=>$id]); + $checked=($usergroup->getFgmanager()?"checked":""); $fgmanager=""; + if($fgproprio) $fgmanager="Propriétaire du groupe"; + } @@ -411,7 +469,7 @@ class GroupController extends Controller return new Response(json_encode($output), 200); } - public function usergroupaddAction(Request $request) + public function usergroupaddAction(Request $request,$access="config") { // S'assurer que c'est un appel ajax if (!$request->isXmlHttpRequest()) { @@ -428,18 +486,25 @@ class GroupController extends Controller if($group->getFgAll()||$group->getFgtemplate()) throw $this->createNotFoundException('Permission denied'); + $key = Uuid::uuid4(); $usergroup=new Usergroup; - $usergroup->setUser($em->getRepository("CadolesCoreBundle:User")->find($userid)); + $user=$em->getRepository("CadolesCoreBundle:User")->find($userid); + $usergroup->setUser($user); $usergroup->setGroup($group); + $usergroup->setKeyvalue($key); $em->persist($usergroup); $em->flush(); + $user=$em->getRepository("CadolesCoreBundle:User")->find($userid); + $message="Inscription de l'utilisateur
".$user->getLastname()." ".$user->getFirstname()."
Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname(); + $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$userid,$groupid,$message); + $response = new Response(json_encode($output)); $response->headers->set('Content-Type', 'application/json'); return $response; } - public function usergroupdelAction(Request $request) + public function usergroupdelAction(Request $request,$access="config") { // S'assurer que c'est un appel ajax if (!$request->isXmlHttpRequest()) { @@ -457,15 +522,21 @@ class GroupController extends Controller throw $this->createNotFoundException('Permission denied'); $data = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid)); + $user=$em->getRepository("CadolesCoreBundle:User")->find($userid); + $message="Désinscription de l'utilisateur
".$user->getLastname()." ".$user->getFirstname()."
Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();; + $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($data->getKeyvalue(),$userid,$groupid,$message); + + $em->remove($data); $em->flush(); + $response = new Response(json_encode($output)); $response->headers->set('Content-Type', 'application/json'); return $response; } - public function switchmanagerAction(Request $request) + public function switchmanagerAction(Request $request,$access="config") { // S'assurer que c'est un appel ajax if (!$request->isXmlHttpRequest()) { @@ -496,15 +567,18 @@ class GroupController extends Controller // Initialisation de l'enregistrement $data = new Group(); $data->setFgopen(false); - $data->setFgcanshare(false); + $data->setFgcanshare(($access=="user")); $data->setFgcancreatepage(false); $data->setFgcancreatecalendar(false); $data->setFgcancreateblog(false); + if($access=="user") $data->setOwner($this->getUser()); // Création du formulaire $form = $this->createForm(GroupType::class,$data,array( "mode"=>"submit", + "fgall"=>false, "updatelimite"=>false, + "access"=>$access, "masteridentity"=> $this->GetParameter("masteridentity"), "portal_activate"=>$this->getParameter("portal_activate") ) @@ -533,12 +607,24 @@ 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 groupe de travail à bien page d'accueil / calendrier / blog associé // Sinon on les génère - $this->ctrlFgcanshare($data); + $this->ctrlFgcanshare($data,$access); // Retour à la liste - return $this->redirectToRoute("cadoles_core_config_group_users",["id"=>$data->getId()]); + return $this->redirectToRoute("cadoles_core_".$access."_group_users",["id"=>$data->getId()]); } // Affichage du formulaire @@ -549,10 +635,10 @@ class GroupController extends Controller return $this->render($this->labelentity.':edit.html.twig', [ 'useheader' => true, 'usemenu' => false, - 'usesidebar' => true, + 'usesidebar' => ($access=="config"), $this->labeldata => $data, 'mode' => 'submit', - 'access' => 'access', + 'access' => $access, 'icons' => $icons, 'iconsuser' => $iconsuser, 'form' => $form->createView() @@ -568,6 +654,8 @@ class GroupController extends Controller // Création du formulaire $form = $this->createForm(GroupType::class,$data,array( "mode" => "update", + "access" => $access, + "fgall" => $data->getFgAll(), "updatelimite" => ($data->getFgAll()||$data->getFgTemplate()), "masteridentity" => $this->GetParameter("masteridentity"), "portal_activate" => $this->getParameter("portal_activate"), @@ -602,21 +690,21 @@ class GroupController extends Controller // On s'assure que le groupe de travail à bien page d'accueil / calendrier / blog associé // Sinon on les génère - $this->ctrlFgcanshare($data); + $this->ctrlFgcanshare($data,$access); // Retour à la liste - return $this->redirectToRoute($this->labelroute); + return $this->redirectToRoute("cadoles_core_".$access."_group"); } $icons=$em->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>null]); $iconsuser=null; - if($access=="user") $iconsuser=$em()->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>$this->getUser()]); + if($access=="user") $iconsuser=$em->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>$this->getUser()]); // Affichage du formulaire return $this->render($this->labelentity.':edit.html.twig', [ 'useheader' => true, 'usemenu' => false, - 'usesidebar' => true, + 'usesidebar' => ($access=="config"), $this->labeldata => $data, 'mode' => 'update', 'access' => $access, @@ -626,10 +714,12 @@ class GroupController extends Controller ]); } - public function deleteAction($id,Request $request) + public function deleteAction($id,Request $request, $access="config") { + $em = $this->getDoctrine()->getManager(); + // Seule role admin peut supprimer un groupe - if(!$this->isGranted('ROLE_ADMIN')) + if($access=="config"&&!$this->isGranted('ROLE_ADMIN')) return $this->redirectToRoute($this->labelroute); // Récupération de l'enregistrement courant @@ -656,25 +746,31 @@ class GroupController extends Controller // Sur validation if ($form->get('submit')->isClicked() && $form->isValid()) { - $em = $this->getDoctrine()->getManager(); $em->remove($data); $em->flush(); - return $this->redirectToRoute($this->labelroute); + return $this->redirectToRoute("cadoles_core_".$access."_group"); } + $icons=$em->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>null]); + $iconsuser=null; + if($access=="user") $iconsuser=$em->getRepository("CadolesPortalBundle:Icon")->findBy(["user"=>$this->getUser()]); + // Affichage du formulaire return $this->render($this->labelentity.':edit.html.twig', [ 'useheader' => true, 'usemenu' => false, - 'usesidebar' => true, + 'usesidebar' => ($access=="config"), $this->labeldata => $data, 'mode' => 'delete', + 'access' => $access, + 'icons' => $icons, + 'iconsuser' => $iconsuser, 'form' => $form->createView() ]); } - public function usersAction($id,Request $request) + public function usersAction($id,Request $request, $access="config") { // Récupération de l'enregistrement courant $data=$this->getData($id); @@ -683,12 +779,13 @@ class GroupController extends Controller return $this->render($this->labelentity.':users.html.twig', [ 'useheader' => true, 'usemenu' => false, - 'usesidebar' => true, + 'usesidebar' => ($access=="config"), + 'access' => $access, $this->labeldata => $data ]); } - protected function ctrlFgcanshare($group) { + protected function ctrlFgcanshare($group,$access) { $em = $this->getDoctrine()->getManager(); if($group->getFgcanshare()) { @@ -697,6 +794,7 @@ class GroupController extends Controller $page=$this->getDoctrine()->getRepository("CadolesPortalBundle:Page")->clonePage(null,$group->getPagetemplate()); $group->addPage($page); $page->setName("Groupe = ".$group->getLabel()); + if($access=="user")$page->setUser($this->getUser()); $em->persist($page); $em->persist($group); @@ -713,6 +811,7 @@ class GroupController extends Controller $calendar->addGroup($group); $calendar->setColor($group->getColor()); $calendar->setType(0); + if($access=="user")$calendar->setUser($this->getUser()); $em->persist($calendar); $em->flush(); @@ -724,6 +823,7 @@ class GroupController extends Controller $blog->setName("Groupe = ".$group->getLabel()); $blog->addGroup($group); + if($access=="user")$blog->setUser($this->getUser()); $em->persist($blog); $em->flush(); diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php index 3d9f5d7a..c3a84ff5 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/UserController.php @@ -22,6 +22,7 @@ use Cadoles\CoreBundle\Entity\UserGroup; use Cadoles\CoreBundle\Entity\UserModo; use Cadoles\CoreBundle\Entity\Niveau01; use Cadoles\CoreBundle\Entity\Niveau02; +use Cadoles\WebsocketBundle\Entity\Message; use Cadoles\CoreBundle\Form\UserType; @@ -66,7 +67,7 @@ class UserController extends Controller $viewniveau02=$this->getParameter('viewniveau02'); // Nombre total d'enregistrement - if($this->isGranted('ROLE_ADMIN')) + 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(); @@ -79,7 +80,7 @@ class UserController extends Controller ->setParameter("userid", $usermodo) ->getQuery()->getSingleScalarResult(); } - elseif($this->isGranted('ROLE_USER')) { + elseif($this->isGranted('ROLE_ANIM')||$this->isGranted('ROLE_USER')) { $niveau01=$this->get('security.token_storage')->getToken()->getUser()->getNiveau01(); $total = $em->createQueryBuilder() ->select('COUNT(user)') @@ -93,7 +94,7 @@ class UserController extends Controller if($search["value"]=="") $totalf = $total; else { - if($this->isGranted('ROLE_ADMIN')) + if($this->isGranted('ROLE_ADMIN')||$access=="user") $totalf= $em->createQueryBuilder() ->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') @@ -117,7 +118,7 @@ class UserController extends Controller ->setParameter("value", "%".$search["value"]."%") ->getQuery() ->getSingleScalarResult(); - elseif($this->isGranted('ROLE_USER')) + elseif($this->isGranted('ROLE_ANIM')||$this->isGranted('ROLE_USER')) $totalf= $em->createQueryBuilder() ->select('COUNT(user)') ->from('CadolesCoreBundle:User','user') @@ -141,7 +142,7 @@ class UserController extends Controller // Parcours des Enregistrement $qb = $em->createQueryBuilder(); - if($this->isGranted('ROLE_ADMIN')) { + if($this->isGranted('ROLE_ADMIN')||$access=="user") { $qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01'); $qb->where('user.niveau01=niveau01.id'); } @@ -152,7 +153,7 @@ class UserController extends Controller ->andWhere("usermodo.user = :userid") ->setParameter("userid", $usermodo); } - elseif($this->isGranted('ROLE_USER')) { + 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") @@ -310,14 +311,20 @@ class UserController extends Controller // Ajout des groupes foreach($lstgroups as $idgroup) { - $group= new UserGroup(); + $group=$em->getRepository("CadolesCoreBundle:Group")->find($idgroup); - $group->setUser($data); - $datagroup = $em->getRepository("CadolesCoreBundle:Group")->find($idgroup); - $group->setGroup($datagroup); + $key = Uuid::uuid4(); - $em->persist($group); + $usergroup= new UserGroup(); + $usergroup->setUser($data); + $datagroup = $group; + $usergroup->setGroup($datagroup); + $usergroup->setKeyvalue($key); + $em->persist($usergroup); $em->flush(); + + $message="Inscription de l'utilisateur
".$data->getLastname()." ".$data->getFirstname()."
Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname(); + $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$iduser,$idgroup,$message); } // Ajout des modos @@ -420,25 +427,35 @@ class UserController extends Controller $em->persist($data); $em->flush(); + // On récupère les groupes et on cacule ceux à ajouter ou à supprimer $lstgroups=array_filter(explode(",",$form->get("linkgroups")->getData())); $removegroups=array_diff($oldlstgroups,$lstgroups); $addgroups=array_diff($lstgroups,$oldlstgroups); + // Ajout des nouveaux groupes foreach($addgroups as $idgroup) { - $group= new UserGroup(); + $group=$em->getRepository("CadolesCoreBundle:Group")->find($idgroup); + + $key = Uuid::uuid4(); - $group->setUser($data); - $datagroup = $em->getRepository("CadolesCoreBundle:Group")->find($idgroup); - $group->setGroup($datagroup); - - $em->persist($group); + $usergroup= new UserGroup(); + $usergroup->setUser($data); + $datagroup = $group; + $usergroup->setGroup($datagroup); + $usergroup->setKeyvalue($key); + $em->persist($usergroup); $em->flush(); + + $message="Inscription de l'utilisateur
".$data->getLastname()." ".$data->getFirstname()."
Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname(); + $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$id,$idgroup,$message); } // Suppression des groupes obsolètes foreach($removegroups as $idgroup) { + $group=$em->getRepository("CadolesCoreBundle:Group")->find($idgroup); + // Lien Group User $usergroups = $em ->createQueryBuilder() ->select('table') @@ -449,6 +466,9 @@ class UserController extends Controller ->getQuery() ->getResult(); foreach($usergroups as $usergroup) { + $message="Désinscription de l'utilisateur
".$data->getLastname()." ".$data->getFirstname()."
Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname(); + $websocket = $this->container->get('cadoles.websocket.pushmessage')->send($usergroup->getKeyvalue(),$id,$idgroup,$message); + $em->remove($usergroup); $em->flush(); } diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/syncUser.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/syncUser.php index fb032587..17d88fef 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/syncUser.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/EventListener/syncUser.php @@ -10,6 +10,8 @@ use Doctrine\Common\EventSubscriber; use Doctrine\ORM\Event\LifecycleEventArgs; use Doctrine\ORM\Event\PreUpdateEventArgs; use Doctrine\ORM\EntityManager; +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; class syncUser implements EventSubscriber { @@ -143,9 +145,11 @@ class syncUser implements EventSubscriber if($fgall) { $data=$this->em->getRepository('CadolesCoreBundle:UserGroup')->findBy(array('user'=>$user,'group'=>$fgall[0])); if(!$data) { + $key = Uuid::uuid4(); $data=new UserGroup(); $data->setUser($user); $data->setGroup($fgall[0]); + $data->setKeyvalue($key); $this->em->persist($data); $this->em->flush(); } diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/GroupType.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/GroupType.php index 0eb79a37..76186403 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/GroupType.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/GroupType.php @@ -33,174 +33,180 @@ class GroupType extends AbstractType if($options["portal_activate"]) { $choices=array("oui" => "1","non" => "0"); - $builder->add("fgcanshare", - ChoiceType::class,array( - "label" =>"Groupe de Travail", - 'disabled' => ($options["mode"]=="delete"?true:false), - "attr" => array("class" => "form-control", "style" => "margin-bottom:15px"), - "choices" => $choices - ) - ); - $builder->add('pagetemplate', - EntityType::class,[ - "class" => "CadolesPortalBundle:Page", - "label" => "Modèle de Page pour l'accueil du groupe", - "required" => false, - "choice_label" => "name", - "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), - "attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]=="delete"?true:false)) - ]); - - $builder->add("fgcancreatepage", - ChoiceType::class,array( - "label" =>"Permission de créer des Pages", - 'disabled' => ($options["mode"]=="delete"?true:false), - "attr" => array("class" => "form-control", "style" => "margin-bottom:15px"), - "choices" => $choices - ) - ); - - $builder->add("fgcancreatecalendar", - ChoiceType::class,array( - "label" =>"Permission de créer des Calendriers", - 'disabled' => ($options["mode"]=="delete"?true:false), - "attr" => array("class" => "form-control", "style" => "margin-bottom:15px"), - "choices" => $choices - ) - ); - - $builder->add("fgcancreateblog", - ChoiceType::class,array( - "label" =>"Permission de créer des Blogs", - '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', - 'multiple' => true, - 'remote_route' => 'cadoles_portal_config_ajax_page_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 pages', - ]); - - $builder->add('items', Select2EntityType::class, [ - 'label' => 'Afficher les Items', - 'class' => 'CadolesPortalBundle:Item', - 'multiple' => true, - 'remote_route' => 'cadoles_portal_config_ajax_item_seleclist', - 'primary_key' => 'id', - 'text_property' => 'title', - 'minimum_input_length' => 0, - 'page_limit' => 100, - 'allow_clear' => true, - 'delay' => 250, - 'cache' => false, - 'cache_timeout' => 60000, - 'language' => 'fr', - 'placeholder' => 'Selectionner des items', - ]); - - $builder->add('alerts', Select2EntityType::class, [ - 'label' => 'Afficher les Annonces', - 'class' => 'CadolesPortalBundle:Alert', - 'multiple' => true, - 'remote_route' => 'cadoles_portal_config_ajax_alert_seleclist', - 'primary_key' => 'id', - 'text_property' => 'title', - 'minimum_input_length' => 0, - 'page_limit' => 100, - 'allow_clear' => true, - 'delay' => 250, - 'cache' => false, - 'cache_timeout' => 60000, - 'language' => 'fr', - 'placeholder' => 'Selectionner des annonces', - ]); - - $builder->add('calendars', Select2EntityType::class, [ - 'label' => 'Afficher les Calendriers', - 'class' => 'CadolesPortalBundle:Calendar', - 'multiple' => true, - 'remote_route' => 'cadoles_portal_config_ajax_calendar_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 calendriers', - ]); - - $builder->add('blogs', Select2EntityType::class, [ - 'label' => 'Afficher les Blogs', - 'class' => 'CadolesPortalBundle:Blog', - 'multiple' => true, - 'remote_route' => 'cadoles_portal_config_ajax_blog_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 blogs', - ]); - - $builder->add('fluxs', Select2EntityType::class, [ - 'label' => 'Afficher les Flux', - 'class' => 'CadolesPortalBundle:Flux', - 'multiple' => true, - 'remote_route' => 'cadoles_portal_config_ajax_flux_seleclist', - 'primary_key' => 'id', - 'text_property' => 'title', - 'minimum_input_length' => 0, - 'page_limit' => 100, - 'allow_clear' => true, - 'delay' => 250, - 'cache' => false, - 'cache_timeout' => 60000, - 'language' => 'fr', - 'placeholder' => 'Selectionner des flux', - ]); + if(!$options["fgall"]) { + $builder->add("fgcanshare", + ChoiceType::class,array( + "label" =>"Groupe de Travail", + 'disabled' => ($options["mode"]=="delete"||$options["access"]=="user"?true:false), + "attr" => array("class" => "form-control", "style" => "margin-bottom:15px"), + "choices" => $choices + ) + ); - $builder->add('notices', Select2EntityType::class, [ - 'label' => 'Afficher les Chartes', - 'class' => 'CadolesPortalBundle:Notice', - 'multiple' => true, - 'remote_route' => 'cadoles_portal_config_ajax_notice_seleclist', - 'primary_key' => 'id', - 'text_property' => 'title', - 'minimum_input_length' => 0, - 'page_limit' => 100, - 'allow_clear' => true, - 'delay' => 250, - 'cache' => false, - 'cache_timeout' => 60000, - 'language' => 'fr', - 'placeholder' => 'Selectionner des chartes', - ]); + $builder->add('pagetemplate', + EntityType::class,[ + "class" => "CadolesPortalBundle:Page", + "label" => "Modèle de Page pour l'accueil du groupe", + "required" => false, + "choice_label" => "name", + "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), + "attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]=="delete"?true:false)) + ]); + } + + if($options["access"]=="config") { + $builder->add("fgcancreatepage", + ChoiceType::class,array( + "label" =>"Permission de créer des Pages", + 'disabled' => ($options["mode"]=="delete"?true:false), + "attr" => array("class" => "form-control", "style" => "margin-bottom:15px"), + "choices" => $choices + ) + ); + + $builder->add("fgcancreatecalendar", + ChoiceType::class,array( + "label" =>"Permission de créer des Calendriers", + 'disabled' => ($options["mode"]=="delete"?true:false), + "attr" => array("class" => "form-control", "style" => "margin-bottom:15px"), + "choices" => $choices + ) + ); + + $builder->add("fgcancreateblog", + ChoiceType::class,array( + "label" =>"Permission de créer des Blogs", + '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', + 'multiple' => true, + 'remote_route' => 'cadoles_portal_config_ajax_page_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 pages', + ]); + + $builder->add('items', Select2EntityType::class, [ + 'label' => 'Afficher les Items', + 'class' => 'CadolesPortalBundle:Item', + 'multiple' => true, + 'remote_route' => 'cadoles_portal_config_ajax_item_seleclist', + 'primary_key' => 'id', + 'text_property' => 'title', + 'minimum_input_length' => 0, + 'page_limit' => 100, + 'allow_clear' => true, + 'delay' => 250, + 'cache' => false, + 'cache_timeout' => 60000, + 'language' => 'fr', + 'placeholder' => 'Selectionner des items', + ]); + + $builder->add('alerts', Select2EntityType::class, [ + 'label' => 'Afficher les Annonces', + 'class' => 'CadolesPortalBundle:Alert', + 'multiple' => true, + 'remote_route' => 'cadoles_portal_config_ajax_alert_seleclist', + 'primary_key' => 'id', + 'text_property' => 'title', + 'minimum_input_length' => 0, + 'page_limit' => 100, + 'allow_clear' => true, + 'delay' => 250, + 'cache' => false, + 'cache_timeout' => 60000, + 'language' => 'fr', + 'placeholder' => 'Selectionner des annonces', + ]); + + $builder->add('calendars', Select2EntityType::class, [ + 'label' => 'Afficher les Calendriers', + 'class' => 'CadolesPortalBundle:Calendar', + 'multiple' => true, + 'remote_route' => 'cadoles_portal_config_ajax_calendar_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 calendriers', + ]); + + $builder->add('blogs', Select2EntityType::class, [ + 'label' => 'Afficher les Blogs', + 'class' => 'CadolesPortalBundle:Blog', + 'multiple' => true, + 'remote_route' => 'cadoles_portal_config_ajax_blog_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 blogs', + ]); + + $builder->add('fluxs', Select2EntityType::class, [ + 'label' => 'Afficher les Flux', + 'class' => 'CadolesPortalBundle:Flux', + 'multiple' => true, + 'remote_route' => 'cadoles_portal_config_ajax_flux_seleclist', + 'primary_key' => 'id', + 'text_property' => 'title', + 'minimum_input_length' => 0, + 'page_limit' => 100, + 'allow_clear' => true, + 'delay' => 250, + 'cache' => false, + 'cache_timeout' => 60000, + 'language' => 'fr', + 'placeholder' => 'Selectionner des flux', + ]); + + + $builder->add('notices', Select2EntityType::class, [ + 'label' => 'Afficher les Chartes', + 'class' => 'CadolesPortalBundle:Notice', + 'multiple' => true, + 'remote_route' => 'cadoles_portal_config_ajax_notice_seleclist', + 'primary_key' => 'id', + 'text_property' => 'title', + 'minimum_input_length' => 0, + 'page_limit' => 100, + 'allow_clear' => true, + 'delay' => 250, + 'cache' => false, + 'cache_timeout' => 60000, + 'language' => 'fr', + 'placeholder' => 'Selectionner des chartes', + ]); + } } $builder->add('idicon', HiddenType::class,['mapped'=> false,'data' => $options["idicon"]]); @@ -293,9 +299,11 @@ class GroupType extends AbstractType $resolver->setDefaults(array( 'data_class' => 'Cadoles\CoreBundle\Entity\Group', 'mode' => "string", + 'access' => "string", 'masteridentity' => "string", 'portal_activate' => "boolean", 'updatelimite' => "boolean", + 'fgall' => "boolean", 'idicon' => "string", )); } diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/UserType.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/UserType.php index 998a4702..105ddeac 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/UserType.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Form/UserType.php @@ -63,7 +63,7 @@ class UserType extends AbstractType ); if($options["access"]=="config") { - $choices=array("Utilisateur" => "ROLE_USER","Modérateur" => "ROLE_MODO","Administrateur" => "ROLE_ADMIN"); + $choices=array("Utilisateur" => "ROLE_USER","Animateur de Groupe" => "ROLE_ANIM","Modérateur" => "ROLE_MODO","Administrateur" => "ROLE_ADMIN"); $onfocus=($options["perm"]?"":"this.defaultIndex=this.selectedIndex;"); $onchange=($options["perm"]?"":"this.selectedIndex=this.defaultIndex;"); $readonly=($options["perm"]?"":" background-color: #eee;"); diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/GroupRepository.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/GroupRepository.php index 69ce83aa..bf3922b8 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/GroupRepository.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Repository/GroupRepository.php @@ -4,6 +4,8 @@ namespace Cadoles\CoreBundle\Repository; use Doctrine\Common\Collections\ArrayCollection; use Cadoles\CoreBundle\Entity\UserGroup; +use Ramsey\Uuid\Uuid; +use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; class GroupRepository extends \Doctrine\ORM\EntityRepository { @@ -56,9 +58,11 @@ class GroupRepository extends \Doctrine\ORM\EntityRepository foreach($retgroups as $retgroup) { $usergroup=$this->_em->getRepository('CadolesCoreBundle:UserGroup')->findBy(["user"=>$user,"group"=>$retgroup]); if(!$usergroup) { + $key = Uuid::uuid4(); $usergroup=new UserGroup(); $usergroup->setUser($user); $usergroup->setGroup($retgroup); + $usergroup->setKeyvalue($key); $this->_em->persist($usergroup); $this->_em->flush(); diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml index 7b8b7960..1453779c 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml @@ -249,15 +249,15 @@ cadoles_core_config_importuser_filectrl: defaults: { _controller: CadolesCoreBundle:User:importuserfilectrl } #-- Access user -cadoles_core_profil: +cadoles_core_user: path: /user defaults: { _controller: CadolesCoreBundle:User:profil } -cadoles_core_profil_user_ajax_list: +cadoles_core_user_user_ajax_list: path: /user/user/ajax/list defaults: { _controller: CadolesCoreBundle:User:ajaxlist, access: user } -cadoles_core_profil_users: +cadoles_core_user_users: path: /user/users defaults: { _controller: CadolesCoreBundle:User:list, access: user } @@ -311,50 +311,95 @@ cadoles_core_config_niveau02_ajax_list: #== Group ================================================================================================================ +#-- Access config cadoles_core_config_group: path: /config/group - defaults: { _controller: CadolesCoreBundle:Group:list } + defaults: { _controller: CadolesCoreBundle:Group:list, access: config } cadoles_core_config_group_submit: path: /config/group/submit - defaults: { _controller: CadolesCoreBundle:Group:submit } + defaults: { _controller: CadolesCoreBundle:Group:submit, access: config } cadoles_core_config_group_update: path: /config/group/update/{id} - defaults: { _controller: CadolesCoreBundle:Group:update } + defaults: { _controller: CadolesCoreBundle:Group:update, access: config } cadoles_core_config_group_delete: path: /config/group/delete/{id} - defaults: { _controller: CadolesCoreBundle:Group:delete } + defaults: { _controller: CadolesCoreBundle:Group:delete, access: config } cadoles_core_config_group_ajax_list: path: /config/group/ajax/list - defaults: { _controller: CadolesCoreBundle:Group:ajaxlist } + defaults: { _controller: CadolesCoreBundle:Group:ajaxlist, access: config } cadoles_core_config_group_users: path: /config/group/users/{id} - defaults: { _controller: CadolesCoreBundle:Group:users } + defaults: { _controller: CadolesCoreBundle:Group:users, access: config } cadoles_core_config_group_ajax_usersnotin: path: /config/group/ajax/usersnotin/{id} - defaults: { _controller: CadolesCoreBundle:Group:ajaxusersnotin } + defaults: { _controller: CadolesCoreBundle:Group:ajaxusersnotin, access: config } cadoles_core_config_group_ajax_usersin: path: /config/group/ajax/usersin/{id} - defaults: { _controller: CadolesCoreBundle:Group:ajaxusersin } + defaults: { _controller: CadolesCoreBundle:Group:ajaxusersin, access: config } cadoles_core_config_group_ajax_usergroup_add: path: /config/group/ajax/usergroupadd - defaults: { _controller: CadolesCoreBundle:Group:usergroupadd } + defaults: { _controller: CadolesCoreBundle:Group:usergroupadd, access: config } cadoles_core_config_group_ajax_usergroup_del: path: /config/group/ajax/usergroupdel - defaults: { _controller: CadolesCoreBundle:Group:usergroupdel } + defaults: { _controller: CadolesCoreBundle:Group:usergroupdel, access: config } cadoles_core_config_group_ajax_switchmanager: path: /config/group/ajax/switchmanager - defaults: { _controller: CadolesCoreBundle:Group:switchmanager } + defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: config } + +#-- Access user +cadoles_core_user_group: + path: /user/group + defaults: { _controller: CadolesCoreBundle:Group:list, access: user } +cadoles_core_user_group_ajax_list: + path: /user/group/ajax/list + defaults: { _controller: CadolesCoreBundle:Group:ajaxlist, access: user } + +cadoles_core_user_group_submit: + path: /user/group/submit + defaults: { _controller: CadolesCoreBundle:Group:submit, access: user } + +cadoles_core_user_group_update: + path: /user/group/update/{id} + defaults: { _controller: CadolesCoreBundle:Group:update, access: user } + +cadoles_core_user_group_delete: + path: /user/group/delete/{id} + defaults: { _controller: CadolesCoreBundle:Group:delete, access: user } + +cadoles_core_user_group_users: + path: /user/group/users/{id} + defaults: { _controller: CadolesCoreBundle:Group:users, access: user } + +cadoles_core_user_group_ajax_usersnotin: + path: /user/group/ajax/usersnotin/{id} + defaults: { _controller: CadolesCoreBundle:Group:ajaxusersnotin, access: user } + +cadoles_core_user_group_ajax_usersin: + path: /user/group/ajax/usersin/{id} + defaults: { _controller: CadolesCoreBundle:Group:ajaxusersin, access: user } + +cadoles_core_user_group_ajax_usergroup_add: + path: /user/group/ajax/usergroupadd + defaults: { _controller: CadolesCoreBundle:Group:usergroupadd, access: user } + +cadoles_core_user_group_ajax_usergroup_del: + path: /user/group/ajax/usergroupdel + defaults: { _controller: CadolesCoreBundle:Group:usergroupdel, access: user } + +cadoles_core_user_group_ajax_switchmanager: + path: /user/group/ajax/switchmanager + defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: user } #== Whitelist ============================================================================================================ cadoles_core_config_whitelist: diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Core/reconnect.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Core/reconnect.html.twig index d45af056..584bca1b 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Core/reconnect.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Core/reconnect.html.twig @@ -42,6 +42,9 @@

{{ app.session.get('appname') }}

Vous avez perdu votre connection

+ ou +

Vous n'avez plus accès à cette page

+

Vous allez être redirigé vers la page d'accueil
diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/edit.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/edit.html.twig index 2b48434c..ed60747c 100755 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/edit.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/edit.html.twig @@ -12,7 +12,7 @@ {% endif %} - {{ form_widget(form.submit) }} Annuler + {{ form_widget(form.submit) }} Annuler

@@ -96,7 +96,7 @@
- {% if form.fgcanshare is defined %} + {% if form.fgcancreatepage is defined %}
Permissions Portail diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/list.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/list.html.twig index 12055e4a..eec01ec2 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/list.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/list.html.twig @@ -1,13 +1,27 @@ {% extends '@CadolesCore/base.html.twig' %} {% block pagewrapper %} -

Gestion des Groupes

+

+ {%if access=="config" %} + Gestion des Groupes + {%else%} + Mes Groupes de Travail + {%endif%} +

-

Ajouter

+ {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_MODO') or is_granted('ROLE_ANIM') %} +

+ {% if access=="config" %} + Ajouter + {% else %} + Créer un Groupe de Travail + {% endif %} +

+ {% endif %}
- Liste des Groupes + Liste des Groupes
@@ -21,10 +35,12 @@ Filtre {% if portal_activate %} Groupe de Travail + {% if access=="config" %} Création Pages Création Calendriers Création Blogs {% endif %} + {% endif %} @@ -43,7 +59,7 @@ order: [[ 1, "asc" ]], processing: true, serverSide: true, - ajax: "{{ path('cadoles_core_config_group_ajax_list') }}", + ajax: "{{ path('cadoles_core_'~access~'_group_ajax_list') }}", }); }); {% endblock %} diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/users.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/users.html.twig index 1d9bbcd6..0a45f67a 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/users.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Group/users.html.twig @@ -3,8 +3,7 @@ {% block pagewrapper %}

Gestion des Utilisateurs

Groupe = {{ group.label }}

- - Fermer + Fermer

@@ -22,7 +21,9 @@ Avatar Login Email - Manager + {% if group.fgcanshare %} + Manager + {% endif %} @@ -45,8 +46,10 @@ Action Avatar Login - Email - Manager + Email + {% if group.fgcanshare %} + Manager + {% endif %} @@ -60,13 +63,13 @@ {% block localjavascript %} $(document).ready(function() { $('#dataTablesnotin').DataTable({ - columnDefs: [ { "targets": 'no-sort', "orderable": false } ], + columnDefs: [ { "targets": 'no-sort', "orderable": false },{ "targets": 'no-visible', "visible": false } ], responsive: true, iDisplayLength: 100, order: [[ 2, "asc" ]], processing: true, serverSide: true, - ajax: "{{ path('cadoles_core_config_group_ajax_usersnotin',{'id':group.id}) }}", + ajax: "{{ path('cadoles_core_'~access~'_group_ajax_usersnotin',{'id':group.id}) }}", }); $('#dataTablesin').DataTable({ @@ -77,10 +80,10 @@ processing: true, serverSide: true, ajax: { - "url": "{{ path('cadoles_core_config_group_ajax_usersin',{'id':group.id}) }}", + "url": "{{ path('cadoles_core_'~access~'_group_ajax_usersin',{'id':group.id}) }}", "data": function ( d ) { return $.extend( {}, d, { - "fgcanshare": {{ group.fgcanshare }} + "fgcanshare": "{{ group.fgcanshare }}" }); } }, @@ -96,7 +99,7 @@ $.ajax({ rowId: 2, method: "POST", - url: "{{ path('cadoles_core_config_group_ajax_usergroup_add') }}", + url: "{{ path('cadoles_core_'~access~'_group_ajax_usergroup_add') }}", data: "userid="+userid+"&groupid="+{{ group.id }}, success: function(data, dataType) { @@ -118,7 +121,7 @@ $.ajax({ rowId: 2, method: "POST", - url: "{{ path('cadoles_core_config_group_ajax_usergroup_del') }}", + url: "{{ path('cadoles_core_'~access~'_group_ajax_usergroup_del') }}", data: "userid="+userid+"&groupid="+{{ group.id }}, success: function(data, dataType) { @@ -139,7 +142,7 @@ function switchManager(id) { $.ajax({ method: "POST", - url: "{{ path('cadoles_core_config_group_ajax_switchmanager') }}", + url: "{{ path('cadoles_core_'~access~'_group_ajax_switchmanager') }}", data: { "group": {{ group.id }}, "user": id, diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Include/menu.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Include/menu.html.twig index e0177647..f27594f0 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Include/menu.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/Include/menu.html.twig @@ -2,9 +2,10 @@ {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_MODO') %}
  • {% endif %} -
  • +
  • +
  • -
  • +
  • diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/edit.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/edit.html.twig index 81639abc..0965f5a3 100755 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/edit.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/edit.html.twig @@ -54,7 +54,11 @@
    - + {% set avatar= "noavatar.png" %} + {% if user.avatar %} + {% set avatar= user.avatar %} + {% endif %} + {{ form_widget(form.avatar) }} Modifier
    @@ -134,7 +138,7 @@
    - Ajouter + Inscription à un Groupe

    @@ -152,8 +156,8 @@ {% for group in user.groups %} - {% if (access=="config" or group.group.fgopen) and not group.group.fgall and group.group.ldapfilter=="" and group.group.attributes =="" %} - + {% if (access=="config" or group.group.fgopen or group.group.fgcanshare) and group.group.owner!=app.user and not group.group.fgall and group.group.ldapfilter=="" and group.group.attributes =="" %} + {% else %} {% endif %} @@ -383,7 +387,8 @@ }) .error(function(){ var imgSrc = $(this).attr('src'); - $(this).attr('src',imgSrc); + if(imgSrc!="/{{alias}}/uploads/avatar/") + $(this).attr('src',imgSrc); }); $(document.body).on("change","#user_birthcountry",function(){ @@ -445,14 +450,16 @@ }); function removeLinkGroup(id) { - // On supprime la ligne du tableau - $("#linkgroup"+id).remove(); + if (confirm("Désirez vous vraiment vous désinscrire de ce groupe ?")) { + // On supprime la ligne du tableau + $("#linkgroup"+id).remove(); - // On supprime l'id de la liste - $("#user_linkgroups").val($("#user_linkgroups").val().replace(id+",","")); + // On supprime l'id de la liste + $("#user_linkgroups").val($("#user_linkgroups").val().replace(id+",","")); - // On rend visible la ligne de liste complète - $("#listgroup"+id).show(); + // On rend visible la ligne de liste complète + $("#listgroup"+id).show(); + } } function addLinkGroup(id) { @@ -464,7 +471,7 @@ // On ajoute la ligne de liste des liens html =""; - html+=""; + html+=""; html+=""+$("#listgrouplabel"+id).html()+""; html+=""; diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/list.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/list.html.twig index 01e25535..731b9d9b 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/list.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/User/list.html.twig @@ -68,7 +68,7 @@ ajax: "{{ path('cadoles_core_config_user_ajax_list') }}", {% else %} order: [[ 1, "asc" ]], - ajax: "{{ path('cadoles_core_profil_user_ajax_list') }}", + ajax: "{{ path('cadoles_core_user_user_ajax_list') }}", {% endif %} }); }); diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Command/InitDataCommand.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Command/InitDataCommand.php index 088ce2ba..8e912633 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Command/InitDataCommand.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Command/InitDataCommand.php @@ -43,6 +43,7 @@ class InitDataCommand extends ContainerAwareCommand $activate_widopensondage = $this->getContainer()->getParameter('activate_widopensondage'); $activate_widpiwik = $this->getContainer()->getParameter('activate_widpiwik'); $activate_widwordpress = $this->getContainer()->getParameter('activate_widwordpress'); + $activate_websocket = $this->getContainer()->getParameter('websocket_activate'); $output->writeln('PORTAL = Default Data'); @@ -670,22 +671,27 @@ class InitDataCommand extends ContainerAwareCommand // Widget Chat $entityWidget = $em->getRepository('CadolesPortalBundle:Widget')->find(-1840); - if(!$entityWidget) $entityWidget = new Widget(); - $entityicon = $em->getRepository('CadolesPortalBundle:Icon')->findoneby(["label"=>"uploads/icon/icon_chat.png"]); - $entityWidget->setId(-1840); - $entityWidget->setRoworder(2); - $entityWidget->setIcon($entityicon); - $entityWidget->setName('Chat'); - $entityWidget->setDescription("Conversation instantanée"); - $entityWidget->setRouteview("cadoles_portal_config_panelwidget_view_chat"); - $entityWidget->setHeight("1000"); - $entityWidget->setAutoajust(false); - $entityWidget->setBorder(true); - $entityWidget->setOpened(true); - $entityWidget->setAccess(["config","user","group"]); - $parameter = json_decode('{"fields": []}'); - $entityWidget->setParameter($parameter); - $em->persist($entityWidget); + if($activate_websocket) { + if(!$entityWidget) $entityWidget = new Widget(); + $entityicon = $em->getRepository('CadolesPortalBundle:Icon')->findoneby(["label"=>"uploads/icon/icon_chat.png"]); + $entityWidget->setId(-1840); + $entityWidget->setRoworder(2); + $entityWidget->setIcon($entityicon); + $entityWidget->setName('Chat'); + $entityWidget->setDescription("Conversation instantanée"); + $entityWidget->setRouteview("cadoles_portal_config_panelwidget_view_chat"); + $entityWidget->setHeight("1000"); + $entityWidget->setAutoajust(false); + $entityWidget->setBorder(true); + $entityWidget->setOpened(true); + $entityWidget->setAccess(["config","user","group"]); + $parameter = json_decode('{"fields": []}'); + $entityWidget->setParameter($parameter); + $em->persist($entityWidget); + } + else { + $em->remove($entityWidget); + } diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php index 41902017..62e2bcbf 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Controller/PagewidgetController.php @@ -1816,7 +1816,7 @@ class PagewidgetController extends Controller foreach($group->getUsers() as $usergroup) { - array_push($members,$usergroup->getUser()); + array_push($members,$usergroup); } } } diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/AlertType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/AlertType.php index c7098048..3499e4c1 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/AlertType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/AlertType.php @@ -46,10 +46,11 @@ class AlertType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/BlogType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/BlogType.php index 17177535..a8e2162e 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/BlogType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/BlogType.php @@ -32,10 +32,11 @@ class BlogType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/CalendarType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/CalendarType.php index dc9f9362..2995ad5c 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/CalendarType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/CalendarType.php @@ -70,10 +70,11 @@ class CalendarType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/FluxType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/FluxType.php index ca05184a..7a757d3a 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/FluxType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/FluxType.php @@ -45,10 +45,11 @@ class FluxType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/ItemType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/ItemType.php index e3b9db46..7ce824cd 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/ItemType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/ItemType.php @@ -58,10 +58,11 @@ class ItemType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/NoticeType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/NoticeType.php index 1908c978..3995990f 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/NoticeType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/NoticeType.php @@ -53,10 +53,11 @@ class NoticeType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateEditorType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateEditorType.php index ee313b62..2b3da20c 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateEditorType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateEditorType.php @@ -48,10 +48,11 @@ class PageUpdateEditorType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateToolType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateToolType.php index 8e805c16..f9ac93ca 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateToolType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateToolType.php @@ -35,10 +35,11 @@ class PageUpdateToolType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateURLType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateURLType.php index 05117a6e..24fd7c26 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateURLType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateURLType.php @@ -44,10 +44,11 @@ class PageUpdateURLType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateWidgetType.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateWidgetType.php index 2252a3ca..69825363 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateWidgetType.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Form/PageUpdateWidgetType.php @@ -45,10 +45,11 @@ class PageUpdateWidgetType extends AbstractType ->add('roles', ChoiceType::class, [ "label" => 'Visible pour les Rôles', "choices" => [ - "Visiteur" => 'ROLE_ANONYME', - "Utilisateur" => 'ROLE_USER', - "Modérateur" => 'ROLE_MODO', - "Administateur" => 'ROLE_ADMIN', + "Visiteur" => 'ROLE_ANONYME', + "Utilisateur" => 'ROLE_USER', + "Animateur de Groupe" => 'ROLE_ANIM', + "Modérateur" => 'ROLE_MODO', + "Administateur" => 'ROLE_ADMIN', ], "multiple" => true, "expanded" => true, diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/BlogRepository.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/BlogRepository.php index 41fc8eea..4473b47a 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/BlogRepository.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/BlogRepository.php @@ -68,6 +68,7 @@ class BlogRepository extends EntityRepository // blogs partagées $blogsshared=[]; + /* if($user) { $blogsshared=$this->createQueryBuilder('blog') ->from('CadolesCoreBundle:Group','g') @@ -94,6 +95,7 @@ class BlogRepository extends EntityRepository $blogshared->setCanadd($this->getInwriter($user,$blogshared)); } } + */ // Initialisation du calcul des blogs $blogsadmin=new ArrayCollection(); @@ -102,7 +104,8 @@ class BlogRepository extends EntityRepository foreach($roles as $role) { $qb = $this->createQueryBuilder("blog"); $qb ->where($qb->expr()->like('blog.roles', $qb->expr()->literal("%$role%"))) - ->andWhere("blog.user is null"); + ->andWhere("blog.user != :user or blog.user is null") + ->setParameter('user',$user); $blogsroles=$qb->getQuery()->getResult(); foreach($blogsroles as $blogrole) { @@ -114,7 +117,8 @@ class BlogRepository extends EntityRepository foreach($groups as $group) { $qb = $this->createQueryBuilder("blog"); $qb ->where(":group MEMBER OF blog.groups") - ->andWhere("blog.user is null") + ->andWhere("blog.user != :user or blog.user is null") + ->setParameter('user',$user) ->setParameter("group",$group->getGroup()); $blogsgroups=$qb->getQuery()->getResult(); @@ -184,8 +188,6 @@ class BlogRepository extends EntityRepository foreach($groups as $group) { $qb = $this->createQueryBuilder("blog"); $qb ->where(":group MEMBER OF blog.groups") - ->andWhere("blog.id=:id") - ->andWhere("blog.user is null") ->andWhere("blog.id=:id") ->setParameter("id",$blog->getId()) ->setParameter("group",$group->getGroup()); diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/CalendarRepository.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/CalendarRepository.php index 6fc928f0..0bbe6622 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/CalendarRepository.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/CalendarRepository.php @@ -58,24 +58,23 @@ class CalendarRepository extends EntityRepository // Pages partagées $calendarsshared=[]; + /* if($user) { $calendarsshared=$this->createQueryBuilder('calendar') ->from('CadolesCoreBundle:Group','g') ->from('CadolesCoreBundle:UserGroup','ug') - ->from('CadolesCoreBundle:UserGroup','proprio') ->where('g.fgcanshare=:fgcanshare') ->andWhere('g=ug.group') ->andWhere('ug.user=:user') ->andWhere('g MEMBER OF calendar.groups') ->andWhere('calendar.user != :user') ->andWhere('calendar.user is not null') - ->andWhere('proprio.user=calendar.user') - ->andWhere('proprio.group=g') ->setParameter('fgcanshare',true) ->setParameter('user',$user) ->addOrderBy('calendar.name', 'ASC') ->getQuery()->getResult(); } + */ // Initialisation du calcul des calendars @@ -85,7 +84,8 @@ class CalendarRepository extends EntityRepository foreach($roles as $role) { $qb = $this->createQueryBuilder("calendar"); $qb ->where($qb->expr()->like('calendar.roles', $qb->expr()->literal("%$role%"))) - ->andWhere("calendar.user is null"); + ->andWhere("calendar.user != :user or calendar.user is null") + ->setParameter('user',$user); $calendarsroles=$qb->getQuery()->getResult(); foreach($calendarsroles as $calendarrole) { @@ -97,7 +97,8 @@ class CalendarRepository extends EntityRepository foreach($groups as $group) { $qb = $this->createQueryBuilder("calendar"); $qb ->where(":group MEMBER OF calendar.groups") - ->andWhere("calendar.user is null") + ->andWhere("calendar.user != :user or calendar.user is null") + ->setParameter('user',$user) ->setParameter("group",$group->getGroup()); $calendarsgroups=$qb->getQuery()->getResult(); @@ -142,8 +143,6 @@ class CalendarRepository extends EntityRepository foreach($groups as $group) { $qb = $this->createQueryBuilder("calendar"); $qb ->where(":group MEMBER OF calendar.groups") - ->andWhere("calendar.id=:id") - ->andWhere("calendar.user is null") ->andWhere("calendar.id=:id") ->setParameter("id",$calendar->getId()) ->setParameter("group",$group->getGroup()); @@ -173,7 +172,7 @@ class CalendarRepository extends EntityRepository ->from('CadolesCoreBundle:UserGroup','usergroup') ->andwhere('usergroup.group MEMBER OF calendar.groups') - ->andwhere('usergroup.user=:user') + ->andwhere('usergroup.user=user') ->andwhere('usergroup.fgmanager=:flag') ->from('CadolesCoreBundle:Group','groupe') @@ -186,7 +185,8 @@ class CalendarRepository extends EntityRepository $inblogwriters=$qb->getQuery()->getResult(); - if($inblogwriters) $canadd=true; + + if($inblogwriters) $canadd=true; } return $canadd; diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/PageRepository.php b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/PageRepository.php index ea9cc436..d37f2016 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/PageRepository.php +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Repository/PageRepository.php @@ -326,12 +326,12 @@ class PageRepository extends EntityRepository $qb = $this->createQueryBuilder("page"); $qb ->where(":group MEMBER OF page.groups") ->andWhere("page.id=:id") - ->andWhere("page.user is null") ->andWhere("page.id=:id") ->setParameter("id",$page->getId()) ->setParameter("group",$group->getGroup()); $inpagegroup=$qb->getQuery()->getResult(); + if($inpagegroup) { $cansee=true; // Est-il manager du groupe diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Alert/list.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Alert/list.html.twig index f368f2a8..a230a52e 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Alert/list.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Alert/list.html.twig @@ -113,6 +113,12 @@ + + + Animateur de Groupe + + + Modérateur @@ -191,6 +197,7 @@ $( function() { $("a[data-role='ROLE_ANONYME']").children("span").html($('.role-ROLE_ANONYME').length); $("a[data-role='ROLE_USER']").children("span").html($('.role-ROLE_USER').length); + $("a[data-role='ROLE_ANIM']").children("span").html($('.role-ROLE_ANIM').length); $("a[data-role='ROLE_MODO']").children("span").html($('.role-ROLE_MODO').length); $("a[data-role='ROLE_ADMIN']").children("span").html($('.role-ROLE_ADMIN').length); diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Flux/list.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Flux/list.html.twig index 724516a4..ace8de32 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Flux/list.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Flux/list.html.twig @@ -67,6 +67,12 @@ + + + Animateur de Groupe + + + Modérateur @@ -115,6 +121,7 @@ $("a[data-role='ROLE_ANONYME']").children("span").html($('.role-ROLE_ANONYME').length); $("a[data-role='ROLE_USER']").children("span").html($('.role-ROLE_USER').length); + $("a[data-role='ROLE_ANIM']").children("span").html($('.role-ROLE_ANIM').length); $("a[data-role='ROLE_MODO']").children("span").html($('.role-ROLE_MODO').length); $("a[data-role='ROLE_ADMIN']").children("span").html($('.role-ROLE_ADMIN').length); diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Item/list.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Item/list.html.twig index 90ec24db..6f163631 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Item/list.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Item/list.html.twig @@ -85,6 +85,12 @@ + + + Animateur de Groupe + + + Modérateur @@ -138,6 +144,7 @@ $("a[data-role='ROLE_ANONYME']").children("span").html($('.group-ROLE_ANONYME').length); $("a[data-role='ROLE_USER']").children("span").html($('.group-ROLE_USER').length); + $("a[data-role='ROLE_ANIM']").children("span").html($('.group-ROLE_ANIM').length); $("a[data-role='ROLE_MODO']").children("span").html($('.group-ROLE_MODO').length); $("a[data-role='ROLE_ADMIN']").children("span").html($('.group-ROLE_ADMIN').length); diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Notice/list.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Notice/list.html.twig index b049d35a..34b19635 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Notice/list.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Notice/list.html.twig @@ -67,6 +67,12 @@ + + + Animateur de Groupe + + + Modérateur @@ -115,6 +121,7 @@ $("a[data-role='ROLE_ANONYME']").children("span").html($('.role-ROLE_ANONYME').length); $("a[data-role='ROLE_USER']").children("span").html($('.role-ROLE_USER').length); + $("a[data-role='ROLE_ANIM']").children("span").html($('.role-ROLE_ANIM').length); $("a[data-role='ROLE_MODO']").children("span").html($('.role-ROLE_MODO').length); $("a[data-role='ROLE_ADMIN']").children("span").html($('.role-ROLE_ADMIN').length); diff --git a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Page/pages.html.twig b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Page/pages.html.twig index 27ade853..23d8fd25 100644 --- a/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Page/pages.html.twig +++ b/src/ninegate-1.0/src/Cadoles/PortalBundle/Resources/views/Page/pages.html.twig @@ -270,52 +270,41 @@ }); // Init socket de counter - var _WS_URI = "wss://{{ gos_web_socket_server_host }}:{{ gos_web_socket_server_port }}"; - var _WS_URI = "wss://{{ gos_web_socket_server_host }}:5555"; + {% if websocket_activate %} + var _WS_URI = "wss://{{ gos_web_socket_server_host }}:{{ gos_web_socket_server_port }}"; - var webSocket = WS.connect(_WS_URI); - var globalsession; + var webSocket = WS.connect(_WS_URI); - webSocket.on("socket/connect", function (session) { - globalsession=session; - session.call("websocket/rpc/update_connection_data", {"userid": "{{app.user.id}}" }).then( - function (result) - { - //console.log("RPC Valid!", result); - }, - function (error, desc) - { - //console.log("RPC Error", error, desc); - } - ); - - // The callback function in "subscribe" is called everytime an event is published in that channel. - session.subscribe("websocket/counter", function (uri, payload) { - if(payload.log) { - console.log("Received message", payload.log); - } - if(payload.alert) { - alert(payload.alert); - } - if(payload.from!={{app.user.id}}) { - menu=$("a[data-group='"+payload.group+"']"); - if(menu.length) { - if(payload.add) { - console.log("Ajout counter pour group "+payload.group+" by "+payload.from); - if(menu.children(".badge").length) { - menu.children(".badge").html(+(menu.children(".badge").html())+1); + webSocket.on("socket/connect", function (session) { + // The callback function in "subscribe" is called everytime an event is published in that channel. + session.subscribe("websocket/counter", function (uri, payload) { + if(payload.log) { + console.log("Received message", payload.log); + } + if(payload.alert) { + alert(payload.alert); + } + if(payload.from!={{app.user.id}}) { + menu=$("a[data-group='"+payload.group+"']"); + if(menu.length) { + if(payload.add) { + console.log("Ajout counter pour group "+payload.group+" by "+payload.from); + if(menu.children(".badge").length) { + menu.children(".badge").html(+(menu.children(".badge").html())+1); + } + else menu.append("11
    - {% for user in members %} + {% for member in members %}
    -
    - -
    -
    - {{ user.lastname }} {{ user.firstname }} + + +
    + + +
    + {%if member.fgmanager%}{%endif%}
    + {{ member.user.lastname }} {{ member.user.firstname }} + +
    {% endfor %} diff --git a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/config/services.yml b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/config/services.yml index afd6cf98..e90421bd 100644 --- a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/config/services.yml +++ b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/config/services.yml @@ -1,4 +1,9 @@ services: + cadoles.websocket.pushmessage: + public: true + class: Cadoles\WebsocketBundle\Service\messageService + arguments: ['@service_container','@doctrine.orm.entity_manager','%websocket_activate%'] + cadoles.websocket.topic: class: Cadoles\WebsocketBundle\Topic\WebsocketTopic arguments: ['@gos_web_socket.websocket.client_manipulator','@doctrine.orm.entity_manager','@service_container'] diff --git a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/views/Chat/client.html.twig b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/views/Chat/client.html.twig index c3731080..681c7831 100644 --- a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/views/Chat/client.html.twig +++ b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Resources/views/Chat/client.html.twig @@ -79,25 +79,12 @@ var dateoptions = {weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "2-digit", minute: "2-digit" }; - {% if app.user %} + {% if websocket_activate and app.user %} var _WS_URI = "wss://{{ gos_web_socket_server_host }}:{{ gos_web_socket_server_port }}"; - var _WS_URI = "wss://{{ gos_web_socket_server_host }}:5555"; var webSocket = WS.connect(_WS_URI); - webSocket.on("socket/connect", function (session) { - - session.call("websocket/rpc/update_connection_data", {"userkey": "{{userkey}}" }).then( - function (result) - { - //console.log("RPC Valid!", result); - }, - function (error, desc) - { - //console.log("RPC Error", error, desc); - } - ); - + webSocket.on("socket/connect", function (session) { //the callback function in "subscribe" is called everytime an event is published in that channel. session.subscribe("websocket/channel/{{groupid}}", function (uri, payload) { if(payload.msg) { @@ -134,7 +121,7 @@ $( "#sendbtn" ).click(function() { var data = CKEDITOR.instances["chat_message"].getData(); if(data) { - event={type: "add", message: data}; + event={mykey: "{{userkey}}", type: "add", message: data}; session.publish("websocket/channel/{{groupid}}", event); CKEDITOR.instances["chat_message"].setData(''); @@ -145,7 +132,7 @@ $(document).on('click', '.delmessage', function(){ id=$(this).data("id"); - event={type: "del", id: id}; + event={mykey: "{{userkey}}", type: "del", id: id}; session.publish("websocket/channel/{{groupid}}", event); diff --git a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Service/messageService.php b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Service/messageService.php new file mode 100644 index 00000000..0ca4c6b3 --- /dev/null +++ b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Service/messageService.php @@ -0,0 +1,27 @@ +container = $container; + $this->em = $em; + $this->activate_websocket = $activate_websocket; + } + + public function send($key,$userid,$groupid,$message) { + $pusher = $this->container->get('gos_web_socket.wamp.pusher'); + $pusher->push(['mykey' => $key, 'type' => 'add', 'message' => $message], 'websocket_topic', ['group' => $groupid]); + $pusher->push(['userid' => $userid, 'type' => 'add', 'group' => $groupid], 'websocket_counter'); + } +} diff --git a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Topic/WebsocketCounter.php b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Topic/WebsocketCounter.php index 5cb07ff4..7b4b8e59 100644 --- a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Topic/WebsocketCounter.php +++ b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Topic/WebsocketCounter.php @@ -70,7 +70,8 @@ class WebsocketCounter implements TopicInterface */ public function onPublish(ConnectionInterface $connection, Topic $topic, WampRequest $request, $event, array $exclude, array $eligible) { - $userid=$connection->userid; + if(!is_array($event)) $event=json_decode($event, true); + $userid=$event["userid"]; $user=$this->em->getRepository("CadolesCoreBundle:User")->find($userid); if(!$user) @@ -80,13 +81,13 @@ class WebsocketCounter implements TopicInterface if(!$group) return; + /* $usergroup=$this->em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$user,"group"=>$group]); if(!$usergroup) return; - + */ + $topic->broadcast([$event["type"] => 1, "group" => $event["group"] , "from" =>$userid]); - - } /** diff --git a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Topic/WebsocketTopic.php b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Topic/WebsocketTopic.php index f7756de7..0076fa01 100644 --- a/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Topic/WebsocketTopic.php +++ b/src/ninegate-1.0/src/Cadoles/WebsocketBundle/Topic/WebsocketTopic.php @@ -69,17 +69,18 @@ class WebsocketTopic implements TopicInterface */ public function onPublish(ConnectionInterface $connection, Topic $topic, WampRequest $request, $event, array $exclude, array $eligible) { - $userkey=$connection->userkey; $groupid=$request->getAttributes()->get('group'); + if(!is_array($event)) $event=json_decode($event, true); $group=$this->em->getRepository("CadolesCoreBundle:Group")->find($groupid); if(!$group) { $topic->broadcast(['log' => 'group NOT FIND']); } - $usergroup=$this->em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(['keyvalue'=> $userkey]); + $usergroup=$this->em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(['keyvalue'=>$event["mykey"]]); if(!$usergroup) { - $topic->broadcast(['log' => 'user NOT IN GROUP']); + $topic->broadcast(['log' => $event]); + $topic->broadcast(['log' => 'user '.$event["mykey"].' NOT IN GROUP '.$groupid]); } else { $user=$usergroup->getUser(); diff --git a/tmpl/ninegate-template.yml b/tmpl/ninegate-template.yml index 846ba35f..9e470262 100644 --- a/tmpl/ninegate-template.yml +++ b/tmpl/ninegate-template.yml @@ -38,10 +38,14 @@ parameters: %end if %if %%getVar("ninegate_activate_websocket", 'non') == "oui" websocket_activate: true - websocket_port: 5555 + websocket_host: %%ninegate_websocket_url + websocket_port: %%ninegate_websocket_portexterne + websocket_portinterne: %%ninegate_websocket_portinterne %else websocket_activate: false - websocket_port: 5555 + websocket_host: + websocket_port: + websocket_portinterne: %end if %if %%getVar("ninegate_activate_portal", 'non') == "oui" portal_activate: true