5 Commits

800 changed files with 6163 additions and 124967 deletions

View File

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

8
README.txt Normal file
View File

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

1
debian/compat vendored Normal file
View File

@ -0,0 +1 @@
7

24
debian/control vendored Normal file
View File

@ -0,0 +1,24 @@
Source: eole-ninegate
Section: web
Priority: optional
Maintainer: Equipe Envole <eole@ac-dijon.fr>
Build-Depends: debhelper (>= 7.0.50)
Standards-Version: 3.8.4
Homepage: http://eole.orion.education.fr/diff/
Vcs-Git: http://dev-eole.ac-dijon.fr/git/ninegate
Vcs-Browser: http://dev-eole.ac-dijon.fr/projects/ninegate/repository
Package: ninegate-sso
Architecture: all
Depends: ${misc:Depends}, eole-sso
Description: Filtre SSO pour ninegate "EOLE".
Package: eole-ninegate
Architecture: all
Depends: ${misc:Depends}, eole-web (>= 2.6.1), ninegate-sso, eole-db, eole-client-annuaire, eole-sondepiwik, eole-posh-profil, eole-envole-themes
Description: Eolisation de l'application ninegate.
Package: ninegate-apps
Architecture: all
Depends: ${misc:Depends}, eole-web-pkg (>= 2.6.1), eole-client-annuaire-pkg, sondepiwik-apps, posh-profil-apps, composer, php-zip, php-mbstring
Description: Sources pour ninegate "EOLE".

44
debian/copyright vendored Normal file
View File

@ -0,0 +1,44 @@
Format: http://dep.debian.net/deps/dep5
Upstream-Name: {PROJECT}
Source: {URL}
Files: *
Copyright: YEAR {UPSTREAM} {AUTHOR} <{MAIL}>
License: {UPSTREAM LICENSE}
Files: debian/*
Copyright: 2012 Équipe EOLE <eole@ac-dijon.fr>
License: CeCILL-2
License: {UPSTREAM LICENSE}
{TEXT OF THE LICENSE}
License: CeCILL-2
This software is governed by the CeCILL-2 license under French law and
abiding by the rules of distribution of free software. You can use,
modify and or redistribute the software under the terms of the CeCILL-2
license as circulated by CEA, CNRS and INRIA at the following URL
"http://www.cecill.info";.
.
As a counterpart to the access to the source code and rights to copy,
modify and redistribute granted by the license, users are provided only
with a limited warranty and the software's author, the holder of the
economic rights, and the successive licensors have only limited
liability.
.
In this respect, the user's attention is drawn to the risks associated
with loading, using, modifying and/or developing or reproducing the
software by the user in light of its specific status of free software,
that may mean that it is complicated to manipulate, and that also
therefore means that it is reserved for developers and experienced
professionals having in-depth computer knowledge. Users are therefore
encouraged to load and test the software's suitability as regards their
requirements in conditions enabling the security of their systems and/or
data to be ensured and, more generally, to use and operate it in the
same conditions as regards security.
.
The fact that you are presently reading this means that you have had
knowledge of the CeCILL-2 license and that you accept its terms.
.
On Eole systems, the complete text of the CeCILL-2 License can be found
in '/usr/share/common-licenses/CeCILL-2-en'.

1
debian/eole-ninegate.install vendored Normal file
View File

@ -0,0 +1 @@
usr/share/eole

3
debian/gbp.conf vendored Normal file
View File

@ -0,0 +1,3 @@
# Set per distribution debian tag
[DEFAULT]
debian-tag = debian/envole/%(version)s

1
debian/ninegate-apps.install vendored Normal file
View File

@ -0,0 +1 @@
var/www/html

1
debian/ninegate-sso.install vendored Normal file
View File

@ -0,0 +1 @@
usr/share/sso

8
debian/rules vendored Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
%:
dh $@

1
debian/source/format vendored Normal file
View File

@ -0,0 +1 @@
3.0 (native)

682
dicos/90_ninegate.xml Normal file
View File

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

View File

@ -1,1698 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<file filelist='ninegate' name='/etc/eole/eole-db.d/ninegate-db.yml' rm='True' mkdir='True'/>
<file filelist='ninegate_nginx' name='/etc/nginx/web.d/ninegate.conf' source='ninegate-nginx.conf' rm='True' mkdir='True' />
</files>
<containers>
<container name='web'>
<package>ninegate-apps</package>
<file filelist='ninegate' name='/etc/apache2/sites-available/ninegate' source='ninegate-apache.conf' rm="True"/>
<file filelist='ninegate' name='/lib/systemd/system/wssninegate.service' source='ninegate.service'/>
<file filelist="ninegate" name="/var/www/html/ninegate/app/config/parameters.yml" source="ninegate-parameters.yml" rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/app/config/template.yml" source="ninegate-template.yml" rm="True"/>
<file filelist="ninegate" name="/var/www/html/ninegate/scripts/ninegate-postservice-00.sh" source="ninegate-postservice-00.sh" rm="True" mode="700" />
<file filelist="ninegate" name="/var/www/html/ninegate/src/Cadoles/CoreBundle/Command/data/core-init-01.sql" source="ninegate-init-01.sql" rm="True"/>
<file filelist='ninegate' name='/etc/cron.d/ninegate' source='ninegate.cron' rm='True'/>
<file filelist='ninegate-migration' name='/var/www/html/envole-migration/config/config-db-ninegate.php' source='ninegate-migration.php' mkdir='True'/>
<service method='apache' servicelist='ninegate'>ninegate</service>
<service servicelist="ninegate">wssninegate</service>
</container>
</containers>
<variables>
<family name='Ninegate' icon='home'>
<variable type='oui/non' name='activer_cadolesldap' description='Activer Annuaire Cadoles' hidden='True' exists='False'/>
<variable type='string' name='cadolesldap_pwdadmin' description="Mot de passe du compte admin durant l'instance" hidden='True' exists='False'/>
<variable type='string' name='cadolesldap_organization' description="Nom de l'organisation principale" hidden='True' exists='False'/>
<variable type='string' name='cadolesldap_niveau01branche' description="Nom de la branche de Niveau 01" hidden='True' exists='False'><value>niveau01</value></variable>
<variable type='string' name='cadolesldap_niveau02branche' description="Nom de la branche de Niveau 02" hidden='True' exists='False'><value>niveau02</value></variable>
<variable type='string' name='cadolesldap_niveau01name' description="Nom de la première orgranisation de Niveau 01" hidden='True' exists='False'/>
<variable type='string' name='cadolesldap_niveau01siren' description="SIREN de la première orgranisation de Niveau 01" hidden='True' exists='False'/>
<variable name="ninegate_test_ninegate" type="oui/non" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_adminer" type="oui/non" description="Activer Adminer" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_balado" type="oui/non" description="Activer Balado" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_cdt" type="oui/non" description="Activer CdT" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_dokuwiki" type="oui/non" description="Activer Dokuwiki" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_econnect" type="oui/non" description="Activer eConnect" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_ead_web" type="oui/non" description="Activer EAD" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_eoe" type="oui/non" description="Activer EOE" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_eop" type="oui/non" description="Activer EOP" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_etherhome" type="oui/non" description="Activer Etherhome" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_fluxbb" type="oui/non" description="Activer Fluxbb" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_genconfig" type="oui/non" description="Activer Genconfig" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_gepi" type="oui/non" description="Activer GEPI" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_glpi" type="oui/non" description="Activer GLPI" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_grr" type="oui/non" description="Activer Grr" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_kanboard" type="oui/non" description="Activer Kanboard" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_limesurvey" type="oui/non" description="Activer Limesurvey" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_mindmaps" type="oui/non" description="Activer Mindmaps" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_moodle" type="oui/non" description="Activer Moodle" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_nextcloud" type="oui/non" description="Activer Nextcloud" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_nineboard" type="oui/non" description="Activer Nineboard" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_nineschool" type="oui/non" description="Activer Nineschool" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_ninesurvey" type="oui/non" description="Activer Ninesurvey" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_opensondage" type="oui/non" description="Activer Opensondage" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_phpldapadmin" type="oui/non" description="Activer phpLdapAdmin" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_piwigo" type="oui/non" description="Activer Piwigo" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_piwik" type="oui/non" description="Activer Piwik" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_roundcube" type="oui/non" description="Activer Roundcube" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_sacoche" type="oui/non" description="Activer Sacoche" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_wordpress" type="oui/non" description="Activer Wordpress" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_revprox" type="oui/non" description="Activer le reverse proxy Nginx" hidden='True' exists='False'><value>non</value></variable>
<variable name="activer_sondepiwik_local" type="oui/non" description="Activer Sonde Piwik" hidden='True' exists='False'><value>non</value></variable>
<variable name='poshprofil_typesynchro' type='string' description='Type de synchronisation' hidden='True' exists='False'><value>Annuaire</value></variable>
<variable name='moodle_apikey' type='string' description="API Key pour accéder au webservice Moodle" hidden='True' exists='False' />
<variable name='ninegate_test_sonde' type='oui/non' hidden='True'/>
<variable name='ninegate_test_conf_cadolesldap' type='oui/non' hidden='True'/>
<variable name='ninegate_test_conf_ldap' type='oui/non' hidden='True'/>
<variable type='oui/non' name='activer_ninegate' description='Activer Ninegate'><value>oui</value></variable>
<variable type='string' name='ninegate_masteridentity' description="Maître de l'Identité" mandatory='True'><value>LDAP</value></variable>
<variable type='string' name='ninegate_mode_auth' description="Mode Authentification" mandatory='True'><value>CAS</value></variable>
<variable type='string' name='ninegate_api_key' description="Clé d'accès API" mandatory='True'><value>APIKeyNinegate</value></variable>
<variable type='oui/non' name='ninegate_ssosynchrogroup' description="Générer automatiquement les groupes en fonction d'un attribut SSO"><value>oui</value></variable>
<variable type='string' name='ninegate_ssoreqgroup' description="Attribut SSO associé à la notion de groupe" mandatory='True'><value>user_groups</value></variable>
<variable type='oui/non' name='ninegate_ssosynchroitem' description="Associer automatiquement les items en fonction d'un attribut SSO"><value>non</value></variable>
<variable type='string' name='ninegate_ssoreqitem' description="Attribut SSO associé à la notion d'item" mandatory='True'><value></value></variable>
<variable type='string' name='ninegate_typesso' description="Mode de connexion SSO (Client ou Proxy)" mandatory='True'><value>client</value></variable>
<variable type='oui/non' name='ninegate_syncldap' description="Synchroniser Ninegate vers votre Annuaire CadolesLDAP"><value>non</value></variable>
<variable type='string' name='ninegate_ldaptemplate' description="Modèle d'annuaire"><value>scribe</value></variable>
<variable type='oui/non' name='ninegate_scribegroup' description="Considérer les classes/options comme des groupes de travail"><value>oui</value></variable>
<variable type='oui/non' name='ninegate_scribemaster' description="Placer les professeurs comme manager des groupes classes/options"><value>oui</value></variable>
<variable type='string' name='ninegate_openldapreqniveau01' description="Lors de l'initalisation de Ninegate requete LDAP utilisateur de votre premier Niveau01" mandatory='True'><value>(uid=*)</value></variable>
<variable type='oui/non' name='ninegate_openldapsynchrogroup' description="Générer automatiquement les groupes en fonction de votre annuaire"><value>oui</value></variable>
<variable type='string' name='ninegate_openldapreqgroup' description="Générer automatiquement les groupes en fonction de votre annuaire" mandatory='True'><value>(objectClass=posixGroup)</value></variable>
<variable type='string' name='ninegate_openldapsubbranchgroup' description="Rechercher les groupes dans la sous-branche" mandatory='False' />
<variable type='string' name='ninegate_openldapsubbranchuser' description="Rechercher les utilisateurs dans la sous-branche" mandatory='False' />
<variable type='string' name='ninegate_ldaptype' description="Annuaire Cadoles LDAP ou AD " mandatory='True'><value>LDAP</value></variable>
<variable type='string' name='ninegate_addomainehome' description="Nom de votre domaine AD Home" mandatory='True'><value></value></variable>
<variable type='string' name='ninegate_addomaineprofil' description="Nom de votre domaine AD Profil" mandatory='True'><value></value></variable>
<variable type='string' name='ninegate_pwdadmin' description="Mot de passe du compte admin durant l'instance (idem valeur Cadoles ldap)" mandatory='True'><value></value></variable>
<variable type='string' name='ninegate_organization' description="Nom de l'organisation principale (idem valeur Cadoles ldap)" mandatory='True'><value></value></variable>
<variable type='string' name='ninegate_niveau01branche' description="Nom de la branche de Niveau 01 (idem valeur Cadoles ldap)" mandatory='True'><value>niveau01</value></variable>
<variable type='string' name='ninegate_niveau02branche' description="Nom de la branche de Niveau 02 (idem valeur Cadoles ldap)" mandatory='True'><value>niveau02</value></variable>
<variable type='string' name='ninegate_niveau01name' description="Nom de la première orgranisation de Niveau 01 (idem valeur Cadoles ldap)" mandatory='True'><value></value></variable>
<variable type='string' name='ninegate_niveau01siren' description="SIREN de la première orgranisation de Niveau 01 (idem valeur Cadoles ldap)"><value></value></variable>
<variable type='string' name='ninegate_niveau01label' description="Label singulier du niveau 01 d'organisation" mandatory='True'><value>Ecole</value></variable>
<variable type='string' name='ninegate_niveau01labels' description="Label pluriel du niveau 01 d'organisation" mandatory='True'><value>Ecoles</value></variable>
<variable type='string' name='ninegate_niveau01icon' description="Icon du niveau 01 d'organisation" mandatory='True'><value>fa-building</value></variable>
<variable type='oui/non' name='ninegate_niveau02view' description="Gérer un niveau 02 d'organisation"><value>non</value></variable>
<variable type='string' name='ninegate_niveau02label' description="Label pluriel du niveau 02 d'organisation" mandatory='True'><value>Service</value></variable>
<variable type='string' name='ninegate_niveau02labels' description="Label pluriel du niveau 02 d'organisation" mandatory='True'><value>Services</value></variable>
<variable type='string' name='ninegate_niveau02icon' description="Icon du niveau 02 d'organisation" mandatory='True'><value>fa-sitemap</value></variable>
<variable type='string' name='ninegate_colormain' description="Couleur principale" mandatory='True'><value>2c3e50</value></variable>
<variable type='string' name='ninegate_fontcolorhover' description="Couleur des polices sur fond de couleur principale" mandatory='True'><value>FFFFFF</value></variable>
<variable type='string' name='ninegate_moderegistration' description="Mode de registration : none / byuser / byadmin" mandatory='True'><value>none</value></variable>
<variable type='string' name='ninegate_keyterm' description="Durée de validité du jeton d'inscription" mandatory='True'><value>8</value></variable>
<variable type='string' name='ninegate_minpassword' description="Taille minimun du password" mandatory='True'><value>8</value></variable>
<variable type='oui/non' name='ninegate_forcetheme' description="Forcer l'utilisation d'un thème"><value>non</value></variable>
<variable type='string' name='ninegate_forcethemename' description="Nom du thème"><value></value></variable>
<!-- MODULE PORTAL -->
<variable type="oui/non" name='ninegate_activate_portal' description='Activer le module portail' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_page' description='Activer le module page' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_item' description='Activer le module item' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_alert' description='Activer le module annonce' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_calendar' description='Activer le module calendrier' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_blog' description='Activer le module blog' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_project' description='Activer le module projet' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_flux' description='Activer le module flux' mandatory='True'>
<value>oui</value>
</variable>
<variable type="oui/non" name='ninegate_activate_notice' description='Activer le module charte' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE SYNCENVOLE -->
<variable type="oui/non" name='ninegate_activate_syncenvole' description='Activer le module Synchronisation Envole' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE CRON -->
<variable type="oui/non" name='ninegate_activate_cron' description='Activer le module CRON' mandatory='True'>
<value>oui</value>
</variable>
<!-- MODULE WEBSOCKET -->
<variable type="oui/non" name='ninegate_activate_websocket' description='Activer le module WEBSOCKET' mandatory='True'>
<value>oui</value>
</variable>
<!-- ADMINER -->
<variable type="oui/non" name='ninegate_activate_widadminer' description='Activer Adminer' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widadminer_url' description='URL complète de votre Adminer' mandatory='True' />
<!-- BALADO -->
<variable type="oui/non" name='ninegate_activate_widbalado' description='Activer Balado' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widbalado_url' description='URL complète de votre Balado' mandatory='True' />
<variable type='string' name='ninegate_widbalado_syncenvole' description='URL Posh-Profil pour synchronisation Balado' mandatory='True' />
<!-- CDT -->
<variable type="oui/non" name='ninegate_activate_widcdt' description='Activer CdT' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widcdt_url' description='URL complète de votre CdT' mandatory='True' />
<variable type='string' name='ninegate_widcdt_syncenvole' description='URL Posh-Profil pour synchronisation CdT' mandatory='True' />
<!-- DOKUWIKI -->
<variable type="oui/non" name='ninegate_activate_widdokuwiki' description='Activer Dokuwiki' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widdokuwiki_url' description='URL complète de votre Dokuwiki' mandatory='True' />
<!-- ECONNECT -->
<variable type="oui/non" name='ninegate_activate_wideconnect' description='Activer eConnect' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_wideconnect_url' description='URL complète de votre eConnect' mandatory='True' />
<!-- EAD -->
<variable type="oui/non" name='ninegate_activate_widead' description='Activer EAD' mandatory='True'>
<value>non</value>
</variable>
<!-- EOE -->
<variable type="oui/non" name='ninegate_activate_wideoe' description='Activer EOE' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_wideoe_url' description='URL complète de votre EOE' mandatory='True' />
<!-- EOP -->
<variable type="oui/non" name='ninegate_activate_wideop' description='Activer EOP' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_wideop_url' description='URL complète de votre EOP' mandatory='True' />
<!-- ETHERHOME -->
<variable type="oui/non" name='ninegate_activate_widetherhome' description='Activer Etherhome' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widetherhome_url' description='URL complète de votre Etherhome' mandatory='True' />
<!-- FLUXBB -->
<variable type="oui/non" name='ninegate_activate_widfluxbb' description='Activer Fluxbb' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widfluxbb_url' description='URL complète de votre Fluxbb' mandatory='True' />
<!-- GENCONFIG -->
<variable type="oui/non" name='ninegate_activate_widgenconfig' description='Activer Genconfig' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widgenconfig_url' description='URL complète de votre Genconfig' mandatory='True' />
<!-- GEPI -->
<variable type="oui/non" name='ninegate_activate_widgepi' description='Activer GEPI' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widgepi_url' description='URL complète de votre GEPI' mandatory='True' />
<variable type='string' name='ninegate_widgepi_syncenvole' description='URL Posh-Profil pour synchronisation GEPI' mandatory='True' />
<!-- GLPI -->
<variable type="oui/non" name='ninegate_activate_widglpi' description='Activer GLPI' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widglpi_url' description='URL complète de votre GLPI' mandatory='True' />
<!-- GRR -->
<variable type="oui/non" name='ninegate_activate_widgrr' description='Activer Grr' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widgrr_url' description='URL complète de votre Grr' mandatory='True' />
<!-- KANBOARD -->
<variable type="oui/non" name='ninegate_activate_widkanboard' description='Activer Kanboard' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widkanboard_url' description='URL complète de votre Kanboard' mandatory='True' />
<!-- LIMESURVEY -->
<variable type="oui/non" name='ninegate_activate_widlimesurvey' description='Activer Limesurvey' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widlimesurvey_url' description='URL complète de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_apiuser' description='API User de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_apikey' description='API Key de votre Limesurvey' mandatory='True' />
<variable type='string' name='ninegate_widlimesurvey_syncenvole' description='URL Posh-Profil pour synchronisation Limesurvey' mandatory='True' />
<!-- MINDMAPS -->
<variable type="oui/non" name='ninegate_activate_widmindmaps' description='Activer Mindmaps' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widmindmaps_url' description='URL complète de votre Mindmaps' mandatory='True' />
<!-- MOODLE -->
<variable type="oui/non" name='ninegate_activate_widmoodle' description='Activer Moodle' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widmoodle_url' description='URL complète de votre Moodle' mandatory='True' />
<variable type='string' name='ninegate_widmoodle_apikey' description='API Key de votre Moodle' mandatory='True' />
<variable type='string' name='ninegate_widmoodle_syncenvole' description='URL Posh-Profil pour synchronisation Moodle' mandatory='True' />
<!-- NEXTCLOUD -->
<variable type="oui/non" name='ninegate_activate_widnextcloud' description='Activer Nextcloud' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widnextcloud_url' description='URL complète de votre Nextcloud' mandatory='True' />
<variable type='string' name='ninegate_widnextcloud_syncenvole' description='URL Posh-Profil pour synchronisation Nextcloud' mandatory='True' />
<!-- NINEBOARD -->
<variable type="oui/non" name='ninegate_activate_widnineboard' description='Activer Nineboard' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widnineboard_url' description='URL complète de votre Nineboard' mandatory='True' />
<!-- NINESCHOOL -->
<variable type="oui/non" name='ninegate_activate_widnineschool' description='Activer Nineschool' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widnineschool_url' description='URL complète de votre Nineschool' mandatory='True' />
<!-- NINESURVEY -->
<variable type="oui/non" name='ninegate_activate_widninesurvey' description='Activer Ninesurvey' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widninesurvey_url' description='URL complète de votre Ninesurvey' mandatory='True' />
<!-- ONLY OFFICE -->
<variable type="oui/non" name='ninegate_activate_widonlyoffice' description='Activer OnlyOffice' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widonlyoffice_url' description='URL complète de votre Onlyoffice' mandatory='True' />
<variable type="oui/non" name='ninegate_widonlyoffice_sync' description='Activer la Synchronisation Onlyoffice' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widonlyoffice_user' description='Login admin de votre Onlyoffice' mandatory='True' />
<variable type='string' name='ninegate_widonlyoffice_password' description='Password admin de votre Onlyoffice' mandatory='True' />
<!-- OPENSONDAGE -->
<variable type="oui/non" name='ninegate_activate_widopensondage' description='Activer Opensondage' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widopensondage_url' description='URL complète de votre Opensondage' mandatory='True' />
<!-- PHPLDAPADMIN -->
<variable type="oui/non" name='ninegate_activate_widphpldapadmin' description='Activer phpLdapAdmin' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widphpldapadmin_url' description='URL complète de votre phpLdapAdmin' mandatory='True' />
<!-- PIWIGO -->
<variable type="oui/non" name='ninegate_activate_widpiwigo' description='Activer Piwigo' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widpiwigo_url' description='URL complète de votre Piwigo' mandatory='True' />
<!-- PIWIK -->
<variable type="oui/non" name='ninegate_activate_widpiwik' description='Activer Piwik' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widpiwik_url' description='URL complète de votre Piwik' mandatory='True' />
<variable type='string' name='ninegate_widpiwik_syncenvole' description='URL Posh-Profil pour synchronisation Piwik' mandatory='True' />
<!-- ROUNDCUBE -->
<variable type="oui/non" name='ninegate_activate_widroundcube' description='Activer Roundcube' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widroundcube_url' description='URL complète de votre Roundcube' mandatory='True' />
<!-- SACOCHE -->
<variable type="oui/non" name='ninegate_activate_widsacoche' description='Activer Sacoche' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widsacoche_url' description='URL complète de votre Sacoche' mandatory='True' />
<variable type='string' name='ninegate_widsacoche_syncenvole' description='URL Posh-Profil pour synchronisation Sacoche' mandatory='True' />
<!-- WORDPRESS -->
<variable type="oui/non" name='ninegate_activate_widwordpress' description='Activer Wordpress' mandatory='True'>
<value>non</value>
</variable>
<variable type='string' name='ninegate_widwordpress_url' description='URL complète de votre Wordpress' mandatory='True' />
<variable type='string' name='ninegate_widwordpress_syncenvole' description='URL Posh-Profil pour synchronisation Wordpress' mandatory='True' />
<!-- EMAIL -->
<variable type='string' name='ninegate_noreply' description='Adresse mail utilisé pour le noreply' mandatory='True' />
<variable type="oui/non" name='ninegate_activer_localmail' description="Utiliser le serveur d'envoi de mail local" mandatory='True'>
<value>oui</value>
</variable>
<variable type='string' name='ninegate_smtphost' description='Host du serveur SMTP' />
<variable type='string' name='ninegate_smtpport' description='Port du serveur SMTP' />
<variable type='string' name='ninegate_smtpuser' description='Compte du serveur SMTP' />
<variable type='string' name='ninegate_smtppwd' description='Fichier contenant le mot de passe associé du compte SMTP' />
<variable type='string' name='ninegate_smtpencryption' description='Type Encryptage du serveur SMTP' />
<variable type='string' name='ninegate_smtpauthmode' description='Mode Authentification du serveur SMTP' />
</family>
<family name='EoleDB' icon='database' mode='expert'>
<!-- EOLEDB -->
<variable type='string' name='ninegate_db_mode' description='Serveur de bases de données à utiliser' mode='expert'/>
<variable type='string' name='ninegate_dbserver' description='Adresse du serveur de base de données' mode='expert'/>
<variable type='number' name='ninegate_dbport' description="Port d'écoute du serveur de base de données" mode='expert'/>
<variable type='string' name='ninegate_allow_hosts' description="Hôtes autorisés à utiliser la base de données" multi='True' mode='expert'/>
<variable type='string' name='ninegate_dbuser' description='Utilisateur du serveur de base de données' mode='expert'/>
<variable type='string' name='ninegate_dbpass' description='Fichier de mot de passe du serveur' mode='expert'/>
</family>
<separators>
<separator name="ninegate_syncldap">Paramètres associés à l'Annuaire</separator>
<separator name="ninegate_niveau01label">Paramètres associés aux look de l'application</separator>
<separator name="ninegate_activate_portal">Paramètres associés aux modules à activer</separator>
<separator name="ninegate_activate_widadminer">Paramètres associés à Adminer</separator>
<separator name="ninegate_activate_widbalado">Paramètres associés à Balado</separator>
<separator name="ninegate_activate_widcdt">Paramètres associés à CdT</separator>
<separator name="ninegate_activate_widdokuwiki">Paramètres associés à Dokuwiki</separator>
<separator name="ninegate_activate_wideconnect">Paramètres associés à eConnect</separator>
<separator name="ninegate_activate_widead">Paramètres associés à EAD</separator>
<separator name="ninegate_activate_wideoe">Paramètres associés à EOE</separator>
<separator name="ninegate_activate_wideop">Paramètres associés à EOP</separator>
<separator name="ninegate_activate_widetherhome">Paramètres associés à Etherhome</separator>
<separator name="ninegate_activate_widfluxbb">Paramètres associés à Fluxbb</separator>
<separator name="ninegate_activate_widgenconfig">Paramètres associés à GENCONFIG</separator>
<separator name="ninegate_activate_widgepi">Paramètres associés à GEPI</separator>
<separator name="ninegate_activate_widglpi">Paramètres associés à GLPI</separator>
<separator name="ninegate_activate_widgrr">Paramètres associés à Grr</separator>
<separator name="ninegate_activate_widkanboard">Paramètres associés à Kanboard</separator>
<separator name="ninegate_activate_widlimesurvey">Paramètres associés à Limesurvey</separator>
<separator name="ninegate_activate_widmindmaps">Paramètres associés à Mindmaps</separator>
<separator name="ninegate_activate_widmoodle">Paramètres associés à Moodle</separator>
<separator name="ninegate_activate_widnextcloud">Paramètres associés à Nextcloud</separator>
<separator name="ninegate_activate_widnineboard">Paramètres associés à Nineboard</separator>
<separator name="ninegate_activate_widnineschool">Paramètres associés à Nineschool</separator>
<separator name="ninegate_activate_widninesurvey">Paramètres associés à Ninesurvey</separator>
<separator name="ninegate_activate_widonlyoffice">Paramètres associés à Only Office</separator>
<separator name="ninegate_activate_widopensondage">Paramètres associés à Opensondage</separator>
<separator name="ninegate_activate_widphpldapadmin">Paramètres associés à phpLdapAdmin</separator>
<separator name="ninegate_activate_widpiwigo">Paramètres associés à Piwigo</separator>
<separator name="ninegate_activate_widpiwik">Paramètres associés à Piwik</separator>
<separator name="ninegate_activate_widroundcube">Paramètres associés à Roundcube</separator>
<separator name="ninegate_activate_widsacoche">Paramètres associés à Sacoche</separator>
<separator name="ninegate_activate_widwordpress">Paramètres associés à Wordpress</separator>
<separator name="ninegate_activate_websocket">Paramètres associés au Serveur WEBSOCKET</separator>
<separator name="ninegate_noreply">Paramètres associés aux Mails</separator>
<separator name="ninegate_db_mode">Paramètres EoleDB associés à Ninegate</separator>
</separators>
</variables>
<constraints>
<condition name='hidden_if_in' source='activer_apache'>
<param>non</param>
<target type='variable'>activer_ninegate</target>
</condition>
<condition name='hidden_if_in' source='activer_revprox'>
<param>non</param>
<target type='filelist'>nineboard_nginx</target>
</condition>
<condition name='hidden_if_in' source='activer_ninegate'>
<param>non</param>
<target type='variable'>ninegate_masteridentity</target>
<target type='variable'>ninegate_mode_auth</target>
<target type='variable'>ninegate_api_key</target>
<target type='variable'>ninegate_ssosynchrogroup</target>
<target type='variable'>ninegate_ssoreqgroup</target>
<target type='variable'>ninegate_ssosynchroitem</target>
<target type='variable'>ninegate_ssoreqitem</target>
<target type='variable'>ninegate_typesso</target>
<target type='variable'>ninegate_syncldap</target>
<target type='variable'>ninegate_ldaptemplate</target>
<target type='variable'>ninegate_scribegroup</target>
<target type='variable'>ninegate_scribemaster</target>
<target type='variable'>ninegate_openldapreqniveau01</target>
<target type='variable'>ninegate_openldapsynchrogroup</target>
<target type='variable'>ninegate_openldapreqgroup</target>
<target type='variable'>ninegate_openldapsubbranchgroup</target>
<target type='variable'>ninegate_openldapsubbranchuser</target>
<target type='variable'>ninegate_ldaptype</target>
<target type='variable'>ninegate_pwdadmin</target>
<target type='variable'>ninegate_organization</target>
<target type='variable'>ninegate_niveau01branche</target>
<target type='variable'>ninegate_niveau02branche</target>
<target type='variable'>ninegate_niveau01name</target>
<target type='variable'>ninegate_niveau01siren</target>
<target type='variable'>ninegate_niveau01label</target>
<target type='variable'>ninegate_niveau01labels</target>
<target type='variable'>ninegate_niveau01icon</target>
<target type='variable'>ninegate_niveau02view</target>
<target type='variable'>ninegate_niveau02label</target>
<target type='variable'>ninegate_niveau02labels</target>
<target type='variable'>ninegate_niveau02icon</target>
<target type='variable'>ninegate_colormain</target>
<target type='variable'>ninegate_fontcolorhover</target>
<target type='variable'>ninegate_moderegistration</target>
<target type='variable'>ninegate_keyterm</target>
<target type='variable'>ninegate_minpassword</target>
<target type='variable'>ninegate_forcetheme</target>
<target type='variable'>ninegate_forcethemename</target>
<target type='variable'>ninegate_activate_portal</target>
<target type='variable'>ninegate_activate_page</target>
<target type='variable'>ninegate_activate_item</target>
<target type='variable'>ninegate_activate_alert</target>
<target type='variable'>ninegate_activate_calendar</target>
<target type='variable'>ninegate_activate_blog</target>
<target type='variable'>ninegate_activate_project</target>
<target type='variable'>ninegate_activate_flux</target>
<target type='variable'>ninegate_activate_notice</target>
<target type='variable'>ninegate_activate_syncenvole</target>
<target type='variable'>ninegate_activate_cron</target>
<target type='variable'>ninegate_activate_websocket</target>
<target type='variable'>ninegate_noreply</target>
<target type='variable'>ninegate_activer_localmail</target>
<target type='variable'>ninegate_smtphost</target>
<target type='variable'>ninegate_smtpport</target>
<target type='variable'>ninegate_smtpuser</target>
<target type='variable'>ninegate_smtppwd</target>
<target type='variable'>ninegate_smtpencryption</target>
<target type='variable'>ninegate_smtpauthmode</target>
<target type='variable'>ninegate_db_mode</target>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_allow_hosts</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbpass</target>
<target type='filelist'>ninegate</target>
<target type='filelist'>ninegate_nginx</target>
<target type='filelist'>ninegate-migration</target>
<target type='servicelist'>ninegate</target>
</condition>
<condition name='hidden_if_in' source='activer_envole_migration' fallback='True'>
<param>non</param>
<target type='filelist'>ninegate-migration</target>
</condition>
<condition name='hidden_if_in' source='ninegate_masteridentity'>
<param>LDAP</param>
<param>SSO</param>
<target type='variable'>ninegate_syncldap</target>
<target type='variable'>ninegate_moderegistration</target>
<target type='variable'>ninegate_keyterm</target>
<target type='variable'>ninegate_minpassword</target>
</condition>
<condition name='hidden_if_in' source='ninegate_masteridentity'>
<param>SQL</param>
<param>SSO</param>
<target type='variable'>ninegate_ldaptemplate</target>
<target type='variable'>ninegate_test_conf_cadolesldap</target>
</condition>
<condition name='hidden_if_in' source='ninegate_masteridentity'>
<param>SQL</param>
<param>LDAP</param>
<target type='variable'>ninegate_ssosynchrogroup</target>
<target type='variable'>ninegate_ssoreqgroup</target>
<target type='variable'>ninegate_ssosynchroitem</target>
<target type='variable'>ninegate_ssoreqitem</target>
</condition>
<condition name='hidden_if_in' source='ninegate_mode_auth'>
<param>SQL</param>
<param>LDAP</param>
<param>SAML</param>
<target type='variable'>ninegate_typesso</target>
</condition>
<condition name='hidden_if_in' source='ninegate_syncldap'>
<param>non</param>
<target type='variable'>ninegate_ldaptype</target>
<target type='variable'>ninegate_pwdadmin</target>
<target type='variable'>ninegate_niveau01name</target>
<target type='variable'>ninegate_niveau01siren</target>
</condition>
<fill name='calc_multi_condition' target='activer_admin_passfile'>
<param>non</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_syncldap</param>
<param name="operator">AND</param>
<param type='eole' name='condition_2' hidden='False'>activer_cadolesldap</param>
<param name='match'>non</param>
<param name='mismatch'>oui</param>
<param name='default_mismatch'>non</param>
</fill>
<auto name='calc_multi_condition' target='ninegate_test_conf_cadolesldap'>
<param>CadolesLDAP</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_ldaptemplate</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</auto>
<auto name='calc_multi_condition' target='ninegate_test_conf_ldap'>
<param>oui</param>
<param name="operator">OR</param>
<param type='eole' name='condition_1' hidden='False'>ninegate_syncldap</param>
<param type='eole' name='condition_2' hidden='False'>ninegate_test_conf_cadolesldap</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<condition name='hidden_if_in' source='ninegate_test_conf_ldap'>
<param>non</param>
<target type='variable'>ninegate_organization</target>
<target type='variable'>ninegate_niveau01branche</target>
<target type='variable'>ninegate_niveau02branche</target>
</condition>
<condition name='hidden_if_in' source='ninegate_niveau02view'>
<param>non</param>
<target type='variable'>ninegate_niveau02label</target>
<target type='variable'>ninegate_niveau02labels</target>
<target type='variable'>ninegate_niveau02icon</target>
</condition>
<auto name='calc_multi_condition' target='ninegate_test_ninegate'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_ninegate</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<!-- AFFICHAGE EN FONCTION DE SSO SYNCHRO GROUPE -->
<condition name='hidden_if_in' source='ninegate_ssosynchrogroup'>
<param>non</param>
<target type='variable'>ninegate_ssoreqgroup</target>
</condition>
<!-- AFFICHAGE EN FONCTION DE SSO SYNCHRO ITEM -->
<condition name='hidden_if_in' source='ninegate_ssosynchroitem'>
<param>non</param>
<target type='variable'>ninegate_ssoreqitem</target>
</condition>
<!-- AFFICHAGE EN FONCTION DE CADOLESLDAP -->
<fill name='calc_val' target='ninegate_pwdadmin'>
<param type='eole' hidden='False'>cadolesldap_pwdadmin</param>
</fill>
<fill name='calc_val_first_value' target='ninegate_organization'>
<param type='eole' optional='True' hidden='False'>cadolesldap_organization</param>
<param type='eole'>libelle_etab</param>
</fill>
<fill name='calc_val_first_value' target='ninegate_niveau01branche'>
<param type='eole' hidden='False'>cadolesldap_niveau01branche</param>
<param>niveau01</param>
</fill>
<fill name='calc_val_first_value' target='ninegate_niveau02branche'>
<param type='eole' hidden='False'>cadolesldap_niveau02branche</param>
<param>niveau01</param>
</fill>
<fill name='calc_val_first_value' target='ninegate_niveau01name'>
<param type='eole' optional='True' hidden='False'>cadolesldap_niveau01name</param>
<param type='eole'>libelle_etab</param>
</fill>
<fill name='calc_val' target='ninegate_niveau01siren'>
<param type='eole' hidden='False'>cadolesldap_niveau01siren</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU MODE SCRIBE -->
<condition name='hidden_if_not_in' source='ninegate_ldaptemplate'>
<param>scribe</param>
<target type='variable'>ninegate_scribegroup</target>
<target type='variable'>ninegate_scribemaster</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODE OPEN -->
<condition name='hidden_if_not_in' source='ninegate_ldaptemplate'>
<param>open</param>
<target type='variable'>ninegate_openldapreqniveau01</target>
<target type='variable'>ninegate_openldapsynchrogroup</target>
<target type='variable'>ninegate_openldapreqgroup</target>
<target type='variable'>ninegate_openldapsubbranchgroup</target>
<target type='variable'>ninegate_openldapsubbranchuser</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU LDAP SYNCHRO GROUP -->
<condition name='hidden_if_in' source='ninegate_openldapsynchrogroup'>
<param>non</param>
<target type='variable'>ninegate_openldapreqgroup</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODE SCRIBE -->
<condition name='hidden_if_not_in' source='ninegate_ldaptype'>
<param>AD</param>
<target type='variable'>ninegate_addomainehome</target>
<target type='variable'>ninegate_addomaineprofil</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU FORCE THEME -->
<condition name='hidden_if_in' source='ninegate_forcetheme'>
<param>non</param>
<target type='variable'>ninegate_forcethemename</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODULE PORTAL -->
<condition name='hidden_if_in' source='ninegate_activate_portal'>
<param>non</param>
<target type='variable'>ninegate_activate_widadminer</target>
<target type='variable'>ninegate_activate_widbalado</target>
<target type='variable'>ninegate_activate_widcdt</target>
<target type='variable'>ninegate_activate_widdokuwiki</target>
<target type='variable'>ninegate_activate_wideconnect</target>
<target type='variable'>ninegate_activate_widead</target>
<target type='variable'>ninegate_activate_wideoe</target>
<target type='variable'>ninegate_activate_wideop</target>
<target type='variable'>ninegate_activate_widetherhome</target>
<target type='variable'>ninegate_activate_widfluxbb</target>
<target type='variable'>ninegate_activate_widgenconfig</target>
<target type='variable'>ninegate_activate_widgepi</target>
<target type='variable'>ninegate_activate_widglpi</target>
<target type='variable'>ninegate_activate_widgrr</target>
<target type='variable'>ninegate_activate_widkanboard</target>
<target type='variable'>ninegate_activate_widlimesurvey</target>
<target type='variable'>ninegate_activate_widmindmaps</target>
<target type='variable'>ninegate_activate_widmoodle</target>
<target type='variable'>ninegate_activate_widnextcloud</target>
<target type='variable'>ninegate_activate_widnineboard</target>
<target type='variable'>ninegate_activate_widnineschool</target>
<target type='variable'>ninegate_activate_widninesurvey</target>
<target type='variable'>ninegate_activate_widonlyoffice</target>
<target type='variable'>ninegate_activate_widopensondage</target>
<target type='variable'>ninegate_activate_widphpldapadmin</target>
<target type='variable'>ninegate_activate_widpiwigo</target>
<target type='variable'>ninegate_activate_widpiwik</target>
<target type='variable'>ninegate_activate_widroundcube</target>
<target type='variable'>ninegate_activate_widsacoche</target>
<target type='variable'>ninegate_activate_widwordpress</target>
</condition>
<condition name='hidden_if_in' source='ninegate_activate_portal'>
<param>oui</param>
<target type='variable'>ninegate_activate_page</target>
<target type='variable'>ninegate_activate_item</target>
<target type='variable'>ninegate_activate_alert</target>
<target type='variable'>ninegate_activate_calendar</target>
<target type='variable'>ninegate_activate_blog</target>
<target type='variable'>ninegate_activate_project</target>
<target type='variable'>ninegate_activate_flux</target>
<target type='variable'>ninegate_activate_notice</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODULE SYNCENVOLE -->
<condition name='hidden_if_in' source='ninegate_activate_syncenvole'>
<param>non</param>
<target type='variable'>ninegate_widbalado_syncenvole</target>
<target type='variable'>ninegate_widcdt_syncenvole</target>
<target type='variable'>ninegate_widgepi_syncenvole</target>
<target type='variable'>ninegate_widlimesurvey_syncenvole</target>
<target type='variable'>ninegate_widmoodle_syncenvole</target>
<target type='variable'>ninegate_widnextcloud_syncenvole</target>
<target type='variable'>ninegate_widpiwik_syncenvole</target>
<target type='variable'>ninegate_widsacoche_syncenvole</target>
<target type='variable'>ninegate_widwordpress_syncenvole</target>
</condition>
<condition name='hidden_if_in' source='poshprofil_typesynchro'>
<param>ENT</param>
<target type='variable'>ninegate_widpiwik_syncenvole</target>
</condition>
<condition name='hidden_if_in' source='poshprofil_typesynchro'>
<param>Annuaire</param>
<target type='variable'>ninegate_widbalado_syncenvole</target>
<target type='variable'>ninegate_widcdt_syncenvole</target>
<target type='variable'>ninegate_widgepi_syncenvole</target>
<target type='variable'>ninegate_widnextcloud_syncenvole</target>
<target type='variable'>ninegate_widsacoche_syncenvole</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU WIDGET ADMINER -->
<fill name='calc_multi_condition' target='ninegate_activate_widadminer'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_adminer</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widadminer'>
<param>non</param>
<target type='variable'>ninegate_widadminer_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widadminer_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_adminer</param>
<param name='match'>/adminer</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET BALADO -->
<fill name='calc_multi_condition' target='ninegate_activate_widbalado'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_balado</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widbalado'>
<param>non</param>
<target type='variable'>ninegate_widbalado_url</target>
<target type='variable'>ninegate_widbalado_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widbalado_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_balado</param>
<param name='match'>/balado</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widbalado_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_balado</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET CDT -->
<fill name='calc_multi_condition' target='ninegate_activate_widcdt'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_cdt</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widcdt'>
<param>non</param>
<target type='variable'>ninegate_widcdt_url</target>
<target type='variable'>ninegate_widcdt_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widcdt_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_cdt</param>
<param name='match'>/cdt</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widcdt_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_cdt</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET DOKUWIKI -->
<fill name='calc_multi_condition' target='ninegate_activate_widdokuwiki'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_dokuwiki</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widdokuwiki'>
<param>non</param>
<target type='variable'>ninegate_widdokuwiki_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widdokuwiki_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_dokuwiki</param>
<param name='match'>/dokuwiki</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ECONNECT -->
<fill name='calc_multi_condition' target='ninegate_activate_wideconnect'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_econnect</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_wideconnect'>
<param>non</param>
<target type='variable'>ninegate_wideconnect_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_wideconnect_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_econnect</param>
<param name='match'>/econnect</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET EAD -->
<fill name='calc_multi_condition' target='ninegate_activate_widead'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_ead_web</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET EOE -->
<fill name='calc_multi_condition' target='ninegate_activate_wideoe'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_eoe</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_wideoe'>
<param>non</param>
<target type='variable'>ninegate_wideoe_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_wideoe_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_eoe</param>
<param name='match'>/eoleapps/eleves/passperso</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET EOP -->
<fill name='calc_multi_condition' target='ninegate_activate_wideop'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_eop</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_wideop'>
<param>non</param>
<target type='variable'>ninegate_wideop_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_wideop_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_eop</param>
<param name='match'>/eoleapps/eop</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ETHERHOME -->
<fill name='calc_multi_condition' target='ninegate_activate_widetherhome'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_etherhome</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widetherhome'>
<param>non</param>
<target type='variable'>ninegate_widetherhome_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widetherhome_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_etherhome</param>
<param name='match'>/etherhome</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET FLUXBB -->
<fill name='calc_multi_condition' target='ninegate_activate_widfluxbb'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_fluxbb</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widfluxbb'>
<param>non</param>
<target type='variable'>ninegate_widfluxbb_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widfluxbb_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_fluxbb</param>
<param name='match'>/fluxbb</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GENCONFIG -->
<fill name='calc_multi_condition' target='ninegate_activate_widgenconfig'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_genconfig</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widgenconfig'>
<param>non</param>
<target type='variable'>ninegate_widgenconfig_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widgenconfig_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_genconfig</param>
<param name='match'>/genconfig</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GEPI -->
<fill name='calc_multi_condition' target='ninegate_activate_widgepi'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_gepi</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widgepi'>
<param>non</param>
<target type='variable'>ninegate_widgepi_url</target>
<target type='variable'>ninegate_widgepi_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widgepi_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_gepi</param>
<param name='match'>/gepi</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widgepi_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_gepi</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GLPI -->
<fill name='calc_multi_condition' target='ninegate_activate_widglpi'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_glpi</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widglpi'>
<param>non</param>
<target type='variable'>ninegate_widglpi_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widglpi_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_glpi</param>
<param name='match'>/glpi</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET GRR -->
<fill name='calc_multi_condition' target='ninegate_activate_widgrr'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_grr</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widgrr'>
<param>non</param>
<target type='variable'>ninegate_widgrr_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widgrr_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_grr</param>
<param name='match'>/grr</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET KANBOARD -->
<fill name='calc_multi_condition' target='ninegate_activate_widkanboard'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_kanboard</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widkanboard'>
<param>non</param>
<target type='variable'>ninegate_widkanboard_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widkanboard_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_kanboard</param>
<param name='match'>/kanboard</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET LIMESURVEY -->
<fill name='calc_multi_condition' target='ninegate_activate_widlimesurvey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widlimesurvey'>
<param>non</param>
<target type='variable'>ninegate_widlimesurvey_url</target>
<target type='variable'>ninegate_widlimesurvey_apiuser</target>
<target type='variable'>ninegate_widlimesurvey_apikey</target>
<target type='variable'>ninegate_widlimesurvey_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>/limesurvey</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_apiuser'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>restuser</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_apikey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>apikeyenvole</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widlimesurvey_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_limesurvey</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET MINDMAPS -->
<fill name='calc_multi_condition' target='ninegate_activate_widmindmaps'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_mindmaps</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widmindmaps'>
<param>non</param>
<target type='variable'>ninegate_widmindmaps_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widmindmaps_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_mindmaps</param>
<param name='match'>/mindmaps</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET MOODLE -->
<fill name='calc_multi_condition' target='ninegate_activate_widmoodle'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widmoodle'>
<param>non</param>
<target type='variable'>ninegate_widmoodle_url</target>
<target type='variable'>ninegate_widmoodle_apikey</target>
<target type='variable'>ninegate_widmoodle_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widmoodle_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>/moodle</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widmoodle_apikey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param type='eole' name='match' hidden='False'>moodle_apikey</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widmoodle_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_moodle</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET NEXTCLOUD -->
<fill name='calc_multi_condition' target='ninegate_activate_widnextcloud'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nextcloud</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widnextcloud'>
<param>non</param>
<target type='variable'>ninegate_widnextcloud_url</target>
<target type='variable'>ninegate_widnextcloud_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widnextcloud_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nextcloud</param>
<param name='match'>/nextcloud</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widnextcloud_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nextcloud</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET NINEBOARD -->
<fill name='calc_multi_condition' target='ninegate_activate_widnineboard'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nineboard</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widnineboard'>
<param>non</param>
<target type='variable'>ninegate_widnineboard_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widnineboard_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nineboard</param>
<param name='match'>/nineboard</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET NINESCHOOL -->
<fill name='calc_multi_condition' target='ninegate_activate_widnineschool'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nineschool</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widnineschool'>
<param>non</param>
<target type='variable'>ninegate_widnineschool_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widnineschool_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_nineschool</param>
<param name='match'>/nineschool</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET NINESURVEY -->
<fill name='calc_multi_condition' target='ninegate_activate_widninesurvey'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_ninesurvey</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widninesurvey'>
<param>non</param>
<target type='variable'>ninegate_widninesurvey_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widninesurvey_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_ninesurvey</param>
<param name='match'>/ninesurvey</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET OPENSONDAGE -->
<fill name='calc_multi_condition' target='ninegate_activate_widopensondage'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_opensondage</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widopensondage'>
<param>non</param>
<target type='variable'>ninegate_widopensondage_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widopensondage_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_opensondage</param>
<param name='match'>/opensondage</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ONLYOFFICE -->
<condition name='hidden_if_in' source='ninegate_activate_widonlyoffice'>
<param>non</param>
<target type='variable'>ninegate_widonlyoffice_url</target>
<target type='variable'>ninegate_widonlyoffice_sync</target>
</condition>
<condition name='hidden_if_in' source='ninegate_widonlyoffice_sync'>
<param>non</param>
<target type='variable'>ninegate_widonlyoffice_user</target>
<target type='variable'>ninegate_widonlyoffice_password</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU WIDGET PHPLDAPADMIN -->
<fill name='calc_multi_condition' target='ninegate_activate_widphpldapadmin'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_phpldapadmin</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widphpldapadmin'>
<param>non</param>
<target type='variable'>ninegate_widphpldapadmin_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widphpldapadmin_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_phpldapadmin</param>
<param name='match'>/phpldapadmin</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET PIWIGO -->
<fill name='calc_multi_condition' target='ninegate_activate_widpiwigo'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwigo</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widpiwigo'>
<param>non</param>
<target type='variable'>ninegate_widpiwigo_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widpiwigo_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwigo</param>
<param name='match'>/piwigo</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET PIWIK -->
<fill name='calc_multi_condition' target='ninegate_activate_widpiwik'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widpiwik'>
<param>non</param>
<target type='variable'>ninegate_widpiwik_url</target>
<target type='variable'>ninegate_widpiwik_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widpiwik_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>/piwik</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widpiwik_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_piwik</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET ROUNDCUBE -->
<fill name='calc_multi_condition' target='ninegate_activate_widroundcube'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_roundcube</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widroundcube'>
<param>non</param>
<target type='variable'>ninegate_widroundcube_url</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widroundcube_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_roundcube</param>
<param name='match'>/roundcube</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET SACOCHE -->
<fill name='calc_multi_condition' target='ninegate_activate_widsacoche'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_sacoche</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widsacoche'>
<param>non</param>
<target type='variable'>ninegate_widsacoche_url</target>
<target type='variable'>ninegate_widsacoche_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widsacoche_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_sacoche</param>
<param name='match'>/sacoche</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widsacoche_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_sacoche</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET WORDPRESS -->
<fill name='calc_multi_condition' target='ninegate_activate_widwordpress'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
<param name='default_mismatch'>non</param>
</fill>
<condition name='hidden_if_in' source='ninegate_activate_widwordpress'>
<param>non</param>
<target type='variable'>ninegate_widwordpress_url</target>
<target type='variable'>ninegate_widwordpress_syncenvole</target>
</condition>
<fill name='calc_multi_condition' target='ninegate_widwordpress_url'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>/wordpress</param>
<param name='default_mismatch'>None</param>
</fill>
<fill name='calc_multi_condition' target='ninegate_widwordpress_syncenvole'>
<param>oui</param>
<param type='eole' name='condition_1' hidden='False'>activer_wordpress</param>
<param name='match'>/posh-profil</param>
<param name='default_mismatch'>None</param>
</fill>
<!-- AFFICHAGE EN FONCTION DU WIDGET SONDE -->
<auto name='calc_multi_condition' target='ninegate_test_sonde'>
<param>oui</param>
<param name="operator">OR</param>
<param type='eole' name='condition_1' hidden='False'>activer_sondepiwik_local</param>
<param type='eole' name='condition_2' hidden='False'>activer_piwik</param>
<param name='match'>oui</param>
<param name='mismatch'>non</param>
</auto>
<!-- AFFICHAGE EN FONCTION DU MAIL -->
<condition name='hidden_if_in' source='ninegate_activer_localmail'>
<param>oui</param>
<target type='variable'>ninegate_smtphost</target>
<target type='variable'>ninegate_smtpport</target>
<target type='variable'>ninegate_smtpuser</target>
<target type='variable'>ninegate_smtppwd</target>
<target type='variable'>ninegate_smtpencryption</target>
<target type='variable'>ninegate_smtpauthmode</target>
</condition>
<!-- AFFICHAGE EN FONCTION DU MODE DE BDD -->
<condition name='hidden_if_in' source='ninegate_db_mode'>
<param>local</param>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_dbpass</target>
</condition>
<condition name='hidden_if_in' source='ninegate_db_mode'>
<param>default</param>
<target type='variable'>ninegate_dbserver</target>
<target type='variable'>ninegate_dbuser</target>
<target type='variable'>ninegate_dbport</target>
<target type='variable'>ninegate_dbpass</target>
<target type='variable'>ninegate_allow_hosts</target>
</condition>
<!-- CONCAT -->
<fill name='concat' target='ninegate_noreply'>
<param>noreply@</param>
<param type='eole'>domaine_messagerie_etab</param>
</fill>
<!-- VALID EMUN DES DIFFRENTES COMBO -->
<check name='valid_enum' target='ninegate_masteridentity'>
<param>['LDAP', 'SQL', 'SSO']</param>
</check>
<check name='valid_enum' target='ninegate_mode_auth'>
<param>['CAS', 'SAML', 'SQL', 'LDAP']</param>
</check>
<check name='valid_enum' target='ninegate_typesso'>
<param>['client', 'proxy']</param>
</check>
<check name='valid_enum' target='ninegate_moderegistration'>
<param>['none', 'byuser', 'byadmin']</param>
</check>
<check name='valid_enum' target='ninegate_ldaptemplate'>
<param>['scribe', 'open', 'CadolesLDAP']</param>
</check>
<check name='valid_enum' target='ninegate_ldaptype'>
<param>['LDAP', 'AD']</param>
</check>
<check name='valid_enum' target='ninegate_smtpencryption'>
<param>['tls', 'ssl', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_smtpauthmode'>
<param>['plain', 'login', 'cram-md5', 'null']</param>
</check>
<check name='valid_enum' target='ninegate_db_mode'>
<param>['default', 'externe', 'local']</param>
</check>
</constraints>
<help>
</help>
</creole>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<creole>
<variables>
<family name='annuaire'>
<variable type='string' name='ldap_writer' description="Utilisateur d'écriture des comptes LDAP" exists='False'>
cn=admin,o=gouv,c=fr
</variable>
<variable name='ldap_member_group_attribute' type='string' description="Attribut des utilisateurs d'un groupe" mode='expert' exists='False'>
<value>memberUid</value>
</variable>
</family>
</variables>
<constraints>
<fill name='concat' target='ldap_writer'>
<param>cn=admin,</param>
<param type='eole'>ldap_base_dn</param>
</fill>
</constraints>
<help>
</help>
</creole>

View File

@ -1,13 +1,6 @@
/var/www/html/ninegate/var/logs/*.log {
su root www-data
daily
rotate 7
size 900
maxage 7
compress
dateext
dateformat -%Y%m%d
missingok
create 644 www-data www-data
rotate 5
daily
su www-data
}

Binary file not shown.

2
postservice/90-ninegate Executable file
View File

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

View File

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

View File

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

View File

@ -16,6 +16,7 @@ class AppKernel extends Kernel
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new \Symfony\Bundle\MakerBundle\MakerBundle(),
new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
@ -38,7 +39,6 @@ class AppKernel extends Kernel
new Cadoles\CronBundle\CadolesCronBundle(),
new Cadoles\PortalBundle\CadolesPortalBundle(),
new Cadoles\WebsocketBundle\CadolesWebsocketBundle(),
new Cadoles\EdispatcherBundle\CadolesEdispatcherBundle(),
];
@ -46,7 +46,6 @@ class AppKernel extends Kernel
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Symfony\Bundle\MakerBundle\MakerBundle();
if ('dev' === $this->getEnvironment()) {
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();

View File

@ -13,6 +13,14 @@ imports:
parameters:
locale: fr
monolog:
handlers:
main:
type: rotating_file
path: '%kernel.logs_dir%/%kernel.environment%.log'
level: debug
max_files: 10
framework:
#esi: ~
#translator: { fallbacks: ['%locale%'] }
@ -127,16 +135,15 @@ gos_web_socket:
firewall: main
shared_config: true
server:
port: 443 #The port the socket server will listen on
host: %weburl%/wssninegate #The host ip to bind to
port: %websocket_port% #The port the socket server will listen on
host: %websocket_host% #The host ip to bind to
router:
resources:
- "@CadolesWebsocketBundle/Resources/config/topic.yml"
pushers:
wamp:
host: 0.0.0.0
port: 5556
host: %websocket_host%
port: %websocket_portinterne%
# ckeditor configuration
ivory_ck_editor:

View File

@ -14,10 +14,6 @@ websocket:
resource: "@CadolesWebsocketBundle/Resources/config/routing.yml"
prefix: /
edispatcher:
resource: "@CadolesEdispatcherBundle/Resources/config/routing.yml"
prefix: /
lightsaml_sp:
resource: "@LightSamlSpBundle/Resources/config/routing.yml"
prefix: saml

View File

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

View File

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

View File

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

View File

@ -40,7 +40,6 @@
"symfony/symfony": "3.4.*",
"tetranz/select2entity-bundle": "2.*",
"thecsea/simple-caldav-client": "^0.1.10",
"mashape/unirest-php": "3.*",
"twig/twig": "^1.0||^2.0"
},
"require-dev": {
@ -65,6 +64,9 @@
]
},
"config": {
"platform": {
"php": "7.0.30"
},
"sort-packages": true
},
"extra": {

View File

@ -4,30 +4,30 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "437ec86e9bacb04581e0e648a8d8abbb",
"content-hash": "67c93030cb80b522b452ffdeaf0983ab",
"hash": "0430b523c39e2d254cfe1fb91666119b",
"content-hash": "36178f772c0f0ff6bd5ac90edd474c25",
"packages": [
{
"name": "cboden/ratchet",
"version": "v0.4.3",
"version": "v0.4.1",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/Ratchet.git",
"reference": "466a0ecc83209c75b76645eb823401b5c52e5f21"
"reference": "0d31f3a8ad4795fd48397712709e55cd07f51360"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/Ratchet/zipball/466a0ecc83209c75b76645eb823401b5c52e5f21",
"reference": "466a0ecc83209c75b76645eb823401b5c52e5f21",
"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.3",
"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|^5.0",
"symfony/routing": "^2.6|^3.0|^4.0|^5.0"
"symfony/http-foundation": "^2.6|^3.0|^4.0",
"symfony/routing": "^2.6|^3.0|^4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8"
@ -47,10 +47,6 @@
"name": "Chris Boden",
"email": "cboden@gmail.com",
"role": "Developer"
},
{
"name": "Matt Bonneau",
"role": "Developer"
}
],
"description": "PHP WebSocket library",
@ -62,37 +58,36 @@
"sockets",
"websocket"
],
"time": "2020-07-07 15:50:14"
"time": "2017-12-12 00:49:31"
},
{
"name": "composer/ca-bundle",
"version": "1.2.9",
"version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5"
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/78a0e288fdcebf92aa2318a8d3656168da6ac1a5",
"reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"ext-pcre": "*",
"php": "^5.3.2 || ^7.0 || ^8.0"
"php": "^5.3.2 || ^7.0"
},
"require-dev": {
"phpstan/phpstan": "^0.12.55",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
"psr/log": "^1.0",
"symfony/phpunit-bridge": "^4.2 || ^5",
"symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
"symfony/process": "^2.5 || ^3.0 || ^4.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.x-dev"
"dev-master": "1.x-dev"
}
},
"autoload": {
@ -119,7 +114,7 @@
"ssl",
"tls"
],
"time": "2021-01-12 12:10:35"
"time": "2019-01-28 09:30:10"
},
{
"name": "debril/feed-io",
@ -1437,25 +1432,22 @@
},
{
"name": "fig/link-util",
"version": "1.1.2",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link-util.git",
"reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8"
"reference": "1a07821801a148be4add11ab0603e4af55a72fac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link-util/zipball/5d7b8d04ed3393b4b59968ca1e906fb7186d81e8",
"reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8",
"url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac",
"reference": "1a07821801a148be4add11ab0603e4af55a72fac",
"shasum": ""
},
"require": {
"php": ">=5.5.0",
"psr/link": "~1.0@dev"
},
"provide": {
"psr/link-implementation": "1.0"
},
"require-dev": {
"phpunit/phpunit": "^5.1",
"squizlabs/php_codesniffer": "^2.3.1"
@ -1478,7 +1470,7 @@
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common utility implementations for HTTP links",
@ -1490,7 +1482,7 @@
"psr-13",
"rest"
],
"time": "2021-02-03 23:36:04"
"time": "2016-10-17 18:31:11"
},
{
"name": "gos/pnctl-event-loop-emitter",
@ -1723,16 +1715,16 @@
},
{
"name": "gregwar/captcha",
"version": "v1.1.9",
"version": "v1.1.7",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/Captcha.git",
"reference": "4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5"
"reference": "cf953dd79748406e0292cea8c565399681e4d345"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/Captcha/zipball/4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5",
"reference": "4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5",
"url": "https://api.github.com/repos/Gregwar/Captcha/zipball/cf953dd79748406e0292cea8c565399681e4d345",
"reference": "cf953dd79748406e0292cea8c565399681e4d345",
"shasum": ""
},
"require": {
@ -1772,28 +1764,27 @@
"captcha",
"spam"
],
"time": "2020-03-24 14:39:05"
"time": "2018-08-17 22:57:28"
},
{
"name": "gregwar/captcha-bundle",
"version": "v2.0.7",
"version": "v2.0.6",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/CaptchaBundle.git",
"reference": "3ccfdf1c9324acbdfbcccea2c454075115741b3a"
"reference": "c2d5468556890dd25e0b53bd345fc205562c86f7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/3ccfdf1c9324acbdfbcccea2c454075115741b3a",
"reference": "3ccfdf1c9324acbdfbcccea2c454075115741b3a",
"url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/c2d5468556890dd25e0b53bd345fc205562c86f7",
"reference": "c2d5468556890dd25e0b53bd345fc205562c86f7",
"shasum": ""
},
"require": {
"gregwar/captcha": "~1.1",
"php": ">=5.3.9",
"symfony/form": "~2.8|~3.0|~4.0",
"symfony/framework-bundle": "~2.8|~3.0|~4.0",
"twig/twig": "^1.40|^2.9"
"symfony/framework-bundle": "~2.8|~3.0|~4.0"
},
"type": "captcha-bundle",
"autoload": {
@ -1827,33 +1818,31 @@
"spam",
"visual"
],
"time": "2019-09-23 13:07:46"
"time": "2018-11-20 10:41:34"
},
{
"name": "guzzlehttp/guzzle",
"version": "6.5.5",
"version": "6.3.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1",
"php": ">=5.5",
"symfony/polyfill-intl-idn": "^1.17.0"
"guzzlehttp/psr7": "^1.4",
"php": ">=5.5"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
"psr/log": "^1.1"
"psr/log": "^1.0"
},
"suggest": {
"psr/log": "Required for using the Log middleware"
@ -1861,16 +1850,16 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.5-dev"
"dev-master": "6.3-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [
"src/functions_include.php"
]
],
"psr-4": {
"GuzzleHttp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -1894,27 +1883,27 @@
"rest",
"web service"
],
"time": "2020-06-16 21:01:06"
"time": "2018-04-22 15:46:56"
},
{
"name": "guzzlehttp/promises",
"version": "1.4.0",
"version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "60d379c243457e073cff02bc323a2a86cb355631"
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
"reference": "60d379c243457e073cff02bc323a2a86cb355631",
"url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"shasum": ""
},
"require": {
"php": ">=5.5"
"php": ">=5.5.0"
},
"require-dev": {
"symfony/phpunit-bridge": "^4.4 || ^5.1"
"phpunit/phpunit": "^4.0"
},
"type": "library",
"extra": {
@ -1945,20 +1934,20 @@
"keywords": [
"promise"
],
"time": "2020-09-30 07:37:28"
"time": "2016-12-20 10:07:11"
},
{
"name": "guzzlehttp/psr7",
"version": "1.7.0",
"version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
"reference": "239400de7a173fe9901b9ac7c06497751f00727a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
"reference": "239400de7a173fe9901b9ac7c06497751f00727a",
"shasum": ""
},
"require": {
@ -1971,15 +1960,15 @@
},
"require-dev": {
"ext-zlib": "*",
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
"zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
"dev-master": "1.6-dev"
}
},
"autoload": {
@ -2016,30 +2005,30 @@
"uri",
"url"
],
"time": "2020-09-30 07:37:11"
"time": "2019-07-01 23:21:34"
},
{
"name": "incenteev/composer-parameter-handler",
"version": "v2.1.4",
"version": "v2.1.3",
"source": {
"type": "git",
"url": "https://github.com/Incenteev/ParameterHandler.git",
"reference": "084befb11ec21faeadcddefb88b66132775ff59b"
"reference": "933c45a34814f27f2345c11c37d46b3ca7303550"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/084befb11ec21faeadcddefb88b66132775ff59b",
"reference": "084befb11ec21faeadcddefb88b66132775ff59b",
"url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550",
"reference": "933c45a34814f27f2345c11c37d46b3ca7303550",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/yaml": "^2.3 || ^3.0 || ^4.0 || ^5.0"
"symfony/yaml": "^2.3 || ^3.0 || ^4.0"
},
"require-dev": {
"composer/composer": "^1.0@dev",
"symfony/filesystem": "^2.3 || ^3 || ^4 || ^5",
"symfony/phpunit-bridge": "^4.0 || ^5.0"
"symfony/filesystem": "^2.3 || ^3 || ^4",
"symfony/phpunit-bridge": "^4.0"
},
"type": "library",
"extra": {
@ -2067,30 +2056,28 @@
"keywords": [
"parameters management"
],
"time": "2020-03-17 21:10:00"
"time": "2018-02-13 18:05:56"
},
{
"name": "jasig/phpcas",
"version": "1.3.9",
"version": "1.3.7",
"source": {
"type": "git",
"url": "https://github.com/apereo/phpCAS.git",
"reference": "7325865c4cfb5005ed4e4c5cf01823be1726a2a0"
"reference": "b5b29102c3a42f570c4a3e852f3cf67cae6d6082"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/apereo/phpCAS/zipball/7325865c4cfb5005ed4e4c5cf01823be1726a2a0",
"reference": "7325865c4cfb5005ed4e4c5cf01823be1726a2a0",
"url": "https://api.github.com/repos/apereo/phpCAS/zipball/b5b29102c3a42f570c4a3e852f3cf67cae6d6082",
"reference": "b5b29102c3a42f570c4a3e852f3cf67cae6d6082",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0",
"psr/log": "^1.0.0"
"php": ">=5.4.0"
},
"require-dev": {
"monolog/monolog": "^1.0.0",
"phpunit/phpunit": ">=4.8.35 <8"
"phpunit/phpunit": "~3.7.10"
},
"type": "library",
"extra": {
@ -2124,7 +2111,7 @@
"cas",
"jasig"
],
"time": "2021-01-31 21:13:59"
"time": "2019-04-22 19:48:16"
},
{
"name": "jdorn/sql-formatter",
@ -2317,16 +2304,16 @@
},
{
"name": "lightsaml/sp-bundle",
"version": "1.2.1",
"version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SpBundle.git",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881"
"reference": "b31182d23d93b696305f57f9a66d6770a53d5f8e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/b31182d23d93b696305f57f9a66d6770a53d5f8e",
"reference": "b31182d23d93b696305f57f9a66d6770a53d5f8e",
"shasum": ""
},
"require": {
@ -2362,7 +2349,7 @@
],
"description": "Light SAML2 SP Symfony Bundle",
"homepage": "http://www.lightsaml.com/SP-Bundle/",
"time": "2019-11-13 19:05:47"
"time": "2018-05-23 09:11:16"
},
{
"name": "lightsaml/symfony-bridge",
@ -2419,64 +2406,18 @@
"homepage": "http://www.lightsaml.com",
"time": "2018-05-23 08:11:59"
},
{
"name": "mashape/unirest-php",
"version": "v3.0.4",
"source": {
"type": "git",
"url": "https://github.com/Mashape/unirest-php.git",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Mashape/unirest-php/zipball/842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0"
},
"require-dev": {
"codeclimate/php-test-reporter": "0.1.*",
"phpunit/phpunit": "~4.4"
},
"suggest": {
"ext-json": "Allows using JSON Bodies for sending and parsing requests"
},
"type": "library",
"autoload": {
"psr-0": {
"Unirest\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Unirest PHP",
"homepage": "https://github.com/Mashape/unirest-php",
"keywords": [
"client",
"curl",
"http",
"https",
"rest"
],
"time": "2016-08-11 17:49:21"
},
{
"name": "monolog/monolog",
"version": "1.26.0",
"version": "1.24.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33"
"reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33",
"reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
"reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
"shasum": ""
},
"require": {
@ -2490,10 +2431,11 @@
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"jakub-onderka/php-parallel-lint": "0.9",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpstan/phpstan": "^0.12.59",
"phpunit/phpunit": "~4.5",
"phpunit/phpunit-mock-objects": "2.3.0",
"ruflin/elastica": ">=0.90 <3.0",
"sentry/sentry": "^0.13",
"swiftmailer/swiftmailer": "^5.3|^6.0"
@ -2512,6 +2454,11 @@
"sentry/sentry": "Allow sending log messages to a Sentry server"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
@ -2535,7 +2482,7 @@
"logging",
"psr-3"
],
"time": "2020-12-14 12:56:38"
"time": "2018-11-05 09:00:11"
},
{
"name": "ocramius/proxy-manager",
@ -2602,17 +2549,17 @@
},
{
"name": "oneup/uploader-bundle",
"version": "1.9.4",
"version": "1.9.2",
"target-dir": "Oneup/UploaderBundle",
"source": {
"type": "git",
"url": "https://github.com/1up-lab/OneupUploaderBundle.git",
"reference": "8a6dc57c35e12fbc341e52e401a1d286475ec445"
"reference": "a32bc98019abfd51531d08cc79be19f849d87b84"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/1up-lab/OneupUploaderBundle/zipball/8a6dc57c35e12fbc341e52e401a1d286475ec445",
"reference": "8a6dc57c35e12fbc341e52e401a1d286475ec445",
"url": "https://api.github.com/repos/1up-lab/OneupUploaderBundle/zipball/a32bc98019abfd51531d08cc79be19f849d87b84",
"reference": "a32bc98019abfd51531d08cc79be19f849d87b84",
"shasum": ""
},
"require": {
@ -2673,20 +2620,20 @@
"plupload",
"upload"
],
"time": "2020-02-04 12:08:35"
"time": "2017-12-18 12:41:59"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.19",
"version": "v2.0.18",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241"
"reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241",
"reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
"reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
"shasum": ""
},
"require": {
@ -2722,7 +2669,7 @@
"pseudorandom",
"random"
],
"time": "2020-10-15 10:06:57"
"time": "2019-01-03 20:59:08"
},
{
"name": "psr/cache",
@ -2920,16 +2867,16 @@
},
{
"name": "psr/log",
"version": "1.1.3",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
"url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"shasum": ""
},
"require": {
@ -2938,7 +2885,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
"dev-master": "1.0.x-dev"
}
},
"autoload": {
@ -2963,7 +2910,7 @@
"psr",
"psr-3"
],
"time": "2020-03-23 09:12:05"
"time": "2018-11-20 15:27:04"
},
{
"name": "psr/simple-cache",
@ -3055,46 +3002,44 @@
},
{
"name": "ramsey/uuid",
"version": "3.9.3",
"version": "3.8.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92"
"reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
"reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
"shasum": ""
},
"require": {
"ext-json": "*",
"paragonie/random_compat": "^1 | ^2 | 9.99.99",
"php": "^5.4 | ^7 | ^8",
"paragonie/random_compat": "^1.0|^2.0|9.99.99",
"php": "^5.4 || ^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"replace": {
"rhumsaa/uuid": "self.version"
},
"require-dev": {
"codeception/aspect-mock": "^1 | ^2",
"doctrine/annotations": "^1.2",
"goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1",
"jakub-onderka/php-parallel-lint": "^1",
"mockery/mockery": "^0.9.11 | ^1",
"codeception/aspect-mock": "^1.0 | ~2.0.0",
"doctrine/annotations": "~1.2.0",
"goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0",
"ircmaxell/random-lib": "^1.1",
"jakub-onderka/php-parallel-lint": "^0.9.0",
"mockery/mockery": "^0.9.9",
"moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
"php-mock/php-mock-phpunit": "^0.3 | ^1.1",
"phpunit/phpunit": "^4.8 | ^5.4 | ^6.5",
"squizlabs/php_codesniffer": "^3.5"
"php-mock/php-mock-phpunit": "^0.3|^1.1",
"phpunit/phpunit": "^4.7|^5.0|^6.5",
"squizlabs/php_codesniffer": "^2.3"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
"ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
"ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator",
"ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
"ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
@ -3107,21 +3052,13 @@
"autoload": {
"psr-4": {
"Ramsey\\Uuid\\": "src/"
},
"files": [
"src/functions.php"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ben Ramsey",
"email": "ben@benramsey.com",
"homepage": "https://benramsey.com"
},
{
"name": "Marijn Huizendveld",
"email": "marijn.huizendveld@gmail.com"
@ -3129,6 +3066,11 @@
{
"name": "Thibaud Fabre",
"email": "thibaud@aztech.io"
},
{
"name": "Ben Ramsey",
"email": "ben@benramsey.com",
"homepage": "https://benramsey.com"
}
],
"description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
@ -3138,20 +3080,20 @@
"identifier",
"uuid"
],
"time": "2020-02-21 04:36:14"
"time": "2018-07-19 23:38:55"
},
{
"name": "ratchet/rfc6455",
"version": "v0.3",
"version": "v0.2.5",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/RFC6455.git",
"reference": "c8651c7938651c2d55f5d8c2422ac5e57a183341"
"reference": "c62f7cd95ffbb6e94fd657be694fc7372ecd6e62"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/c8651c7938651c2d55f5d8c2422ac5e57a183341",
"reference": "c8651c7938651c2d55f5d8c2422ac5e57a183341",
"url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/c62f7cd95ffbb6e94fd657be694fc7372ecd6e62",
"reference": "c62f7cd95ffbb6e94fd657be694fc7372ecd6e62",
"shasum": ""
},
"require": {
@ -3159,8 +3101,9 @@
"php": ">=5.4.2"
},
"require-dev": {
"phpunit/phpunit": "5.7.*",
"react/socket": "^1.3"
"phpunit/phpunit": "4.8.*",
"react/http": "^0.4.1",
"react/socket-client": "^0.4.3"
},
"type": "library",
"autoload": {
@ -3177,10 +3120,6 @@
"name": "Chris Boden",
"email": "cboden@gmail.com",
"role": "Developer"
},
{
"name": "Matt Bonneau",
"role": "Developer"
}
],
"description": "RFC6455 WebSocket protocol handler",
@ -3190,28 +3129,28 @@
"rfc6455",
"websocket"
],
"time": "2020-05-15 18:31:24"
"time": "2019-03-10 17:10:42"
},
{
"name": "react/cache",
"version": "v1.1.1",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/cache.git",
"reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e"
"reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/cache/zipball/4bf736a2cccec7298bdf745db77585966fc2ca7e",
"reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e",
"url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466",
"reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/promise": "^3.0 || ^2.0 || ^1.1"
"react/promise": "~2.0|~1.1"
},
"require-dev": {
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
@ -3223,28 +3162,6 @@
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async, Promise-based cache interface for ReactPHP",
"keywords": [
"cache",
@ -3252,32 +3169,32 @@
"promise",
"reactphp"
],
"time": "2021-02-02 06:47:52"
"time": "2019-07-11 13:45:28"
},
{
"name": "react/dns",
"version": "v1.4.0",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/dns.git",
"reference": "665260757171e2ab17485b44e7ffffa7acb6ca1f"
"reference": "a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/dns/zipball/665260757171e2ab17485b44e7ffffa7acb6ca1f",
"reference": "665260757171e2ab17485b44e7ffffa7acb6ca1f",
"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",
"react/promise": "^3.0 || ^2.7 || ^1.2.1",
"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": "^9.3 || ^4.8.35"
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
@ -3289,28 +3206,6 @@
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async DNS resolver for ReactPHP",
"keywords": [
"async",
@ -3318,7 +3213,7 @@
"dns-resolver",
"reactphp"
],
"time": "2020-09-18 12:12:55"
"time": "2019-07-18 09:47:47"
},
{
"name": "react/event-loop",
@ -3363,23 +3258,23 @@
},
{
"name": "react/promise",
"version": "v2.8.0",
"version": "v2.7.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
"phpunit/phpunit": "~4.8"
},
"type": "library",
"autoload": {
@ -3405,29 +3300,29 @@
"promise",
"promises"
],
"time": "2020-05-12 15:16:56"
"time": "2019-01-07 21:25:54"
},
{
"name": "react/promise-timer",
"version": "v1.6.0",
"version": "v1.5.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise-timer.git",
"reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6"
"reference": "35fb910604fd86b00023fc5cda477c8074ad0abc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise-timer/zipball/daee9baf6ef30c43ea4c86399f828bb5f558f6e6",
"reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6",
"url": "https://api.github.com/repos/reactphp/promise-timer/zipball/35fb910604fd86b00023fc5cda477c8074ad0abc",
"reference": "35fb910604fd86b00023fc5cda477c8074ad0abc",
"shasum": ""
},
"require": {
"php": ">=5.3",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/promise": "^3.0 || ^2.7.0 || ^1.2.1"
"react/promise": "^2.7.0 || ^1.2.1"
},
"require-dev": {
"phpunit/phpunit": "^9.0 || ^5.7 || ^4.8.35"
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
@ -3458,35 +3353,34 @@
"timeout",
"timer"
],
"time": "2020-07-10 12:18:06"
"time": "2019-03-27 18:10:32"
},
{
"name": "react/socket",
"version": "v1.6.0",
"version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/socket.git",
"reference": "e2b96b23a13ca9b41ab343268dbce3f8ef4d524a"
"reference": "10f0629ec83ea0fa22597f348623f554227e3ca0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/socket/zipball/e2b96b23a13ca9b41ab343268dbce3f8ef4d524a",
"reference": "e2b96b23a13ca9b41ab343268dbce3f8ef4d524a",
"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.1",
"react/event-loop": "^1.0 || ^0.5",
"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": "^9.3 || ^5.7 || ^4.8.35",
"react/promise-stream": "^1.2"
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
@ -3498,28 +3392,6 @@
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP",
"keywords": [
"Connection",
@ -3528,20 +3400,20 @@
"reactphp",
"stream"
],
"time": "2020-08-28 12:49:05"
"time": "2019-07-10 10:11:14"
},
{
"name": "react/stream",
"version": "v1.1.1",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/stream.git",
"reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a"
"reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/stream/zipball/7c02b510ee3f582c810aeccd3a197b9c2f52ff1a",
"reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a",
"url": "https://api.github.com/repos/reactphp/stream/zipball/50426855f7a77ddf43b9266c22320df5bf6c6ce6",
"reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6",
"shasum": ""
},
"require": {
@ -3551,7 +3423,7 @@
},
"require-dev": {
"clue/stream-filter": "~1.2",
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
@ -3574,20 +3446,20 @@
"stream",
"writable"
],
"time": "2020-05-04 10:17:57"
"time": "2019-01-01 16:15:09"
},
{
"name": "robrichards/xmlseclibs",
"version": "3.1.1",
"version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/robrichards/xmlseclibs.git",
"reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df"
"reference": "406c68ac9124db033d079284b719958b829cb830"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df",
"reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df",
"url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/406c68ac9124db033d079284b719958b829cb830",
"reference": "406c68ac9124db033d079284b719958b829cb830",
"shasum": ""
},
"require": {
@ -3612,7 +3484,7 @@
"xml",
"xmldsig"
],
"time": "2020-09-05 13:00:25"
"time": "2018-11-15 11:59:02"
},
{
"name": "sensio/distribution-bundle",
@ -3909,30 +3781,30 @@
},
{
"name": "symfony/monolog-bundle",
"version": "v3.6.0",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bundle.git",
"reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940"
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e495f5c7e4e672ffef4357d4a4d85f010802f940",
"reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"shasum": ""
},
"require": {
"monolog/monolog": "~1.22 || ~2.0",
"monolog/monolog": "~1.22",
"php": ">=5.6",
"symfony/config": "~3.4 || ~4.0 || ^5.0",
"symfony/dependency-injection": "~3.4.10 || ^4.0.10 || ^5.0",
"symfony/http-kernel": "~3.4 || ~4.0 || ^5.0",
"symfony/monolog-bridge": "~3.4 || ~4.0 || ^5.0"
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4.10|^4.0.10",
"symfony/http-kernel": "~3.4|~4.0",
"symfony/monolog-bridge": "~3.4|~4.0"
},
"require-dev": {
"symfony/console": "~3.4 || ~4.0 || ^5.0",
"symfony/phpunit-bridge": "^4.4 || ^5.0",
"symfony/yaml": "~3.4 || ~4.0 || ^5.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": {
@ -3953,13 +3825,13 @@
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony MonologBundle",
@ -3968,26 +3840,27 @@
"log",
"logging"
],
"time": "2020-10-06 15:12:11"
"time": "2019-06-20 12:18:19"
},
{
"name": "symfony/orm-pack",
"version": "v1.0.8",
"version": "v1.0.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/orm-pack.git",
"reference": "c9bcc08102061f406dc908192c0f33524a675666"
"reference": "36c2a928482dc5f05c5c1c1b947242ae03ff1335"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/orm-pack/zipball/c9bcc08102061f406dc908192c0f33524a675666",
"reference": "c9bcc08102061f406dc908192c0f33524a675666",
"url": "https://api.github.com/repos/symfony/orm-pack/zipball/36c2a928482dc5f05c5c1c1b947242ae03ff1335",
"reference": "36c2a928482dc5f05c5c1c1b947242ae03ff1335",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "*",
"doctrine/doctrine-migrations-bundle": "*",
"doctrine/orm": "*"
"doctrine/doctrine-bundle": "^1.6.10",
"doctrine/doctrine-migrations-bundle": "^1.3|^2.0",
"doctrine/orm": "^2.5.11",
"php": "^7.0"
},
"type": "symfony-pack",
"notification-url": "https://packagist.org/downloads/",
@ -3995,20 +3868,20 @@
"MIT"
],
"description": "A pack for the Doctrine ORM",
"time": "2020-02-10 18:03:48"
"time": "2019-01-16 09:49:15"
},
{
"name": "symfony/polyfill-apcu",
"version": "v1.19.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-apcu.git",
"reference": "b44b51e7814c23bfbd793a16ead5d7ce43ed23c5"
"reference": "a502face1da6a53289480166f24de2c3c68e5c3c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/b44b51e7814c23bfbd793a16ead5d7ce43ed23c5",
"reference": "b44b51e7814c23bfbd793a16ead5d7ce43ed23c5",
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a502face1da6a53289480166f24de2c3c68e5c3c",
"reference": "a502face1da6a53289480166f24de2c3c68e5c3c",
"shasum": ""
},
"require": {
@ -4017,11 +3890,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"dev-master": "1.11-dev"
}
},
"autoload": {
@ -4055,20 +3924,20 @@
"portable",
"shim"
],
"time": "2020-10-21 09:57:48"
"time": "2019-02-06 07:57:58"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.19.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
"reference": "82ebae02209c21113908c229e9883c419720738a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
"reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
"reference": "82ebae02209c21113908c229e9883c419720738a",
"shasum": ""
},
"require": {
@ -4080,11 +3949,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"dev-master": "1.11-dev"
}
},
"autoload": {
@ -4100,13 +3965,13 @@
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
},
{
"name": "Gert de Pagter",
"email": "backendtea@gmail.com"
}
],
"description": "Symfony polyfill for ctype functions",
@ -4117,25 +3982,25 @@
"polyfill",
"portable"
],
"time": "2020-10-23 09:01:57"
"time": "2019-02-06 07:57:58"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.19.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "f740dd60a5b5f1511229e107f7e59f404b102084"
"reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f740dd60a5b5f1511229e107f7e59f404b102084",
"reference": "f740dd60a5b5f1511229e107f7e59f404b102084",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/999878a3a09d73cae157b0cf89bb6fb2cc073057",
"reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/intl": "~2.3|~3.0|~4.0|~5.0"
"symfony/intl": "~2.3|~3.0|~4.0"
},
"suggest": {
"ext-intl": "For best performance"
@ -4143,11 +4008,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"dev-master": "1.9-dev"
}
},
"autoload": {
@ -4179,158 +4040,20 @@
"portable",
"shim"
],
"time": "2020-10-23 09:01:57"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/4ad5115c0f5d5172a9fe8147675ec6de266d8826",
"reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php70": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2020-10-21 09:57:48"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8db0ae7936b42feb370840cf24de1a144fb0ef27",
"reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's Normalizer class and related functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"intl",
"normalizer",
"polyfill",
"portable",
"shim"
],
"time": "2020-10-23 09:01:57"
"time": "2019-01-07 19:39:47"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.19.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce"
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b5f7b932ee6fa802fc792eabd77c4c88084517ce",
"reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
"shasum": ""
},
"require": {
@ -4342,11 +4065,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"dev-master": "1.11-dev"
}
},
"autoload": {
@ -4380,20 +4099,20 @@
"portable",
"shim"
],
"time": "2020-10-23 09:01:57"
"time": "2019-02-06 07:57:58"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.19.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "ea19621731cbd973a6702cfedef3419768bf3372"
"reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ea19621731cbd973a6702cfedef3419768bf3372",
"reference": "ea19621731cbd973a6702cfedef3419768bf3372",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/f4dddbc5c3471e1b700a147a20ae17cdb72dbe42",
"reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42",
"shasum": ""
},
"require": {
@ -4403,11 +4122,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"dev-master": "1.11-dev"
}
},
"autoload": {
@ -4440,20 +4155,20 @@
"portable",
"shim"
],
"time": "2020-10-23 09:01:57"
"time": "2019-02-06 07:57:58"
},
{
"name": "symfony/polyfill-php70",
"version": "v1.19.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php70.git",
"reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e"
"reference": "bc4858fb611bda58719124ca079baff854149c89"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
"reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89",
"reference": "bc4858fb611bda58719124ca079baff854149c89",
"shasum": ""
},
"require": {
@ -4463,11 +4178,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"dev-master": "1.11-dev"
}
},
"autoload": {
@ -4503,79 +4214,20 @@
"portable",
"shim"
],
"time": "2020-10-23 09:01:57"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "beecef6b463b06954638f02378f52496cb84bacc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/beecef6b463b06954638f02378f52496cb84bacc",
"reference": "beecef6b463b06954638f02378f52496cb84bacc",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2020-10-23 09:01:57"
"time": "2019-02-06 07:57:58"
},
{
"name": "symfony/polyfill-util",
"version": "v1.19.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
"reference": "8df0c3e6a4b85df9a5c6f3f2f46fba5c5c47058a"
"reference": "b46c6cae28a3106735323f00a0c38eccf2328897"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/8df0c3e6a4b85df9a5c6f3f2f46fba5c5c47058a",
"reference": "8df0c3e6a4b85df9a5c6f3f2f46fba5c5c47058a",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/b46c6cae28a3106735323f00a0c38eccf2328897",
"reference": "b46c6cae28a3106735323f00a0c38eccf2328897",
"shasum": ""
},
"require": {
@ -4584,11 +4236,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.19-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
"dev-master": "1.11-dev"
}
},
"autoload": {
@ -4618,7 +4266,7 @@
"polyfill",
"shim"
],
"time": "2020-10-21 09:57:48"
"time": "2019-02-08 14:16:39"
},
{
"name": "symfony/swiftmailer-bundle",
@ -4681,16 +4329,16 @@
},
{
"name": "symfony/symfony",
"version": "v3.4.47",
"version": "v3.4.29",
"source": {
"type": "git",
"url": "https://github.com/symfony/symfony.git",
"reference": "83093d5448a7b90fd4cbcce38580ae53898f506f"
"reference": "4c9b6d7d898457ae2189efdfaca58712269fc994"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/symfony/zipball/83093d5448a7b90fd4cbcce38580ae53898f506f",
"reference": "83093d5448a7b90fd4cbcce38580ae53898f506f",
"url": "https://api.github.com/repos/symfony/symfony/zipball/4c9b6d7d898457ae2189efdfaca58712269fc994",
"reference": "4c9b6d7d898457ae2189efdfaca58712269fc994",
"shasum": ""
},
"require": {
@ -4709,10 +4357,9 @@
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.6",
"twig/twig": "^1.41|^2.10"
"twig/twig": "^1.40|^2.9"
},
"conflict": {
"monolog/monolog": ">=2",
"phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
"phpdocumentor/type-resolver": "<0.3.0",
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
@ -4780,7 +4427,7 @@
"cache/integration-tests": "dev-master",
"doctrine/annotations": "~1.0",
"doctrine/cache": "~1.6",
"doctrine/data-fixtures": "^1.1",
"doctrine/data-fixtures": "1.0.*",
"doctrine/dbal": "~2.4",
"doctrine/doctrine-bundle": "~1.4",
"doctrine/orm": "~2.4,>=2.4.5",
@ -4789,12 +4436,14 @@
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0",
"predis/predis": "~1.0",
"symfony/phpunit-bridge": "^5.2",
"symfony/phpunit-bridge": "~3.4|~4.0|~5.0",
"symfony/security-acl": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-version": "3.4"
"branch-alias": {
"dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
@ -4831,20 +4480,20 @@
"keywords": [
"framework"
],
"time": "2020-11-27 08:43:16"
"time": "2019-06-26 13:56:55"
},
{
"name": "tetranz/select2entity-bundle",
"version": "v2.10.1",
"version": "v2.10.0",
"source": {
"type": "git",
"url": "https://github.com/tetranz/select2entity-bundle.git",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a"
"reference": "67b61be1a23228bc4e77a2e59ba5fff8fd9fffab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/67b61be1a23228bc4e77a2e59ba5fff8fd9fffab",
"reference": "67b61be1a23228bc4e77a2e59ba5fff8fd9fffab",
"shasum": ""
},
"require": {
@ -4878,25 +4527,23 @@
"symfony",
"typeahead"
],
"time": "2019-07-14 02:30:34"
"time": "2019-07-07 23:00:30"
},
{
"name": "thecsea/simple-caldav-client",
"version": "v0.1.14",
"version": "v0.1.10",
"source": {
"type": "git",
"url": "https://github.com/thecsea/simpleCalDAV.git",
"reference": "542eda99c5a18c04b3701ebda9ce8d3eb0db7728"
"reference": "dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thecsea/simpleCalDAV/zipball/542eda99c5a18c04b3701ebda9ce8d3eb0db7728",
"reference": "542eda99c5a18c04b3701ebda9ce8d3eb0db7728",
"url": "https://api.github.com/repos/thecsea/simpleCalDAV/zipball/dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9",
"reference": "dae70da0dacd0c8a1e184fbc91ecbe6f7fa5dea9",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-xml": "*",
"php": ">=5.3.0"
},
"type": "library",
@ -4923,20 +4570,20 @@
"Simple",
"client"
],
"time": "2020-09-28 11:55:52"
"time": "2019-04-25 19:55:16"
},
{
"name": "twig/twig",
"version": "v2.12.5",
"version": "v2.11.3",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "18772e0190734944277ee97a02a9a6c6555fcd94"
"reference": "699ed2342557c88789a15402de5eb834dedd6792"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94",
"reference": "18772e0190734944277ee97a02a9a6c6555fcd94",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/699ed2342557c88789a15402de5eb834dedd6792",
"reference": "699ed2342557c88789a15402de5eb834dedd6792",
"shasum": ""
},
"require": {
@ -4946,12 +4593,13 @@
},
"require-dev": {
"psr/container": "^1.0",
"symfony/phpunit-bridge": "^4.4|^5.0"
"symfony/debug": "^2.7",
"symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.12-dev"
"dev-master": "2.11-dev"
}
},
"autoload": {
@ -4973,14 +4621,15 @@
"homepage": "http://fabien.potencier.org",
"role": "Lead Developer"
},
{
"name": "Twig Team",
"role": "Contributors"
},
{
"name": "Armin Ronacher",
"email": "armin.ronacher@active-4.com",
"role": "Project Founder"
},
{
"name": "Twig Team",
"homepage": "https://twig.symfony.com/contributors",
"role": "Contributors"
}
],
"description": "Twig, the flexible, fast, and secure template language for PHP",
@ -4988,7 +4637,7 @@
"keywords": [
"templating"
],
"time": "2020-02-11 15:31:23"
"time": "2019-06-18 15:37:11"
},
{
"name": "zendframework/zend-code",
@ -5100,16 +4749,16 @@
"packages-dev": [
{
"name": "nikic/php-parser",
"version": "v4.10.4",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e"
"reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e",
"reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
"reference": "1bd73cc04c3843ad8d6b0bfc0956026a151fc420",
"shasum": ""
},
"require": {
@ -5117,8 +4766,7 @@
"php": ">=7.0"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
"phpunit/phpunit": "^6.5 || ^7.0"
},
"bin": [
"bin/php-parse"
@ -5126,7 +4774,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.9-dev"
"dev-master": "4.2-dev"
}
},
"autoload": {
@ -5148,7 +4796,7 @@
"parser",
"php"
],
"time": "2020-12-20 10:01:03"
"time": "2019-05-25 20:07:01"
},
{
"name": "sensio/generator-bundle",
@ -5206,40 +4854,40 @@
},
{
"name": "symfony/maker-bundle",
"version": "v1.16.0",
"version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
"reference": "c8b36ce2aac3635603b4ffc58fbc26717e0a7317"
"reference": "201d0e050dca336c44f93657ce1f34f3b3868432"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c8b36ce2aac3635603b4ffc58fbc26717e0a7317",
"reference": "c8b36ce2aac3635603b4ffc58fbc26717e0a7317",
"url": "https://api.github.com/repos/symfony/maker-bundle/zipball/201d0e050dca336c44f93657ce1f34f3b3868432",
"reference": "201d0e050dca336c44f93657ce1f34f3b3868432",
"shasum": ""
},
"require": {
"doctrine/inflector": "^1.2",
"nikic/php-parser": "^4.0",
"php": "^7.0.8",
"symfony/config": "^3.4|^4.0|^5.0",
"symfony/console": "^3.4|^4.0|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0",
"symfony/filesystem": "^3.4|^4.0|^5.0",
"symfony/finder": "^3.4|^4.0|^5.0",
"symfony/framework-bundle": "^3.4|^4.0|^5.0",
"symfony/http-kernel": "^3.4|^4.0|^5.0"
"symfony/config": "^3.4|^4.0",
"symfony/console": "^3.4|^4.0",
"symfony/dependency-injection": "^3.4|^4.0",
"symfony/filesystem": "^3.4|^4.0",
"symfony/finder": "^3.4|^4.0",
"symfony/framework-bundle": "^3.4|^4.0",
"symfony/http-kernel": "^3.4|^4.0"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.8|^2.0",
"doctrine/doctrine-bundle": "^1.8",
"doctrine/orm": "^2.3",
"friendsofphp/php-cs-fixer": "^2.8",
"friendsoftwig/twigcs": "^3.1.2",
"symfony/http-client": "^4.3|^5.0",
"symfony/phpunit-bridge": "^4.3|^5.0",
"symfony/process": "^3.4|^4.0|^5.0",
"symfony/security-core": "^3.4|^4.0|^5.0",
"symfony/yaml": "^3.4|^4.0|^5.0"
"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",
"extra": {
@ -5270,27 +4918,27 @@
"scaffold",
"scaffolding"
],
"time": "2020-05-05 14:21:24"
"time": "2019-07-09 22:19:18"
},
{
"name": "symfony/phpunit-bridge",
"version": "v3.4.47",
"version": "v3.4.29",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "120273ad5d03a8deee08ca9260e2598f288f2bac"
"reference": "521489968e58dcdb8df153436cc18349737e49e3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/120273ad5d03a8deee08ca9260e2598f288f2bac",
"reference": "120273ad5d03a8deee08ca9260e2598f288f2bac",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/521489968e58dcdb8df153436cc18349737e49e3",
"reference": "521489968e58dcdb8df153436cc18349737e49e3",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"conflict": {
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2"
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"suggest": {
"symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
@ -5300,6 +4948,9 @@
],
"type": "symfony-bridge",
"extra": {
"branch-alias": {
"dev-master": "3.4-dev"
},
"thanks": {
"name": "phpunit/phpunit",
"url": "https://github.com/sebastianbergmann/phpunit"
@ -5332,7 +4983,7 @@
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"time": "2020-11-13 16:28:59"
"time": "2019-06-26 10:03:25"
}
],
"aliases": [],
@ -5343,5 +4994,8 @@
"platform": {
"php": ">=7"
},
"platform-dev": []
"platform-dev": [],
"platform-overrides": {
"php": "7.0.30"
}
}

View File

@ -1,46 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
class LocalCommand extends Command
{
private $container;
private $em;
private $output;
private $filesystem;
private $rootlog;
protected function configure()
{
$this
->setName('Core:Local')
->setDescription('Lauch Local Script')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->container = $this->getApplication()->getKernel()->getContainer();
$this->em = $this->container->get('doctrine')->getEntityManager();
$this->output = $output;
$this->filesystem = new Filesystem();
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
return 1;
}
private function writelnred($string) {
$this->output->writeln('<fg=red>'.$string.'</>');
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
}
private function writeln($string) {
$this->output->writeln($string);
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -1,10 +1,4 @@
#!/bin/bash
cd /var/www/html/ninegate
ninegate_activer_localmail=$(CreoleGet ninegate_activer_localmail non)
if [[ "$ninegate_activer_localmail" = 'oui' ]]
then
php bin/console swiftmailer:spool:send --message-limit=200 --env=prod --transport swiftmailer.mailer.sendmail.transport
else
php bin/console swiftmailer:spool:send --message-limit=200 --env=prod
fi
php bin/console swiftmailer:spool:send --message-limit=100 --env=prod

View File

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

View File

@ -1,9 +1,11 @@
#!/bin/bash
websocket_url=$(CreoleGet adresse_ip_eth0 non)
websocket_portinterne=$(CreoleGet ninegate_websocket_portinterne non)
# Server Websocket
if [[ "$1" != "restartifdown" ]]; then
echo WEBSOCKET = STOP
pid="$(pgrep -a -f gos:websocket | grep 5556)"
pid="$(pgrep -a -f gos:websocket | grep $websocket_portinterne)"
if [ -n "${pid}" ]; then
IFS=' ' read -r -a array <<< "$pid"
kill -9 ${array[0]};
@ -11,14 +13,14 @@ if [[ "$1" != "restartifdown" ]]; then
fi
# Port LISTEN ?
pid="$(pgrep -a -f gos:websocket | grep 5556)"
pid="$(pgrep -a -f gos:websocket | grep $websocket_portinterne)"
restart="yes"
if [ "$1" == "restartifdown" ] && [ -n "${pid}" ] ; then
restart="no"
fi
if [ "$restart" == "yes" ] && [ "$1" != "stop" ] ; then
if [[ "$restart" == "yes" ]]; then
echo WEBSOCKET = START
cd /var/www/html/ninegate
systemctl restart wssninegate
bin/console gos:websocket:server --port $websocket_portinterne -a $websocket_url --no-debug -n -q --env=prod & disown
fi

View File

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

View File

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

View File

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

View File

@ -1,6077 +0,0 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "126af2a560491e610bf6530facf116c5",
"packages": [
{
"name": "cboden/ratchet",
"version": "v0.4.3",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/Ratchet.git",
"reference": "466a0ecc83209c75b76645eb823401b5c52e5f21"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/Ratchet/zipball/466a0ecc83209c75b76645eb823401b5c52e5f21",
"reference": "466a0ecc83209c75b76645eb823401b5c52e5f21",
"shasum": ""
},
"require": {
"guzzlehttp/psr7": "^1.0",
"php": ">=5.4.2",
"ratchet/rfc6455": "^0.3",
"react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5",
"symfony/http-foundation": "^2.6|^3.0|^4.0|^5.0",
"symfony/routing": "^2.6|^3.0|^4.0|^5.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"
},
{
"name": "Matt Bonneau",
"role": "Developer"
}
],
"description": "PHP WebSocket library",
"homepage": "http://socketo.me",
"keywords": [
"Ratchet",
"WebSockets",
"server",
"sockets",
"websocket"
],
"time": "2020-07-07T15:50:14+00:00"
},
{
"name": "composer/package-versions-deprecated",
"version": "1.11.99.1",
"source": {
"type": "git",
"url": "https://github.com/composer/package-versions-deprecated.git",
"reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7413f0b55a051e89485c5cb9f765fe24bb02a7b6",
"reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.1.0 || ^2.0",
"php": "^7 || ^8"
},
"replace": {
"ocramius/package-versions": "1.11.99"
},
"require-dev": {
"composer/composer": "^1.9.3 || ^2.0@dev",
"ext-zip": "^1.13",
"phpunit/phpunit": "^6.5 || ^7"
},
"type": "composer-plugin",
"extra": {
"class": "PackageVersions\\Installer",
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"PackageVersions\\": "src/PackageVersions"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
},
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be"
}
],
"description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
"time": "2020-11-11T10:22:58+00:00"
},
{
"name": "debril/feed-io",
"version": "v4.8.0",
"source": {
"type": "git",
"url": "https://github.com/alexdebril/feed-io.git",
"reference": "5239890978c8136668a052fbf3f1302512cd6a9a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alexdebril/feed-io/zipball/5239890978c8136668a052fbf3f1302512cd6a9a",
"reference": "5239890978c8136668a052fbf3f1302512cd6a9a",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"guzzlehttp/guzzle": "~6.2|~7.0",
"php": ">=7.1",
"psr/log": "~1.0",
"symfony/console": "~3.4|~4.0|~5.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.4",
"monolog/monolog": "1.*",
"phpunit/phpunit": "~9.3.0"
},
"suggest": {
"monolog/monolog": "Allows to handle logs"
},
"bin": [
"bin/feedio"
],
"type": "library",
"autoload": {
"psr-4": {
"FeedIo\\": "src/FeedIo"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Alexandre Debril",
"email": "alex.debril@gmail.com"
}
],
"description": "PHP library built to consume and serve JSONFeed / RSS / Atom feeds",
"homepage": "https://feed-io.net",
"keywords": [
"atom",
"cli",
"client",
"feed",
"jsonfeed",
"news",
"rss"
],
"time": "2021-01-29T16:42:17+00:00"
},
{
"name": "debril/rss-atom-bundle",
"version": "v4.3.0",
"target-dir": "Debril/RssAtomBundle",
"source": {
"type": "git",
"url": "https://github.com/alexdebril/rss-atom-bundle.git",
"reference": "5c0ef9b1f6a9ca058904c2adadb94cd306df9278"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alexdebril/rss-atom-bundle/zipball/5c0ef9b1f6a9ca058904c2adadb94cd306df9278",
"reference": "5c0ef9b1f6a9ca058904c2adadb94cd306df9278",
"shasum": ""
},
"require": {
"debril/feed-io": "~3.0|~4.0",
"php": ">=7.1",
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4|~4.0",
"symfony/http-foundation": "~3.4|~4.0",
"symfony/http-kernel": "~3.4|~4.0"
},
"require-dev": {
"doctrine/common": "~2.3",
"doctrine/doctrine-bundle": "~1.2",
"phpunit/phpunit": "~7.0",
"symfony/browser-kit": ">3.0",
"symfony/finder": ">3.0",
"symfony/validator": ">3.0",
"symfony/yaml": "^4.0"
},
"suggest": {
"doctrine/doctrine-bundle": "allow to provide feeds' content from database"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"Debril\\RssAtomBundle": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "RSS / Atom and JSONFeed support for Symfony",
"homepage": "http://debril.org/category/rss-atom-bundle/",
"keywords": [
"Syndication",
"atom",
"feed",
"jsonfeed",
"rss"
],
"time": "2019-08-09T13:22:15+00:00"
},
{
"name": "doctrine/annotations",
"version": "1.11.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
"reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/annotations/zipball/ce77a7ba1770462cd705a91a151b6c3746f9c6ad",
"reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad",
"shasum": ""
},
"require": {
"doctrine/lexer": "1.*",
"ext-tokenizer": "*",
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/cache": "1.*",
"doctrine/coding-standard": "^6.0 || ^8.1",
"phpstan/phpstan": "^0.12.20",
"phpunit/phpunit": "^7.5 || ^9.1.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Docblock Annotations Parser",
"homepage": "https://www.doctrine-project.org/projects/annotations.html",
"keywords": [
"annotations",
"docblock",
"parser"
],
"time": "2020-10-26T10:28:16+00:00"
},
{
"name": "doctrine/cache",
"version": "1.10.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "13e3381b25847283a91948d04640543941309727"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727",
"reference": "13e3381b25847283a91948d04640543941309727",
"shasum": ""
},
"require": {
"php": "~7.1 || ^8.0"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/coding-standard": "^6.0",
"mongodb/mongodb": "^1.1",
"phpunit/phpunit": "^7.0",
"predis/predis": "~1.0"
},
"suggest": {
"alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
"homepage": "https://www.doctrine-project.org/projects/cache.html",
"keywords": [
"abstraction",
"apcu",
"cache",
"caching",
"couchdb",
"memcached",
"php",
"redis",
"xcache"
],
"time": "2020-07-07T18:54:01+00:00"
},
{
"name": "doctrine/collections",
"version": "1.6.7",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
"reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/collections/zipball/55f8b799269a1a472457bd1a41b4f379d4cfba4a",
"reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a",
"shasum": ""
},
"require": {
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan-shim": "^0.9.2",
"phpunit/phpunit": "^7.0",
"vimeo/psalm": "^3.8.1"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.",
"homepage": "https://www.doctrine-project.org/projects/collections.html",
"keywords": [
"array",
"collections",
"iterators",
"php"
],
"time": "2020-07-27T17:53:49+00:00"
},
{
"name": "doctrine/common",
"version": "2.13.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
"reference": "f3812c026e557892c34ef37f6ab808a6b567da7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f",
"reference": "f3812c026e557892c34ef37f6ab808a6b567da7f",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/cache": "^1.0",
"doctrine/collections": "^1.0",
"doctrine/event-manager": "^1.0",
"doctrine/inflector": "^1.0",
"doctrine/lexer": "^1.0",
"doctrine/persistence": "^1.3.3",
"doctrine/reflection": "^1.0",
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^1.0",
"phpstan/phpstan": "^0.11",
"phpstan/phpstan-phpunit": "^0.11",
"phpunit/phpunit": "^7.0",
"squizlabs/php_codesniffer": "^3.0",
"symfony/phpunit-bridge": "^4.0.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.11.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.",
"homepage": "https://www.doctrine-project.org/projects/common.html",
"keywords": [
"common",
"doctrine",
"php"
],
"time": "2020-06-05T16:46:05+00:00"
},
{
"name": "doctrine/data-fixtures",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/data-fixtures.git",
"reference": "51d3d4880d28951fff42a635a2389f8c63baddc5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/51d3d4880d28951fff42a635a2389f8c63baddc5",
"reference": "51d3d4880d28951fff42a635a2389f8c63baddc5",
"shasum": ""
},
"require": {
"doctrine/common": "^2.13|^3.0",
"doctrine/persistence": "^1.3.3|^2.0",
"php": "^7.2 || ^8.0"
},
"conflict": {
"doctrine/phpcr-odm": "<1.3.0"
},
"require-dev": {
"doctrine/coding-standard": "^8.2",
"doctrine/dbal": "^2.5.4",
"doctrine/mongodb-odm": "^1.3.0 || ^2.0.0",
"doctrine/orm": "^2.7.0",
"ext-sqlite3": "*",
"phpunit/phpunit": "^8.0"
},
"suggest": {
"alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)",
"doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
"doctrine/orm": "For loading ORM fixtures",
"doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Data Fixtures for all Doctrine Object Managers",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database"
],
"time": "2021-01-23T10:20:43+00:00"
},
{
"name": "doctrine/dbal",
"version": "2.10.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "47433196b6390d14409a33885ee42b6208160643"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/47433196b6390d14409a33885ee42b6208160643",
"reference": "47433196b6390d14409a33885ee42b6208160643",
"shasum": ""
},
"require": {
"doctrine/cache": "^1.0",
"doctrine/event-manager": "^1.0",
"ext-pdo": "*",
"php": "^7.2"
},
"require-dev": {
"doctrine/coding-standard": "^8.1",
"jetbrains/phpstorm-stubs": "^2019.1",
"nikic/php-parser": "^4.4",
"phpstan/phpstan": "^0.12.40",
"phpunit/phpunit": "^8.5.5",
"psalm/plugin-phpunit": "^0.10.0",
"symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
"vimeo/psalm": "^3.14.2"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
},
"bin": [
"bin/doctrine-dbal"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.10.x-dev",
"dev-develop": "3.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
"homepage": "https://www.doctrine-project.org/projects/dbal.html",
"keywords": [
"abstraction",
"database",
"db2",
"dbal",
"mariadb",
"mssql",
"mysql",
"oci8",
"oracle",
"pdo",
"pgsql",
"postgresql",
"queryobject",
"sasql",
"sql",
"sqlanywhere",
"sqlite",
"sqlserver",
"sqlsrv"
],
"time": "2020-09-12T21:20:41+00:00"
},
{
"name": "doctrine/doctrine-bundle",
"version": "1.12.13",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git",
"reference": "85460b85edd8f61a16ad311e7ffc5d255d3c937c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/85460b85edd8f61a16ad311e7ffc5d255d3c937c",
"reference": "85460b85edd8f61a16ad311e7ffc5d255d3c937c",
"shasum": ""
},
"require": {
"doctrine/dbal": "^2.5.12|^3.0",
"doctrine/doctrine-cache-bundle": "~1.2",
"doctrine/persistence": "^1.3.3",
"jdorn/sql-formatter": "^1.2.16",
"php": "^7.1 || ^8.0",
"symfony/cache": "^3.4.30|^4.3.3",
"symfony/config": "^3.4.30|^4.3.3",
"symfony/console": "^3.4.30|^4.3.3",
"symfony/dependency-injection": "^3.4.30|^4.3.3",
"symfony/doctrine-bridge": "^3.4.30|^4.3.3",
"symfony/framework-bundle": "^3.4.30|^4.3.3",
"symfony/service-contracts": "^1.1.1|^2.0"
},
"conflict": {
"doctrine/orm": "<2.6",
"twig/twig": "<1.34|>=2.0,<2.4"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"doctrine/orm": "^2.6",
"ocramius/proxy-manager": "^2.1",
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^7.5",
"symfony/phpunit-bridge": "^4.2",
"symfony/property-info": "^3.4.30|^4.3.3",
"symfony/proxy-manager-bridge": "^3.4|^4|^5",
"symfony/twig-bridge": "^3.4|^4.1",
"symfony/validator": "^3.4.30|^4.3.3",
"symfony/web-profiler-bundle": "^3.4.30|^4.3.3",
"symfony/yaml": "^3.4.30|^4.3.3",
"twig/twig": "^1.34|^2.12"
},
"suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
"symfony/web-profiler-bundle": "To use the data collector."
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org/"
}
],
"description": "Symfony DoctrineBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database",
"dbal",
"orm",
"persistence"
],
"time": "2020-11-14T13:38:44+00:00"
},
{
"name": "doctrine/doctrine-cache-bundle",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineCacheBundle.git",
"reference": "6bee2f9b339847e8a984427353670bad4e7bdccb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/6bee2f9b339847e8a984427353670bad4e7bdccb",
"reference": "6bee2f9b339847e8a984427353670bad4e7bdccb",
"shasum": ""
},
"require": {
"doctrine/cache": "^1.4.2",
"doctrine/inflector": "^1.0",
"php": "^7.1",
"symfony/doctrine-bridge": "^3.4|^4.0"
},
"require-dev": {
"instaclick/coding-standard": "~1.1",
"instaclick/object-calisthenics-sniffs": "dev-master",
"instaclick/symfony2-coding-standard": "dev-remaster",
"phpunit/phpunit": "^7.0",
"predis/predis": "~0.8",
"satooshi/php-coveralls": "^1.0",
"squizlabs/php_codesniffer": "~1.5",
"symfony/console": "^3.4|^4.0",
"symfony/finder": "^3.4|^4.0",
"symfony/framework-bundle": "^3.4|^4.0",
"symfony/phpunit-bridge": "^3.4|^4.0",
"symfony/security-acl": "^2.8",
"symfony/validator": "^3.4|^4.0",
"symfony/yaml": "^3.4|^4.0"
},
"suggest": {
"symfony/security-acl": "For using this bundle to cache ACLs"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineCacheBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Fabio B. Silva",
"email": "fabio.bat.silva@gmail.com"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@hotmail.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org/"
}
],
"description": "Symfony Bundle for Doctrine Cache",
"homepage": "https://www.doctrine-project.org",
"keywords": [
"cache",
"caching"
],
"abandoned": true,
"time": "2019-11-29T11:22:01+00:00"
},
{
"name": "doctrine/doctrine-fixtures-bundle",
"version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
"reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273",
"reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273",
"shasum": ""
},
"require": {
"doctrine/data-fixtures": "~1.0",
"doctrine/doctrine-bundle": "~1.0",
"php": ">=5.3.2",
"symfony/doctrine-bridge": "~2.7|~3.0|~4.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\FixturesBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineFixturesBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"Fixture",
"persistence"
],
"time": "2017-10-30T19:26:42+00:00"
},
{
"name": "doctrine/doctrine-migrations-bundle",
"version": "v1.3.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineMigrationsBundle.git",
"reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce",
"reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "~1.0",
"doctrine/migrations": "^1.1",
"php": ">=5.4.0",
"symfony/framework-bundle": "~2.7|~3.3|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^7.4"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\MigrationsBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineMigrationsBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"dbal",
"migrations",
"schema"
],
"time": "2018-12-03T11:55:33+00:00"
},
{
"name": "doctrine/event-manager",
"version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
"reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f",
"reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.9@dev"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
"homepage": "https://www.doctrine-project.org/projects/event-manager.html",
"keywords": [
"event",
"event dispatcher",
"event manager",
"event system",
"events"
],
"time": "2020-05-29T18:28:51+00:00"
},
{
"name": "doctrine/inflector",
"version": "1.4.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c",
"reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^7.0",
"phpstan/phpstan": "^0.11",
"phpstan/phpstan-phpunit": "^0.11",
"phpstan/phpstan-strict-rules": "^0.11",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector",
"Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
"homepage": "https://www.doctrine-project.org/projects/inflector.html",
"keywords": [
"inflection",
"inflector",
"lowercase",
"manipulation",
"php",
"plural",
"singular",
"strings",
"uppercase",
"words"
],
"time": "2020-05-29T07:19:59+00:00"
},
{
"name": "doctrine/instantiator",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
"reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
"reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^8.0",
"ext-pdo": "*",
"ext-phar": "*",
"phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
"phpstan/phpstan": "^0.12",
"phpstan/phpstan-phpunit": "^0.12",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "https://ocramius.github.io/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
"homepage": "https://www.doctrine-project.org/projects/instantiator.html",
"keywords": [
"constructor",
"instantiate"
],
"time": "2020-11-10T18:47:58+00:00"
},
{
"name": "doctrine/lexer",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
"reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
"reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan": "^0.11.8",
"phpunit/phpunit": "^8.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
"homepage": "https://www.doctrine-project.org/projects/lexer.html",
"keywords": [
"annotations",
"docblock",
"lexer",
"parser",
"php"
],
"time": "2020-05-25T17:44:05+00:00"
},
{
"name": "doctrine/migrations",
"version": "v1.8.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/migrations.git",
"reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6",
"reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6",
"shasum": ""
},
"require": {
"doctrine/dbal": "~2.6",
"ocramius/proxy-manager": "^1.0|^2.0",
"php": "^7.1",
"symfony/console": "~3.3|^4.0"
},
"require-dev": {
"doctrine/coding-standard": "^1.0",
"doctrine/orm": "~2.5",
"jdorn/sql-formatter": "~1.1",
"mikey179/vfsstream": "^1.6",
"phpunit/phpunit": "~7.0",
"squizlabs/php_codesniffer": "^3.0",
"symfony/yaml": "~3.3|^4.0"
},
"suggest": {
"jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.",
"symfony/yaml": "Allows the use of yaml for migration configuration files."
},
"bin": [
"bin/doctrine-migrations"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "v1.8.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations",
"Doctrine\\Migrations\\": "lib/Doctrine/Migrations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Michael Simonson",
"email": "contact@mikesimonson.com"
}
],
"description": "Database Schema migrations using Doctrine DBAL",
"homepage": "https://www.doctrine-project.org/projects/migrations.html",
"keywords": [
"database",
"migrations"
],
"time": "2018-06-06T21:00:30+00:00"
},
{
"name": "doctrine/orm",
"version": "2.7.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
"reference": "01187c9260cd085529ddd1273665217cae659640"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/orm/zipball/01187c9260cd085529ddd1273665217cae659640",
"reference": "01187c9260cd085529ddd1273665217cae659640",
"shasum": ""
},
"require": {
"composer/package-versions-deprecated": "^1.8",
"doctrine/annotations": "^1.11.1",
"doctrine/cache": "^1.9.1",
"doctrine/collections": "^1.5",
"doctrine/common": "^2.11 || ^3.0",
"doctrine/dbal": "^2.9.3",
"doctrine/event-manager": "^1.1",
"doctrine/inflector": "^1.0",
"doctrine/instantiator": "^1.3",
"doctrine/lexer": "^1.0",
"doctrine/persistence": "^1.3.3 || ^2.0",
"ext-pdo": "*",
"php": "^7.1",
"symfony/console": "^3.0|^4.0|^5.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan": "^0.12.18",
"phpunit/phpunit": "^8.0",
"symfony/yaml": "^3.4|^4.0|^5.0",
"vimeo/psalm": "^3.11"
},
"suggest": {
"symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
},
"bin": [
"bin/doctrine"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.7.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\ORM\\": "lib/Doctrine/ORM"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "Object-Relational-Mapper for PHP",
"homepage": "https://www.doctrine-project.org/projects/orm.html",
"keywords": [
"database",
"orm"
],
"time": "2020-12-03T08:52:14+00:00"
},
{
"name": "doctrine/persistence",
"version": "1.3.8",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
"reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288",
"reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/cache": "^1.0",
"doctrine/collections": "^1.0",
"doctrine/event-manager": "^1.0",
"doctrine/reflection": "^1.2",
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.10@dev"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan": "^0.11",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
"vimeo/psalm": "^3.11"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common",
"Doctrine\\Persistence\\": "lib/Doctrine/Persistence"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.",
"homepage": "https://doctrine-project.org/projects/persistence.html",
"keywords": [
"mapper",
"object",
"odm",
"orm",
"persistence"
],
"time": "2020-06-20T12:56:16+00:00"
},
{
"name": "doctrine/reflection",
"version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/reflection.git",
"reference": "fa587178be682efe90d005e3a322590d6ebb59a5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5",
"reference": "fa587178be682efe90d005e3a322590d6ebb59a5",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"ext-tokenizer": "*",
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.9"
},
"require-dev": {
"doctrine/coding-standard": "^6.0 || ^8.2.0",
"doctrine/common": "^2.10",
"phpstan/phpstan": "^0.11.0 || ^0.12.20",
"phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16",
"phpunit/phpunit": "^7.5 || ^9.1.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.",
"homepage": "https://www.doctrine-project.org/projects/reflection.html",
"keywords": [
"reflection",
"static"
],
"abandoned": "roave/better-reflection",
"time": "2020-10-27T21:46:55+00:00"
},
{
"name": "egeloen/ckeditor-bundle",
"version": "6.0.1",
"source": {
"type": "git",
"url": "https://github.com/egeloen/IvoryCKEditorBundle.git",
"reference": "9c9926918d3ae4b4d89ca2db578766ab9829ee7a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egeloen/IvoryCKEditorBundle/zipball/9c9926918d3ae4b4d89ca2db578766ab9829ee7a",
"reference": "9c9926918d3ae4b4d89ca2db578766ab9829ee7a",
"shasum": ""
},
"require": {
"egeloen/json-builder": "^2.0|^3.0",
"php": "^5.6|^7.0",
"symfony/dependency-injection": "^2.7|^3.0",
"symfony/form": "^2.7|^3.0",
"symfony/framework-bundle": "^2.7|^3.0"
},
"require-dev": {
"composer/composer": "^1.0",
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^5.0|^6.0",
"sensio/distribution-bundle": "^3.0.12|^4.0|^5.0",
"symfony/asset": "^2.7|^3.0",
"symfony/console": "^2.7|^3.0",
"symfony/phpunit-bridge": "^2.7|^3.0",
"symfony/templating": "^2.7|^3.0",
"symfony/twig-bridge": "^2.7|^3.0",
"symfony/yaml": "^2.7|^3.0",
"twig/twig": "^1.12"
},
"suggest": {
"egeloen/form-extra-bundle": "Allows to load CKEditor asynchronously",
"sensio/distribution-bundle": "Allows to install CKEditor via a script handler",
"symfony/asset": "Allows to rewrite/version assets",
"symfony/templating": "Allows to use PHP templates",
"symfony/twig-bridge": "Allows to use Twig templates",
"twig/twig": "Allows to use Twig templates"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "6.0-dev"
}
},
"autoload": {
"psr-4": {
"Ivory\\CKEditorBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
}
],
"description": "Provides a CKEditor integration for your Symfony2 Project.",
"keywords": [
"CKEditor"
],
"time": "2017-08-18T08:19:45+00:00"
},
{
"name": "egeloen/json-builder",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/egeloen/ivory-json-builder.git",
"reference": "3e70bc681891d8aca88dd72164caea659739f284"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egeloen/ivory-json-builder/zipball/3e70bc681891d8aca88dd72164caea659739f284",
"reference": "3e70bc681891d8aca88dd72164caea659739f284",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^5.6|^7.0",
"symfony/property-access": "^2.7|^3.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^5.0",
"symfony/phpunit-bridge": "^2.7|^3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"Ivory\\JsonBuilder\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
}
],
"description": "JSON builder with escaping control for PHP 5.6+",
"keywords": [
"Escape",
"builder",
"json"
],
"time": "2017-02-27T20:18:54+00:00"
},
{
"name": "evenement/evenement",
"version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/igorw/evenement.git",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
},
"type": "library",
"autoload": {
"psr-0": {
"Evenement": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Igor Wiedler",
"email": "igor@wiedler.ch"
}
],
"description": "Événement is a very simple event dispatching library for PHP",
"keywords": [
"event-dispatcher",
"event-emitter"
],
"time": "2017-07-23T21:35:13+00:00"
},
{
"name": "fig/link-util",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link-util.git",
"reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link-util/zipball/5d7b8d04ed3393b4b59968ca1e906fb7186d81e8",
"reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8",
"shasum": ""
},
"require": {
"php": ">=5.5.0",
"psr/link": "~1.0@dev"
},
"provide": {
"psr/link-implementation": "1.0"
},
"require-dev": {
"phpunit/phpunit": "^5.1",
"squizlabs/php_codesniffer": "^2.3.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Fig\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common utility implementations for HTTP links",
"keywords": [
"http",
"http-link",
"link",
"psr",
"psr-13",
"rest"
],
"time": "2021-02-03T23:36:04+00:00"
},
{
"name": "gos/pubsub-router-bundle",
"version": "v0.3.5",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle.git",
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/PubSubRouterBundle/zipball/a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
"shasum": ""
},
"require": {
"doctrine/cache": "~1.4",
"php": ">=5.5",
"symfony/console": "~3.4|~4.0",
"symfony/framework-bundle": "~3.4|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "0.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Bundle\\PubSubRouterBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Symfony PubSub Router Bundle",
"homepage": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle",
"keywords": [
"PubSub Bundle",
"WAMP",
"bundle",
"pubsub",
"redis",
"zmq"
],
"time": "2018-10-04T17:09:23+00:00"
},
{
"name": "gos/web-socket-bundle",
"version": "v1.10.4",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/WebSocketBundle.git",
"reference": "2d8dfd9dd49ee9328524f43d3afafbb50e0386b9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/2d8dfd9dd49ee9328524f43d3afafbb50e0386b9",
"reference": "2d8dfd9dd49ee9328524f43d3afafbb50e0386b9",
"shasum": ""
},
"require": {
"cboden/ratchet": "^0.4.1",
"gos/pubsub-router-bundle": "^0.3",
"gos/websocket-client": "^0.1",
"ocramius/proxy-manager": "^1.0|^2.1",
"php": ">=7.2",
"psr/log": "^1.0",
"react/event-loop": "^1.0",
"symfony/config": "^2.3|^3.0|^4.0",
"symfony/console": "^2.3|^3.0|^4.0",
"symfony/dependency-injection": "^2.3|^3.0|^4.0",
"symfony/deprecation-contracts": "^2.1",
"symfony/event-dispatcher": "^2.3|^3.0|^4.0",
"symfony/http-foundation": "^2.3|^3.0|^4.0",
"symfony/http-kernel": "^2.3|^3.0|^4.0",
"symfony/security-core": "^2.3|^3.0|^4.0"
},
"conflict": {
"twig/twig": "<1.34|>=2.0,<2.4"
},
"suggest": {
"doctrine/cache": "^1.0 to use doctrine/cache as a client driver",
"ext-amqp": "* to use the amqp pusher",
"ext-zmq": "* to use the zmq pusher",
"gos/react-amqp": "^0.2 to use the amqp server push handler",
"predis/predis": "^1.0 to use Predis as a client driver",
"react/zmq": "^0.4 to use zmq server push handler",
"symfony/cache": "^3.1|^4.0 to use symfony/cache as a client driver",
"symfony/options-resolver": "^2.3|^3.0|^4.0 to use the pushers",
"symfony/serializer": "^2.3|^3.0|^4.0 to use the pushers",
"symfony/stopwatch": "^2.3|^3.0|^4.0 to use the data collectors",
"twig/twig": "^1.34|^2.4|^3.0 to use the Twig extension"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-1.x": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Bundle\\WebSocketBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dare",
"email": "jeremy.d.dare@gmail.com"
},
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Symfony Web Socket Bundle",
"homepage": "https://github.com/GeniusesOfSymfony/WebSocketBundle",
"keywords": [
"Ratchet",
"WAMP",
"Web Socket Bundle",
"io",
"websocket"
],
"time": "2020-07-06T14:08:35+00:00"
},
{
"name": "gos/websocket-client",
"version": "v0.1.2",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/WebSocketPhpClient.git",
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketPhpClient/zipball/13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Component\\WebSocketClient\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
},
{
"name": "Martin Bažík",
"email": "martin@bazo.sk"
}
],
"description": "WAMP client in PHP",
"keywords": [
"Ratchet",
"WAMP",
"websocket"
],
"time": "2015-08-04T11:43:11+00:00"
},
{
"name": "gregwar/captcha",
"version": "v1.1.9",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/Captcha.git",
"reference": "4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/Captcha/zipball/4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5",
"reference": "4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5",
"shasum": ""
},
"require": {
"ext-gd": "*",
"ext-mbstring": "*",
"php": ">=5.3.0",
"symfony/finder": "*"
},
"require-dev": {
"phpunit/phpunit": "^6.4"
},
"type": "captcha",
"autoload": {
"psr-4": {
"Gregwar\\": "src/Gregwar"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Passault",
"email": "g.passault@gmail.com",
"homepage": "http://www.gregwar.com/"
},
{
"name": "Jeremy Livingston",
"email": "jeremy.j.livingston@gmail.com"
}
],
"description": "Captcha generator",
"homepage": "https://github.com/Gregwar/Captcha",
"keywords": [
"bot",
"captcha",
"spam"
],
"time": "2020-03-24T14:39:05+00:00"
},
{
"name": "gregwar/captcha-bundle",
"version": "v2.0.7",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/CaptchaBundle.git",
"reference": "3ccfdf1c9324acbdfbcccea2c454075115741b3a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/3ccfdf1c9324acbdfbcccea2c454075115741b3a",
"reference": "3ccfdf1c9324acbdfbcccea2c454075115741b3a",
"shasum": ""
},
"require": {
"gregwar/captcha": "~1.1",
"php": ">=5.3.9",
"symfony/form": "~2.8|~3.0|~4.0",
"symfony/framework-bundle": "~2.8|~3.0|~4.0",
"twig/twig": "^1.40|^2.9"
},
"type": "captcha-bundle",
"autoload": {
"psr-4": {
"Gregwar\\CaptchaBundle\\": "/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Passault",
"email": "g.passault@gmail.com",
"homepage": "http://www.gregwar.com/"
},
{
"name": "Jeremy Livingston",
"email": "jeremy.j.livingston@gmail.com"
}
],
"description": "Captcha bundle",
"homepage": "https://github.com/Gregwar/CaptchaBundle",
"keywords": [
"Symfony2",
"bot",
"captcha",
"code",
"security",
"spam",
"visual"
],
"time": "2019-09-23T13:07:46+00:00"
},
{
"name": "guzzlehttp/guzzle",
"version": "7.2.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79",
"reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.4",
"guzzlehttp/psr7": "^1.7",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0"
},
"provide": {
"psr/http-client-implementation": "1.0"
},
"require-dev": {
"ext-curl": "*",
"php-http/client-integration-tests": "^3.0",
"phpunit/phpunit": "^8.5.5 || ^9.3.5",
"psr/log": "^1.1"
},
"suggest": {
"ext-curl": "Required for CURL handler support",
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "7.1-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com",
"homepage": "https://sagikazarmark.hu"
}
],
"description": "Guzzle is a PHP HTTP client library",
"homepage": "http://guzzlephp.org/",
"keywords": [
"client",
"curl",
"framework",
"http",
"http client",
"psr-18",
"psr-7",
"rest",
"web service"
],
"time": "2020-10-10T11:47:56+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "60d379c243457e073cff02bc323a2a86cb355631"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
"reference": "60d379c243457e073cff02bc323a2a86cb355631",
"shasum": ""
},
"require": {
"php": ">=5.5"
},
"require-dev": {
"symfony/phpunit-bridge": "^4.4 || ^5.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Guzzle promises library",
"keywords": [
"promise"
],
"time": "2020-09-30T07:37:28+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"psr/http-message": "~1.0",
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"ext-zlib": "*",
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Tobias Schultze",
"homepage": "https://github.com/Tobion"
}
],
"description": "PSR-7 message implementation that also provides common utility methods",
"keywords": [
"http",
"message",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"time": "2020-09-30T07:37:11+00:00"
},
{
"name": "incenteev/composer-parameter-handler",
"version": "v2.1.4",
"source": {
"type": "git",
"url": "https://github.com/Incenteev/ParameterHandler.git",
"reference": "084befb11ec21faeadcddefb88b66132775ff59b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/084befb11ec21faeadcddefb88b66132775ff59b",
"reference": "084befb11ec21faeadcddefb88b66132775ff59b",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/yaml": "^2.3 || ^3.0 || ^4.0 || ^5.0"
},
"require-dev": {
"composer/composer": "^1.0@dev",
"symfony/filesystem": "^2.3 || ^3 || ^4 || ^5",
"symfony/phpunit-bridge": "^4.0 || ^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Incenteev\\ParameterHandler\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christophe Coevoet",
"email": "stof@notk.org"
}
],
"description": "Composer script handling your ignored parameter file",
"homepage": "https://github.com/Incenteev/ParameterHandler",
"keywords": [
"parameters management"
],
"time": "2020-03-17T21:10:00+00:00"
},
{
"name": "jasig/phpcas",
"version": "1.3.9",
"source": {
"type": "git",
"url": "https://github.com/apereo/phpCAS.git",
"reference": "7325865c4cfb5005ed4e4c5cf01823be1726a2a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/apereo/phpCAS/zipball/7325865c4cfb5005ed4e4c5cf01823be1726a2a0",
"reference": "7325865c4cfb5005ed4e4c5cf01823be1726a2a0",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0",
"psr/log": "^1.0.0"
},
"require-dev": {
"monolog/monolog": "^1.0.0",
"phpunit/phpunit": ">=4.8.35 <8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"source/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Joachim Fritschi",
"homepage": "https://wiki.jasig.org/display/~fritschi"
},
{
"name": "Adam Franco",
"homepage": "https://wiki.jasig.org/display/~adamfranco"
}
],
"description": "Provides a simple API for authenticating users against a CAS server",
"homepage": "https://wiki.jasig.org/display/CASC/phpCAS",
"keywords": [
"apereo",
"cas",
"jasig"
],
"time": "2021-01-31T21:13:59+00:00"
},
{
"name": "jdorn/sql-formatter",
"version": "v1.2.17",
"source": {
"type": "git",
"url": "https://github.com/jdorn/sql-formatter.git",
"reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
"reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
"shasum": ""
},
"require": {
"php": ">=5.2.4"
},
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"lib"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dorn",
"email": "jeremy@jeremydorn.com",
"homepage": "http://jeremydorn.com/"
}
],
"description": "a PHP SQL highlighting library",
"homepage": "https://github.com/jdorn/sql-formatter/",
"keywords": [
"highlight",
"sql"
],
"time": "2014-01-12T16:20:24+00:00"
},
{
"name": "kriswallsmith/assetic",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/kriswallsmith/assetic.git",
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
"shasum": ""
},
"require": {
"php": ">=5.3.1",
"symfony/process": "~2.1|~3.0"
},
"conflict": {
"twig/twig": "<1.27"
},
"require-dev": {
"leafo/lessphp": "^0.3.7",
"leafo/scssphp": "~0.1",
"meenie/javascript-packer": "^1.1",
"mrclay/minify": "<2.3",
"natxet/cssmin": "3.0.4",
"patchwork/jsqueeze": "~1.0|~2.0",
"phpunit/phpunit": "~4.8 || ^5.6",
"psr/log": "~1.0",
"ptachoire/cssembed": "~1.0",
"symfony/phpunit-bridge": "~2.7|~3.0",
"twig/twig": "~1.23|~2.0",
"yfix/packager": "dev-master"
},
"suggest": {
"leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
"leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
"leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
"patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
"ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
"twig/twig": "Assetic provides the integration with the Twig templating engine"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"psr-0": {
"Assetic": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "kris.wallsmith@gmail.com",
"homepage": "http://kriswallsmith.net/"
}
],
"description": "Asset Management for PHP",
"homepage": "https://github.com/kriswallsmith/assetic",
"keywords": [
"assets",
"compression",
"minification"
],
"time": "2016-11-11T18:43:20+00:00"
},
{
"name": "lightsaml/lightsaml",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/lightSAML.git",
"reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/lightSAML/zipball/377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5",
"reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5",
"shasum": ""
},
"require": {
"php": ">=5.6",
"robrichards/xmlseclibs": "~2.0|~3.0|~4.0",
"symfony/event-dispatcher": "~2.3|~3.0|~4.0",
"symfony/http-foundation": "~2.3|~3.0|~4.0"
},
"require-dev": {
"monolog/monolog": "~1.3",
"phpunit/phpunit": ">=5.7",
"pimple/pimple": "~3.0",
"symfony/css-selector": "~2.3|~3.0|~4.0",
"symfony/dom-crawler": "~2.3|~3.0|~4.0"
},
"suggest": {
"lightsaml/sp-bundle": "Symfony 2 SP security bundle",
"lightsaml/symfony-bridge": "Symfony 2 build container bridge"
},
"type": "library",
"autoload": {
"psr-0": {
"LightSaml\\Tests\\": "tests/",
"LightSaml\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "https://github.com/tmilos/",
"role": "Developer"
}
],
"description": "Light SAML 2.0 PHP library",
"homepage": "https://www.lightsaml.com/",
"keywords": [
"SAML 2.0",
"Single Logout",
"Single SignOn",
"library",
"lightSAML",
"php"
],
"time": "2018-05-28T11:21:22+00:00"
},
{
"name": "lightsaml/sp-bundle",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SpBundle.git",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"shasum": ""
},
"require": {
"lightsaml/symfony-bridge": "~1.3",
"php": ">=5.6",
"symfony/framework-bundle": "~2.7|~3.0|~4.0",
"symfony/security-bundle": "~2.7|~3.0|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7",
"sebastian/comparator": "^1.2.4|~2.0|~3.0",
"symfony/monolog-bundle": "~2.7|~3.0|~4.0",
"symfony/symfony": "~2.7|~3.0|~4.0"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"LightSaml\\SpBundle\\Tests\\": "tests/",
"LightSaml\\SpBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "http://github.com/tmilos",
"role": "Developer"
}
],
"description": "Light SAML2 SP Symfony Bundle",
"homepage": "http://www.lightsaml.com/SP-Bundle/",
"time": "2019-11-13T19:05:47+00:00"
},
{
"name": "lightsaml/symfony-bridge",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SymfonyBridgeBundle.git",
"reference": "8d3120825032a7468e894d0ae68630f21cd6035b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SymfonyBridgeBundle/zipball/8d3120825032a7468e894d0ae68630f21cd6035b",
"reference": "8d3120825032a7468e894d0ae68630f21cd6035b",
"shasum": ""
},
"require": {
"lightsaml/lightsaml": "~1.1",
"php": ">=5.5.1",
"symfony/dependency-injection": "~2.7|~3.0|~4.0",
"symfony/framework-bundle": "~2.7|~3.0|~4.0",
"symfony/yaml": "~2.7|~3.0|~4.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "~2.0",
"phpunit/phpunit": "^5.7",
"symfony/browser-kit": "~2.7|~3.0|~4.0",
"symfony/filesystem": "~2.7|~3.0|~4.0",
"symfony/finder": "~2.7|~3.0|~4.0",
"symfony/routing": "~2.7|~3.0|~4.0"
},
"suggest": {
"lightsaml/lightsamp-idp": "If you will be using IDP LightSAML services"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"LightSaml\\SymfonyBridgeBundle\\Tests\\": "tests/",
"LightSaml\\SymfonyBridgeBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "http://github.com/tmilos",
"role": "Developer"
}
],
"description": "Light SAML Symfony bridge bundle",
"homepage": "http://www.lightsaml.com",
"time": "2018-05-23T08:11:59+00:00"
},
{
"name": "mashape/unirest-php",
"version": "v3.0.4",
"source": {
"type": "git",
"url": "https://github.com/Mashape/unirest-php.git",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Mashape/unirest-php/zipball/842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0"
},
"require-dev": {
"codeclimate/php-test-reporter": "0.1.*",
"phpunit/phpunit": "~4.4"
},
"suggest": {
"ext-json": "Allows using JSON Bodies for sending and parsing requests"
},
"type": "library",
"autoload": {
"psr-0": {
"Unirest\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Unirest PHP",
"homepage": "https://github.com/Mashape/unirest-php",
"keywords": [
"client",
"curl",
"http",
"https",
"rest"
],
"time": "2016-08-11T17:49:21+00:00"
},
{
"name": "monolog/monolog",
"version": "1.26.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33",
"reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"psr/log": "~1.0"
},
"provide": {
"psr/log-implementation": "1.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpstan/phpstan": "^0.12.59",
"phpunit/phpunit": "~4.5",
"ruflin/elastica": ">=0.90 <3.0",
"sentry/sentry": "^0.13",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mongo": "Allow sending log messages to a MongoDB server",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
"sentry/sentry": "Allow sending log messages to a Sentry server"
},
"type": "library",
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "http://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"time": "2020-12-14T12:56:38+00:00"
},
{
"name": "ocramius/proxy-manager",
"version": "2.2.3",
"source": {
"type": "git",
"url": "https://github.com/Ocramius/ProxyManager.git",
"reference": "4d154742e31c35137d5374c998e8f86b54db2e2f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/4d154742e31c35137d5374c998e8f86b54db2e2f",
"reference": "4d154742e31c35137d5374c998e8f86b54db2e2f",
"shasum": ""
},
"require": {
"ocramius/package-versions": "^1.1.3",
"php": "^7.2.0",
"zendframework/zend-code": "^3.3.0"
},
"require-dev": {
"couscous/couscous": "^1.6.1",
"ext-phar": "*",
"humbug/humbug": "1.0.0-RC.0@RC",
"nikic/php-parser": "^3.1.1",
"padraic/phpunit-accelerator": "dev-master@DEV",
"phpbench/phpbench": "^0.12.2",
"phpstan/phpstan": "dev-master#856eb10a81c1d27c701a83f167dc870fd8f4236a as 0.9.999",
"phpstan/phpstan-phpunit": "dev-master#5629c0a1f4a9c417cb1077cf6693ad9753895761",
"phpunit/phpunit": "^6.4.3",
"squizlabs/php_codesniffer": "^2.9.1"
},
"suggest": {
"ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
"zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)",
"zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)",
"zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
}
},
"autoload": {
"psr-0": {
"ProxyManager\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "http://ocramius.github.io/"
}
],
"description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
"homepage": "https://github.com/Ocramius/ProxyManager",
"keywords": [
"aop",
"lazy loading",
"proxy",
"proxy pattern",
"service proxies"
],
"time": "2019-08-10T08:37:15+00:00"
},
{
"name": "oneup/uploader-bundle",
"version": "1.9.4",
"target-dir": "Oneup/UploaderBundle",
"source": {
"type": "git",
"url": "https://github.com/1up-lab/OneupUploaderBundle.git",
"reference": "8a6dc57c35e12fbc341e52e401a1d286475ec445"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/1up-lab/OneupUploaderBundle/zipball/8a6dc57c35e12fbc341e52e401a1d286475ec445",
"reference": "8a6dc57c35e12fbc341e52e401a1d286475ec445",
"shasum": ""
},
"require": {
"paragonie/random_compat": "^1.1|^2.0",
"php": ">=5.4",
"symfony/asset": "^2.4|^3.0",
"symfony/finder": "^2.4|^3.0",
"symfony/framework-bundle": "^2.4|^3.0",
"symfony/templating": "^2.4|^3.0",
"symfony/translation": "^2.4|^3.0"
},
"require-dev": {
"amazonwebservices/aws-sdk-for-php": "1.5.*",
"knplabs/gaufrette": "0.2.*@dev",
"oneup/flysystem-bundle": "^1.2",
"phpunit/phpunit": "^4.4",
"sensio/framework-extra-bundle": "2.*|^3.0",
"symfony/browser-kit": "2.*|^3.0",
"symfony/class-loader": "2.*|^3.0",
"symfony/security-bundle": "2.*|^3.0",
"twistor/flysystem-stream-wrapper": "^1.0"
},
"suggest": {
"knplabs/knp-gaufrette-bundle": "0.1.*",
"oneup/flysystem-bundle": "^1.2",
"twistor/flysystem-stream-wrapper": "^1.0 (Required when using Flysystem)"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"Oneup\\UploaderBundle": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jim Schmid",
"email": "js@1up.io",
"homepage": "http://1up.io",
"role": "Developer"
}
],
"description": "Handles multi file uploads in Symfony2. Features included: Chunked upload, Orphans management, Gaufrette support.",
"homepage": "http://1up.io",
"keywords": [
"FancyUpload",
"FineUploader",
"MooUpload",
"Uploadify",
"YUI3 Uploader",
"blueimp",
"dropzone",
"fileupload",
"jQuery File Uploader",
"plupload",
"upload"
],
"time": "2020-02-04T12:08:35+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.19",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241",
"reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241",
"shasum": ""
},
"require": {
"php": ">=5.2.0"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"autoload": {
"files": [
"lib/random.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"time": "2020-10-15T10:06:57+00:00"
},
{
"name": "psr/cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
"reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
"keywords": [
"cache",
"psr",
"psr-6"
],
"time": "2016-08-06T20:24:11+00:00"
},
{
"name": "psr/container",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common Container Interface (PHP FIG PSR-11)",
"homepage": "https://github.com/php-fig/container",
"keywords": [
"PSR-11",
"container",
"container-interface",
"container-interop",
"psr"
],
"time": "2017-02-14T16:28:37+00:00"
},
{
"name": "psr/http-client",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"shasum": ""
},
"require": {
"php": "^7.0 || ^8.0",
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
"homepage": "https://github.com/php-fig/http-client",
"keywords": [
"http",
"http-client",
"psr",
"psr-18"
],
"time": "2020-06-29T06:28:15+00:00"
},
{
"name": "psr/http-message",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
"homepage": "https://github.com/php-fig/http-message",
"keywords": [
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "psr/link",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link.git",
"reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562",
"reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for HTTP links",
"keywords": [
"http",
"http-link",
"link",
"psr",
"psr-13",
"rest"
],
"time": "2016-10-28T16:06:13+00:00"
},
{
"name": "psr/log",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2020-03-23T09:12:05+00:00"
},
{
"name": "psr/simple-cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\SimpleCache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for simple caching",
"keywords": [
"cache",
"caching",
"psr",
"psr-16",
"simple-cache"
],
"time": "2017-10-23T01:57:42+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "120b605dfeb996808c31b6477290a714d356e822"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
"reference": "120b605dfeb996808c31b6477290a714d356e822",
"shasum": ""
},
"require": {
"php": ">=5.6"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^5 || ^6.5"
},
"type": "library",
"autoload": {
"files": [
"src/getallheaders.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph Khattar",
"email": "ralph.khattar@gmail.com"
}
],
"description": "A polyfill for getallheaders.",
"time": "2019-03-08T08:55:37+00:00"
},
{
"name": "ramsey/uuid",
"version": "3.9.3",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92",
"shasum": ""
},
"require": {
"ext-json": "*",
"paragonie/random_compat": "^1 | ^2 | 9.99.99",
"php": "^5.4 | ^7 | ^8",
"symfony/polyfill-ctype": "^1.8"
},
"replace": {
"rhumsaa/uuid": "self.version"
},
"require-dev": {
"codeception/aspect-mock": "^1 | ^2",
"doctrine/annotations": "^1.2",
"goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1",
"jakub-onderka/php-parallel-lint": "^1",
"mockery/mockery": "^0.9.11 | ^1",
"moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
"php-mock/php-mock-phpunit": "^0.3 | ^1.1",
"phpunit/phpunit": "^4.8 | ^5.4 | ^6.5",
"squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
"ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
"ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator",
"ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
"moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Ramsey\\Uuid\\": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ben Ramsey",
"email": "ben@benramsey.com",
"homepage": "https://benramsey.com"
},
{
"name": "Marijn Huizendveld",
"email": "marijn.huizendveld@gmail.com"
},
{
"name": "Thibaud Fabre",
"email": "thibaud@aztech.io"
}
],
"description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
"homepage": "https://github.com/ramsey/uuid",
"keywords": [
"guid",
"identifier",
"uuid"
],
"time": "2020-02-21T04:36:14+00:00"
},
{
"name": "ratchet/rfc6455",
"version": "v0.3",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/RFC6455.git",
"reference": "c8651c7938651c2d55f5d8c2422ac5e57a183341"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/c8651c7938651c2d55f5d8c2422ac5e57a183341",
"reference": "c8651c7938651c2d55f5d8c2422ac5e57a183341",
"shasum": ""
},
"require": {
"guzzlehttp/psr7": "^1.0",
"php": ">=5.4.2"
},
"require-dev": {
"phpunit/phpunit": "5.7.*",
"react/socket": "^1.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"
},
{
"name": "Matt Bonneau",
"role": "Developer"
}
],
"description": "RFC6455 WebSocket protocol handler",
"homepage": "http://socketo.me",
"keywords": [
"WebSockets",
"rfc6455",
"websocket"
],
"time": "2020-05-15T18:31:24+00:00"
},
{
"name": "react/cache",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/cache.git",
"reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/cache/zipball/4bf736a2cccec7298bdf745db77585966fc2ca7e",
"reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/promise": "^3.0 || ^2.0 || ^1.1"
},
"require-dev": {
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async, Promise-based cache interface for ReactPHP",
"keywords": [
"cache",
"caching",
"promise",
"reactphp"
],
"time": "2021-02-02T06:47:52+00:00"
},
{
"name": "react/dns",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/dns.git",
"reference": "665260757171e2ab17485b44e7ffffa7acb6ca1f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/dns/zipball/665260757171e2ab17485b44e7ffffa7acb6ca1f",
"reference": "665260757171e2ab17485b44e7ffffa7acb6ca1f",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/cache": "^1.0 || ^0.6 || ^0.5",
"react/event-loop": "^1.0 || ^0.5",
"react/promise": "^3.0 || ^2.7 || ^1.2.1",
"react/promise-timer": "^1.2"
},
"require-dev": {
"clue/block-react": "^1.2",
"phpunit/phpunit": "^9.3 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Dns\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async DNS resolver for ReactPHP",
"keywords": [
"async",
"dns",
"dns-resolver",
"reactphp"
],
"time": "2020-09-18T12:12:55+00:00"
},
{
"name": "react/event-loop",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/event-loop.git",
"reference": "6d24de090cd59cfc830263cfba965be77b563c13"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/event-loop/zipball/6d24de090cd59cfc830263cfba965be77b563c13",
"reference": "6d24de090cd59cfc830263cfba965be77b563c13",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"suggest": {
"ext-event": "~1.0 for ExtEventLoop",
"ext-pcntl": "For signal handling support when using the StreamSelectLoop",
"ext-uv": "* for ExtUvLoop"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\EventLoop\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.",
"keywords": [
"asynchronous",
"event-loop"
],
"time": "2020-01-01T18:39:52+00:00"
},
{
"name": "react/promise",
"version": "v2.8.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com"
}
],
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
"keywords": [
"promise",
"promises"
],
"time": "2020-05-12T15:16:56+00:00"
},
{
"name": "react/promise-timer",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise-timer.git",
"reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise-timer/zipball/daee9baf6ef30c43ea4c86399f828bb5f558f6e6",
"reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6",
"shasum": ""
},
"require": {
"php": ">=5.3",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/promise": "^3.0 || ^2.7.0 || ^1.2.1"
},
"require-dev": {
"phpunit/phpunit": "^9.0 || ^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": "2020-07-10T12:18:06+00:00"
},
{
"name": "react/socket",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/socket.git",
"reference": "e2b96b23a13ca9b41ab343268dbce3f8ef4d524a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/socket/zipball/e2b96b23a13ca9b41ab343268dbce3f8ef4d524a",
"reference": "e2b96b23a13ca9b41ab343268dbce3f8ef4d524a",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.0",
"react/dns": "^1.1",
"react/event-loop": "^1.0 || ^0.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": "^9.3 || ^5.7 || ^4.8.35",
"react/promise-stream": "^1.2"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Socket\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP",
"keywords": [
"Connection",
"Socket",
"async",
"reactphp",
"stream"
],
"time": "2020-08-28T12:49:05+00:00"
},
{
"name": "react/stream",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/stream.git",
"reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/stream/zipball/7c02b510ee3f582c810aeccd3a197b9c2f52ff1a",
"reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.8",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5"
},
"require-dev": {
"clue/stream-filter": "~1.2",
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Stream\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP",
"keywords": [
"event-driven",
"io",
"non-blocking",
"pipe",
"reactphp",
"readable",
"stream",
"writable"
],
"time": "2020-05-04T10:17:57+00:00"
},
{
"name": "robrichards/xmlseclibs",
"version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/robrichards/xmlseclibs.git",
"reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df",
"reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"php": ">= 5.4"
},
"type": "library",
"autoload": {
"psr-4": {
"RobRichards\\XMLSecLibs\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "A PHP library for XML Security",
"homepage": "https://github.com/robrichards/xmlseclibs",
"keywords": [
"security",
"signature",
"xml",
"xmldsig"
],
"time": "2020-09-05T13:00:25+00:00"
},
{
"name": "sensio/distribution-bundle",
"version": "v5.0.25",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
"reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/80a38234bde8321fb92aa0b8c27978a272bb4baf",
"reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"sensiolabs/security-checker": "~5.0|~6.0",
"symfony/class-loader": "~2.3|~3.0",
"symfony/config": "~2.3|~3.0",
"symfony/dependency-injection": "~2.3|~3.0",
"symfony/filesystem": "~2.3|~3.0",
"symfony/http-kernel": "~2.3|~3.0",
"symfony/process": "~2.3|~3.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "5.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\DistributionBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Base bundle for Symfony Distributions",
"keywords": [
"configuration",
"distribution"
],
"abandoned": true,
"time": "2019-06-18T15:43:58+00:00"
},
{
"name": "sensio/framework-extra-bundle",
"version": "v5.4.1",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
"reference": "585f4b3a1c54f24d1a8431c729fc8f5acca20c8a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/585f4b3a1c54f24d1a8431c729fc8f5acca20c8a",
"reference": "585f4b3a1c54f24d1a8431c729fc8f5acca20c8a",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/persistence": "^1.0",
"php": ">=7.1.3",
"symfony/config": "^3.4|^4.3",
"symfony/dependency-injection": "^3.4|^4.3",
"symfony/framework-bundle": "^3.4|^4.3",
"symfony/http-kernel": "^3.4|^4.3"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
"nyholm/psr7": "^1.1",
"symfony/browser-kit": "^3.4|^4.3",
"symfony/dom-crawler": "^3.4|^4.3",
"symfony/expression-language": "^3.4|^4.3",
"symfony/finder": "^3.4|^4.3",
"symfony/monolog-bridge": "^3.0|^4.0",
"symfony/monolog-bundle": "^3.2",
"symfony/phpunit-bridge": "^3.4.19|^4.1.8",
"symfony/psr-http-message-bridge": "^1.1",
"symfony/security-bundle": "^3.4|^4.3",
"symfony/twig-bundle": "^3.4|^4.3",
"symfony/yaml": "^3.4|^4.3",
"twig/twig": "~1.12|~2.0"
},
"suggest": {
"symfony/expression-language": "",
"symfony/psr-http-message-bridge": "To use the PSR-7 converters",
"symfony/security-bundle": ""
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "5.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\FrameworkExtraBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle provides a way to configure your controllers with annotations",
"keywords": [
"annotations",
"controllers"
],
"time": "2019-07-08T08:31:25+00:00"
},
{
"name": "sensiolabs/security-checker",
"version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/security-checker.git",
"reference": "a576c01520d9761901f269c4934ba55448be4a54"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/a576c01520d9761901f269c4934ba55448be4a54",
"reference": "a576c01520d9761901f269c4934ba55448be4a54",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
"symfony/console": "^2.8|^3.4|^4.2|^5.0",
"symfony/http-client": "^4.3|^5.0",
"symfony/mime": "^4.3|^5.0",
"symfony/polyfill-ctype": "^1.11"
},
"bin": [
"security-checker"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.0-dev"
}
},
"autoload": {
"psr-4": {
"SensioLabs\\Security\\": "SensioLabs/Security"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien.potencier@gmail.com"
}
],
"description": "A security checker for your composer.lock",
"abandoned": "https://github.com/fabpot/local-php-security-checker",
"time": "2019-11-01T13:20:14+00:00"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950",
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"mockery/mockery": "~0.9.1",
"symfony/phpunit-bridge": "~3.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.4-dev"
}
},
"autoload": {
"files": [
"lib/swift_required.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Corbyn"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Swiftmailer, free feature-rich PHP mailer",
"homepage": "https://swiftmailer.symfony.com",
"keywords": [
"email",
"mail",
"mailer"
],
"time": "2018-07-31T09:26:32+00:00"
},
{
"name": "symfony/assetic-bundle",
"version": "v2.8.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/assetic-bundle.git",
"reference": "2e0a23a4874838e26de6f025e02fc63328921a4c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/assetic-bundle/zipball/2e0a23a4874838e26de6f025e02fc63328921a4c",
"reference": "2e0a23a4874838e26de6f025e02fc63328921a4c",
"shasum": ""
},
"require": {
"kriswallsmith/assetic": "~1.4",
"php": ">=5.3.0",
"symfony/console": "~2.3|~3.0",
"symfony/dependency-injection": "~2.3|~3.0",
"symfony/framework-bundle": "~2.3|~3.0",
"symfony/yaml": "~2.3|~3.0"
},
"conflict": {
"kriswallsmith/spork": "<=0.2",
"twig/twig": "<1.27"
},
"require-dev": {
"kriswallsmith/spork": "~0.3",
"patchwork/jsqueeze": "~1.0",
"symfony/class-loader": "~2.3|~3.0",
"symfony/css-selector": "~2.3|~3.0",
"symfony/dom-crawler": "~2.3|~3.0",
"symfony/phpunit-bridge": "~2.7|~3.0",
"symfony/twig-bundle": "~2.3|~3.0"
},
"suggest": {
"kriswallsmith/spork": "to be able to dump assets in parallel",
"symfony/twig-bundle": "to use the Twig integration"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.8-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\AsseticBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "kris.wallsmith@gmail.com",
"homepage": "http://kriswallsmith.net/"
}
],
"description": "Integrates Assetic into Symfony2",
"homepage": "https://github.com/symfony/AsseticBundle",
"keywords": [
"assets",
"compression",
"minification"
],
"abandoned": "symfony/webpack-encore-pack",
"time": "2017-07-14T07:26:46+00:00"
},
{
"name": "symfony/deprecation-contracts",
"version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
"reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"files": [
"function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/http-client",
"version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
"reference": "22cb1a7844fff206cc5186409776e78865405ea5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/22cb1a7844fff206cc5186409776e78865405ea5",
"reference": "22cb1a7844fff206cc5186409776e78865405ea5",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/log": "^1.0",
"symfony/http-client-contracts": "^2.2",
"symfony/polyfill-php73": "^1.11",
"symfony/polyfill-php80": "^1.15",
"symfony/service-contracts": "^1.0|^2"
},
"provide": {
"php-http/async-client-implementation": "*",
"php-http/client-implementation": "*",
"psr/http-client-implementation": "1.0",
"symfony/http-client-implementation": "1.1"
},
"require-dev": {
"amphp/amp": "^2.5",
"amphp/http-client": "^4.2.1",
"amphp/http-tunnel": "^1.0",
"amphp/socket": "^1.1",
"guzzlehttp/promises": "^1.4",
"nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0",
"psr/http-client": "^1.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/http-kernel": "^4.4.13|^5.1.5",
"symfony/process": "^4.4|^5.0",
"symfony/stopwatch": "^4.4|^5.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\HttpClient\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com",
"time": "2021-01-27T10:15:41+00:00"
},
{
"name": "symfony/http-client-contracts",
"version": "v2.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
"reference": "41db680a15018f9c1d4b23516059633ce280ca33"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
"reference": "41db680a15018f9c1d4b23516059633ce280ca33",
"shasum": ""
},
"require": {
"php": ">=7.2.5"
},
"suggest": {
"symfony/http-client-implementation": ""
},
"type": "library",
"extra": {
"branch-version": "2.3",
"branch-alias": {
"dev-main": "2.3-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"psr-4": {
"Symfony\\Contracts\\HttpClient\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Generic abstractions related to HTTP clients",
"homepage": "https://symfony.com",
"keywords": [
"abstractions",
"contracts",
"decoupling",
"interfaces",
"interoperability",
"standards"
],
"time": "2020-10-14T17:08:19+00:00"
},
{
"name": "symfony/mime",
"version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/7dee6a43493f39b51ff6c5bb2bd576fe40a76c86",
"reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0",
"symfony/polyfill-php80": "^1.15"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/mailer": "<4.4"
},
"require-dev": {
"egulias/email-validator": "^2.1.10",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/property-access": "^4.4|^5.1",
"symfony/property-info": "^4.4|^5.1",
"symfony/serializer": "^5.2"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Mime\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Allows manipulating MIME messages",
"homepage": "https://symfony.com",
"keywords": [
"mime",
"mime-type"
],
"time": "2021-02-02T06:10:15+00:00"
},
{
"name": "symfony/monolog-bundle",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bundle.git",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"shasum": ""
},
"require": {
"monolog/monolog": "~1.22",
"php": ">=5.6",
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4.10|^4.0.10",
"symfony/http-kernel": "~3.4|~4.0",
"symfony/monolog-bridge": "~3.4|~4.0"
},
"require-dev": {
"symfony/console": "~3.4|~4.0",
"symfony/phpunit-bridge": "^3.4.19|^4.0",
"symfony/yaml": "~3.4|~4.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MonologBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony MonologBundle",
"homepage": "http://symfony.com",
"keywords": [
"log",
"logging"
],
"time": "2019-06-20T12:18:19+00:00"
},
{
"name": "symfony/orm-pack",
"version": "v1.0.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/orm-pack.git",
"reference": "c9bcc08102061f406dc908192c0f33524a675666"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/orm-pack/zipball/c9bcc08102061f406dc908192c0f33524a675666",
"reference": "c9bcc08102061f406dc908192c0f33524a675666",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "*",
"doctrine/doctrine-migrations-bundle": "*",
"doctrine/orm": "*"
},
"type": "symfony-pack",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A pack for the Doctrine ORM",
"time": "2020-02-10T18:03:48+00:00"
},
{
"name": "symfony/polyfill-apcu",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-apcu.git",
"reference": "3b3944f40987b9d3f9b9147f86c32df87d9f3505"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/3b3944f40987b9d3f9b9147f86c32df87d9f3505",
"reference": "3b3944f40987b9d3f9b9147f86c32df87d9f3505",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Apcu\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"apcu",
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
"reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "b2b1e732a6c039f1a3ea3414b3379a2433e183d6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/b2b1e732a6c039f1a3ea3414b3379a2433e183d6",
"reference": "b2b1e732a6c039f1a3ea3414b3379a2433e183d6",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance and support of other locales than \"en\""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Icu\\": ""
},
"classmap": [
"Resources/stubs"
],
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's ICU-related data and classes",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"icu",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44",
"reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44",
"shasum": ""
},
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "6e971c891537eb617a00bb07a43d182a6915faba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/6e971c891537eb617a00bb07a43d182a6915faba",
"reference": "6e971c891537eb617a00bb07a43d182a6915faba",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's Normalizer class and related functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"intl",
"normalizer",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T17:09:11+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13",
"reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675",
"reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "metapackage",
"extra": {
"branch-alias": {
"dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-php70",
"version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php70.git",
"reference": "5f03a781d984aae42cebd18e7912fa80f02ee644"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644",
"reference": "5f03a781d984aae42cebd18e7912fa80f02ee644",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "metapackage",
"extra": {
"branch-alias": {
"dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
"reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
"reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php73\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
"reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
"reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/container": "^1.0"
},
"suggest": {
"symfony/service-implementation": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Service\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Generic abstractions related to writing services",
"homepage": "https://symfony.com",
"keywords": [
"abstractions",
"contracts",
"decoupling",
"interfaces",
"interoperability",
"standards"
],
"time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/swiftmailer-bundle",
"version": "v2.6.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/swiftmailer-bundle.git",
"reference": "c4808f5169efc05567be983909d00f00521c53ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec",
"reference": "c4808f5169efc05567be983909d00f00521c53ec",
"shasum": ""
},
"require": {
"php": ">=5.3.2",
"swiftmailer/swiftmailer": "~4.2|~5.0",
"symfony/config": "~2.7|~3.0",
"symfony/dependency-injection": "~2.7|~3.0",
"symfony/http-kernel": "~2.7|~3.0"
},
"require-dev": {
"symfony/console": "~2.7|~3.0",
"symfony/framework-bundle": "~2.7|~3.0",
"symfony/phpunit-bridge": "~3.3@dev",
"symfony/yaml": "~2.7|~3.0"
},
"suggest": {
"psr/log": "Allows logging"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\SwiftmailerBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony SwiftmailerBundle",
"homepage": "http://symfony.com",
"time": "2017-10-19T01:06:41+00:00"
},
{
"name": "symfony/symfony",
"version": "v3.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/symfony.git",
"reference": "83093d5448a7b90fd4cbcce38580ae53898f506f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/symfony/zipball/83093d5448a7b90fd4cbcce38580ae53898f506f",
"reference": "83093d5448a7b90fd4cbcce38580ae53898f506f",
"shasum": ""
},
"require": {
"doctrine/common": "~2.4",
"ext-xml": "*",
"fig/link-util": "^1.0",
"php": "^5.5.9|>=7.0.8",
"psr/cache": "~1.0",
"psr/container": "^1.0",
"psr/link": "^1.0",
"psr/log": "~1.0",
"psr/simple-cache": "^1.0",
"symfony/polyfill-apcu": "~1.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "~1.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.6",
"twig/twig": "^1.41|^2.10"
},
"conflict": {
"monolog/monolog": ">=2",
"phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
"phpdocumentor/type-resolver": "<0.3.0",
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"provide": {
"psr/cache-implementation": "1.0",
"psr/container-implementation": "1.0",
"psr/log-implementation": "1.0",
"psr/simple-cache-implementation": "1.0"
},
"replace": {
"symfony/asset": "self.version",
"symfony/browser-kit": "self.version",
"symfony/cache": "self.version",
"symfony/class-loader": "self.version",
"symfony/config": "self.version",
"symfony/console": "self.version",
"symfony/css-selector": "self.version",
"symfony/debug": "self.version",
"symfony/debug-bundle": "self.version",
"symfony/dependency-injection": "self.version",
"symfony/doctrine-bridge": "self.version",
"symfony/dom-crawler": "self.version",
"symfony/dotenv": "self.version",
"symfony/event-dispatcher": "self.version",
"symfony/expression-language": "self.version",
"symfony/filesystem": "self.version",
"symfony/finder": "self.version",
"symfony/form": "self.version",
"symfony/framework-bundle": "self.version",
"symfony/http-foundation": "self.version",
"symfony/http-kernel": "self.version",
"symfony/inflector": "self.version",
"symfony/intl": "self.version",
"symfony/ldap": "self.version",
"symfony/lock": "self.version",
"symfony/monolog-bridge": "self.version",
"symfony/options-resolver": "self.version",
"symfony/process": "self.version",
"symfony/property-access": "self.version",
"symfony/property-info": "self.version",
"symfony/proxy-manager-bridge": "self.version",
"symfony/routing": "self.version",
"symfony/security": "self.version",
"symfony/security-bundle": "self.version",
"symfony/security-core": "self.version",
"symfony/security-csrf": "self.version",
"symfony/security-guard": "self.version",
"symfony/security-http": "self.version",
"symfony/serializer": "self.version",
"symfony/stopwatch": "self.version",
"symfony/templating": "self.version",
"symfony/translation": "self.version",
"symfony/twig-bridge": "self.version",
"symfony/twig-bundle": "self.version",
"symfony/validator": "self.version",
"symfony/var-dumper": "self.version",
"symfony/web-link": "self.version",
"symfony/web-profiler-bundle": "self.version",
"symfony/web-server-bundle": "self.version",
"symfony/workflow": "self.version",
"symfony/yaml": "self.version"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/annotations": "~1.0",
"doctrine/cache": "~1.6",
"doctrine/data-fixtures": "^1.1",
"doctrine/dbal": "~2.4",
"doctrine/doctrine-bundle": "~1.4",
"doctrine/orm": "~2.4,>=2.4.5",
"egulias/email-validator": "~1.2,>=1.2.8|~2.0",
"monolog/monolog": "~1.11",
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0",
"predis/predis": "~1.0",
"symfony/phpunit-bridge": "^5.2",
"symfony/security-acl": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-version": "3.4"
},
"autoload": {
"psr-4": {
"Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
"Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
"Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
"Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
"Symfony\\Bundle\\": "src/Symfony/Bundle/",
"Symfony\\Component\\": "src/Symfony/Component/"
},
"classmap": [
"src/Symfony/Component/Intl/Resources/stubs"
],
"exclude-from-classmap": [
"**/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "The Symfony PHP framework",
"homepage": "https://symfony.com",
"keywords": [
"framework"
],
"time": "2020-11-27T08:43:16+00:00"
},
{
"name": "tetranz/select2entity-bundle",
"version": "v2.10.1",
"source": {
"type": "git",
"url": "https://github.com/tetranz/select2entity-bundle.git",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"shasum": ""
},
"require": {
"doctrine/orm": ">=2.4",
"php": ">=5.4.0",
"twig/twig": ">=2.9"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": []
},
"autoload": {
"psr-4": {
"Tetranz\\Select2EntityBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ross Keatinge",
"email": "tetranz@gmail.com"
}
],
"description": "A Symfony bundle that integrates Select2 as a drop-in replacement for a standard entity field on a Symfony form.",
"keywords": [
"autocomplete",
"select2",
"symfony",
"typeahead"
],
"time": "2019-07-14T02:30:34+00:00"
},
{
"name": "thecsea/simple-caldav-client",
"version": "v0.1.14",
"source": {
"type": "git",
"url": "https://github.com/thecsea/simpleCalDAV.git",
"reference": "542eda99c5a18c04b3701ebda9ce8d3eb0db7728"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thecsea/simpleCalDAV/zipball/542eda99c5a18c04b3701ebda9ce8d3eb0db7728",
"reference": "542eda99c5a18c04b3701ebda9ce8d3eb0db7728",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-xml": "*",
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"it\\thecsea\\simple_caldav_client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0"
],
"authors": [
{
"name": "claudio cardinale",
"email": "cardi@thecsea.it",
"homepage": "http://thecsea.it"
}
],
"description": "A simple and complete php caldav client",
"homepage": "http://www.thecsea.it",
"keywords": [
"CalDAV",
"Simple",
"client"
],
"time": "2020-09-28T11:55:52+00:00"
},
{
"name": "twig/twig",
"version": "v2.14.3",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "8bc568d460d88b25c00c046256ec14a787ea60d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/8bc568d460d88b25c00c046256ec14a787ea60d9",
"reference": "8bc568d460d88b25c00c046256ec14a787ea60d9",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"psr/container": "^1.0",
"symfony/phpunit-bridge": "^4.4.9|^5.0.9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.14-dev"
}
},
"autoload": {
"psr-0": {
"Twig_": "lib/"
},
"psr-4": {
"Twig\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com",
"homepage": "http://fabien.potencier.org",
"role": "Lead Developer"
},
{
"name": "Twig Team",
"role": "Contributors"
},
{
"name": "Armin Ronacher",
"email": "armin.ronacher@active-4.com",
"role": "Project Founder"
}
],
"description": "Twig, the flexible, fast, and secure template language for PHP",
"homepage": "https://twig.symfony.com",
"keywords": [
"templating"
],
"time": "2021-01-05T15:34:33+00:00"
},
{
"name": "zendframework/zend-code",
"version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-code.git",
"reference": "268040548f92c2bfcba164421c1add2ba43abaaa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-code/zipball/268040548f92c2bfcba164421c1add2ba43abaaa",
"reference": "268040548f92c2bfcba164421c1add2ba43abaaa",
"shasum": ""
},
"require": {
"php": "^7.1",
"zendframework/zend-eventmanager": "^2.6 || ^3.0"
},
"conflict": {
"phpspec/prophecy": "<1.9.0"
},
"require-dev": {
"doctrine/annotations": "^1.7",
"ext-phar": "*",
"phpunit/phpunit": "^7.5.16 || ^8.4",
"zendframework/zend-coding-standard": "^1.0",
"zendframework/zend-stdlib": "^2.7 || ^3.0"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
"zendframework/zend-stdlib": "Zend\\Stdlib component"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.4.x-dev",
"dev-develop": "3.5.x-dev",
"dev-dev-4.0": "4.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Zend\\Code\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
"keywords": [
"ZendFramework",
"code",
"zf"
],
"abandoned": "laminas/laminas-code",
"time": "2019-12-10T19:21:15+00:00"
},
{
"name": "zendframework/zend-eventmanager",
"version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-eventmanager.git",
"reference": "a5e2583a211f73604691586b8406ff7296a946dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd",
"reference": "a5e2583a211f73604691586b8406ff7296a946dd",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0"
},
"require-dev": {
"athletic/athletic": "^0.1",
"container-interop/container-interop": "^1.1.0",
"phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
"zendframework/zend-coding-standard": "~1.0.0",
"zendframework/zend-stdlib": "^2.7.3 || ^3.0"
},
"suggest": {
"container-interop/container-interop": "^1.1.0, to use the lazy listeners feature",
"zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.2-dev",
"dev-develop": "3.3-dev"
}
},
"autoload": {
"psr-4": {
"Zend\\EventManager\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Trigger and listen to events within a PHP application",
"homepage": "https://github.com/zendframework/zend-eventmanager",
"keywords": [
"event",
"eventmanager",
"events",
"zf2"
],
"abandoned": "laminas/laminas-eventmanager",
"time": "2018-04-25T15:33:34+00:00"
}
],
"packages-dev": [
{
"name": "nikic/php-parser",
"version": "v4.10.4",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e",
"reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=7.0"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
},
"bin": [
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.9-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Nikita Popov"
}
],
"description": "A PHP parser written in PHP",
"keywords": [
"parser",
"php"
],
"time": "2020-12-20T10:01:03+00:00"
},
{
"name": "sensio/generator-bundle",
"version": "v3.1.7",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
"reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65",
"reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65",
"shasum": ""
},
"require": {
"symfony/console": "~2.7|~3.0",
"symfony/framework-bundle": "~2.7|~3.0",
"symfony/process": "~2.7|~3.0",
"symfony/yaml": "~2.7|~3.0",
"twig/twig": "^1.28.2|^2.0"
},
"require-dev": {
"doctrine/orm": "~2.4",
"symfony/doctrine-bridge": "~2.7|~3.0",
"symfony/filesystem": "~2.7|~3.0",
"symfony/phpunit-bridge": "^3.3"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\GeneratorBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle generates code for you",
"time": "2017-12-07T15:36:41+00:00"
},
{
"name": "symfony/maker-bundle",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
"reference": "9a9e3f4253ca0d923ad49b327db6f89a8f74fe4c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/maker-bundle/zipball/9a9e3f4253ca0d923ad49b327db6f89a8f74fe4c",
"reference": "9a9e3f4253ca0d923ad49b327db6f89a8f74fe4c",
"shasum": ""
},
"require": {
"doctrine/inflector": "^1.2|^2.0",
"nikic/php-parser": "^4.0",
"php": ">=7.1.3",
"symfony/config": "^3.4|^4.0|^5.0",
"symfony/console": "^3.4|^4.0|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0",
"symfony/deprecation-contracts": "^2.2",
"symfony/filesystem": "^3.4|^4.0|^5.0",
"symfony/finder": "^3.4|^4.0|^5.0",
"symfony/framework-bundle": "^3.4|^4.0|^5.0",
"symfony/http-kernel": "^3.4|^4.0|^5.0"
},
"require-dev": {
"composer/semver": "^3.0@dev",
"doctrine/doctrine-bundle": "^1.8|^2.0",
"doctrine/orm": "^2.3",
"friendsofphp/php-cs-fixer": "^2.8",
"friendsoftwig/twigcs": "^3.1.2",
"symfony/http-client": "^4.3|^5.0",
"symfony/phpunit-bridge": "^4.3|^5.0",
"symfony/process": "^3.4|^4.0|^5.0",
"symfony/security-core": "^3.4|^4.0|^5.0",
"symfony/yaml": "^3.4|^4.0|^5.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-main": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MakerBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.",
"homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html",
"keywords": [
"code generator",
"generator",
"scaffold",
"scaffolding"
],
"time": "2021-02-07T01:02:28+00:00"
},
{
"name": "symfony/phpunit-bridge",
"version": "v3.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "120273ad5d03a8deee08ca9260e2598f288f2bac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/120273ad5d03a8deee08ca9260e2598f288f2bac",
"reference": "120273ad5d03a8deee08ca9260e2598f288f2bac",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"conflict": {
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2"
},
"suggest": {
"symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
},
"bin": [
"bin/simple-phpunit"
],
"type": "symfony-bridge",
"extra": {
"thanks": {
"name": "phpunit/phpunit",
"url": "https://github.com/sebastianbergmann/phpunit"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Bridge\\PhpUnit\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"time": "2020-11-13T16:28:59+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=7"
},
"platform-dev": []
}

View File

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

View File

@ -1,6239 +0,0 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "126af2a560491e610bf6530facf116c5",
"packages": [
{
"name": "cboden/ratchet",
"version": "v0.4.3",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/Ratchet.git",
"reference": "466a0ecc83209c75b76645eb823401b5c52e5f21"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/Ratchet/zipball/466a0ecc83209c75b76645eb823401b5c52e5f21",
"reference": "466a0ecc83209c75b76645eb823401b5c52e5f21",
"shasum": ""
},
"require": {
"guzzlehttp/psr7": "^1.0",
"php": ">=5.4.2",
"ratchet/rfc6455": "^0.3",
"react/socket": "^1.0 || ^0.8 || ^0.7 || ^0.6 || ^0.5",
"symfony/http-foundation": "^2.6|^3.0|^4.0|^5.0",
"symfony/routing": "^2.6|^3.0|^4.0|^5.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"
},
{
"name": "Matt Bonneau",
"role": "Developer"
}
],
"description": "PHP WebSocket library",
"homepage": "http://socketo.me",
"keywords": [
"Ratchet",
"WebSockets",
"server",
"sockets",
"websocket"
],
"time": "2020-07-07T15:50:14+00:00"
},
{
"name": "composer/package-versions-deprecated",
"version": "1.8.2",
"source": {
"type": "git",
"url": "https://github.com/composer/package-versions-deprecated.git",
"reference": "7a8001fe2c9befad9d001bf54ef0b4a17d950d0f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7a8001fe2c9befad9d001bf54ef0b4a17d950d0f",
"reference": "7a8001fe2c9befad9d001bf54ef0b4a17d950d0f",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.1.0 || ^2.0",
"php": "^7"
},
"replace": {
"ocramius/package-versions": "1.8.99"
},
"require-dev": {
"composer/composer": "^1.9.3 || ^2.0@dev",
"ext-zip": "^1.13",
"phpunit/phpunit": "^6.5 || ^7"
},
"type": "composer-plugin",
"extra": {
"class": "PackageVersions\\Installer",
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"PackageVersions\\": "src/PackageVersions"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
},
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be"
}
],
"description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2020-07-10T14:10:26+00:00"
},
{
"name": "debril/feed-io",
"version": "v4.8.0",
"source": {
"type": "git",
"url": "https://github.com/alexdebril/feed-io.git",
"reference": "5239890978c8136668a052fbf3f1302512cd6a9a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alexdebril/feed-io/zipball/5239890978c8136668a052fbf3f1302512cd6a9a",
"reference": "5239890978c8136668a052fbf3f1302512cd6a9a",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"guzzlehttp/guzzle": "~6.2|~7.0",
"php": ">=7.1",
"psr/log": "~1.0",
"symfony/console": "~3.4|~4.0|~5.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.4",
"monolog/monolog": "1.*",
"phpunit/phpunit": "~9.3.0"
},
"suggest": {
"monolog/monolog": "Allows to handle logs"
},
"bin": [
"bin/feedio"
],
"type": "library",
"autoload": {
"psr-4": {
"FeedIo\\": "src/FeedIo"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Alexandre Debril",
"email": "alex.debril@gmail.com"
}
],
"description": "PHP library built to consume and serve JSONFeed / RSS / Atom feeds",
"homepage": "https://feed-io.net",
"keywords": [
"atom",
"cli",
"client",
"feed",
"jsonfeed",
"news",
"rss"
],
"time": "2021-01-29T16:42:17+00:00"
},
{
"name": "debril/rss-atom-bundle",
"version": "v4.3.0",
"target-dir": "Debril/RssAtomBundle",
"source": {
"type": "git",
"url": "https://github.com/alexdebril/rss-atom-bundle.git",
"reference": "5c0ef9b1f6a9ca058904c2adadb94cd306df9278"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/alexdebril/rss-atom-bundle/zipball/5c0ef9b1f6a9ca058904c2adadb94cd306df9278",
"reference": "5c0ef9b1f6a9ca058904c2adadb94cd306df9278",
"shasum": ""
},
"require": {
"debril/feed-io": "~3.0|~4.0",
"php": ">=7.1",
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4|~4.0",
"symfony/http-foundation": "~3.4|~4.0",
"symfony/http-kernel": "~3.4|~4.0"
},
"require-dev": {
"doctrine/common": "~2.3",
"doctrine/doctrine-bundle": "~1.2",
"phpunit/phpunit": "~7.0",
"symfony/browser-kit": ">3.0",
"symfony/finder": ">3.0",
"symfony/validator": ">3.0",
"symfony/yaml": "^4.0"
},
"suggest": {
"doctrine/doctrine-bundle": "allow to provide feeds' content from database"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"Debril\\RssAtomBundle": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "RSS / Atom and JSONFeed support for Symfony",
"homepage": "http://debril.org/category/rss-atom-bundle/",
"keywords": [
"Syndication",
"atom",
"feed",
"jsonfeed",
"rss"
],
"time": "2019-08-09T13:22:15+00:00"
},
{
"name": "doctrine/annotations",
"version": "1.11.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
"reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/annotations/zipball/ce77a7ba1770462cd705a91a151b6c3746f9c6ad",
"reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad",
"shasum": ""
},
"require": {
"doctrine/lexer": "1.*",
"ext-tokenizer": "*",
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/cache": "1.*",
"doctrine/coding-standard": "^6.0 || ^8.1",
"phpstan/phpstan": "^0.12.20",
"phpunit/phpunit": "^7.5 || ^9.1.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Docblock Annotations Parser",
"homepage": "https://www.doctrine-project.org/projects/annotations.html",
"keywords": [
"annotations",
"docblock",
"parser"
],
"time": "2020-10-26T10:28:16+00:00"
},
{
"name": "doctrine/cache",
"version": "1.10.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "13e3381b25847283a91948d04640543941309727"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727",
"reference": "13e3381b25847283a91948d04640543941309727",
"shasum": ""
},
"require": {
"php": "~7.1 || ^8.0"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/coding-standard": "^6.0",
"mongodb/mongodb": "^1.1",
"phpunit/phpunit": "^7.0",
"predis/predis": "~1.0"
},
"suggest": {
"alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
"homepage": "https://www.doctrine-project.org/projects/cache.html",
"keywords": [
"abstraction",
"apcu",
"cache",
"caching",
"couchdb",
"memcached",
"php",
"redis",
"xcache"
],
"time": "2020-07-07T18:54:01+00:00"
},
{
"name": "doctrine/collections",
"version": "1.6.7",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
"reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/collections/zipball/55f8b799269a1a472457bd1a41b4f379d4cfba4a",
"reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a",
"shasum": ""
},
"require": {
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan-shim": "^0.9.2",
"phpunit/phpunit": "^7.0",
"vimeo/psalm": "^3.8.1"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.",
"homepage": "https://www.doctrine-project.org/projects/collections.html",
"keywords": [
"array",
"collections",
"iterators",
"php"
],
"time": "2020-07-27T17:53:49+00:00"
},
{
"name": "doctrine/common",
"version": "2.13.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
"reference": "f3812c026e557892c34ef37f6ab808a6b567da7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f",
"reference": "f3812c026e557892c34ef37f6ab808a6b567da7f",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/cache": "^1.0",
"doctrine/collections": "^1.0",
"doctrine/event-manager": "^1.0",
"doctrine/inflector": "^1.0",
"doctrine/lexer": "^1.0",
"doctrine/persistence": "^1.3.3",
"doctrine/reflection": "^1.0",
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^1.0",
"phpstan/phpstan": "^0.11",
"phpstan/phpstan-phpunit": "^0.11",
"phpunit/phpunit": "^7.0",
"squizlabs/php_codesniffer": "^3.0",
"symfony/phpunit-bridge": "^4.0.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.11.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.",
"homepage": "https://www.doctrine-project.org/projects/common.html",
"keywords": [
"common",
"doctrine",
"php"
],
"time": "2020-06-05T16:46:05+00:00"
},
{
"name": "doctrine/data-fixtures",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/data-fixtures.git",
"reference": "51d3d4880d28951fff42a635a2389f8c63baddc5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/51d3d4880d28951fff42a635a2389f8c63baddc5",
"reference": "51d3d4880d28951fff42a635a2389f8c63baddc5",
"shasum": ""
},
"require": {
"doctrine/common": "^2.13|^3.0",
"doctrine/persistence": "^1.3.3|^2.0",
"php": "^7.2 || ^8.0"
},
"conflict": {
"doctrine/phpcr-odm": "<1.3.0"
},
"require-dev": {
"doctrine/coding-standard": "^8.2",
"doctrine/dbal": "^2.5.4",
"doctrine/mongodb-odm": "^1.3.0 || ^2.0.0",
"doctrine/orm": "^2.7.0",
"ext-sqlite3": "*",
"phpunit/phpunit": "^8.0"
},
"suggest": {
"alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)",
"doctrine/mongodb-odm": "For loading MongoDB ODM fixtures",
"doctrine/orm": "For loading ORM fixtures",
"doctrine/phpcr-odm": "For loading PHPCR ODM fixtures"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Data Fixtures for all Doctrine Object Managers",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database"
],
"time": "2021-01-23T10:20:43+00:00"
},
{
"name": "doctrine/dbal",
"version": "2.12.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "adce7a954a1c2f14f85e94aed90c8489af204086"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/adce7a954a1c2f14f85e94aed90c8489af204086",
"reference": "adce7a954a1c2f14f85e94aed90c8489af204086",
"shasum": ""
},
"require": {
"doctrine/cache": "^1.0",
"doctrine/event-manager": "^1.0",
"ext-pdo": "*",
"php": "^7.3 || ^8"
},
"require-dev": {
"doctrine/coding-standard": "^8.1",
"jetbrains/phpstorm-stubs": "^2019.1",
"phpstan/phpstan": "^0.12.40",
"phpunit/phpunit": "^9.4",
"psalm/plugin-phpunit": "^0.10.0",
"symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
"vimeo/psalm": "^3.17.2"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
},
"bin": [
"bin/doctrine-dbal"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
"homepage": "https://www.doctrine-project.org/projects/dbal.html",
"keywords": [
"abstraction",
"database",
"db2",
"dbal",
"mariadb",
"mssql",
"mysql",
"oci8",
"oracle",
"pdo",
"pgsql",
"postgresql",
"queryobject",
"sasql",
"sql",
"sqlanywhere",
"sqlite",
"sqlserver",
"sqlsrv"
],
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
"type": "tidelift"
}
],
"time": "2020-11-14T20:26:58+00:00"
},
{
"name": "doctrine/doctrine-bundle",
"version": "1.12.13",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git",
"reference": "85460b85edd8f61a16ad311e7ffc5d255d3c937c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/85460b85edd8f61a16ad311e7ffc5d255d3c937c",
"reference": "85460b85edd8f61a16ad311e7ffc5d255d3c937c",
"shasum": ""
},
"require": {
"doctrine/dbal": "^2.5.12|^3.0",
"doctrine/doctrine-cache-bundle": "~1.2",
"doctrine/persistence": "^1.3.3",
"jdorn/sql-formatter": "^1.2.16",
"php": "^7.1 || ^8.0",
"symfony/cache": "^3.4.30|^4.3.3",
"symfony/config": "^3.4.30|^4.3.3",
"symfony/console": "^3.4.30|^4.3.3",
"symfony/dependency-injection": "^3.4.30|^4.3.3",
"symfony/doctrine-bridge": "^3.4.30|^4.3.3",
"symfony/framework-bundle": "^3.4.30|^4.3.3",
"symfony/service-contracts": "^1.1.1|^2.0"
},
"conflict": {
"doctrine/orm": "<2.6",
"twig/twig": "<1.34|>=2.0,<2.4"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"doctrine/orm": "^2.6",
"ocramius/proxy-manager": "^2.1",
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^7.5",
"symfony/phpunit-bridge": "^4.2",
"symfony/property-info": "^3.4.30|^4.3.3",
"symfony/proxy-manager-bridge": "^3.4|^4|^5",
"symfony/twig-bridge": "^3.4|^4.1",
"symfony/validator": "^3.4.30|^4.3.3",
"symfony/web-profiler-bundle": "^3.4.30|^4.3.3",
"symfony/yaml": "^3.4.30|^4.3.3",
"twig/twig": "^1.34|^2.12"
},
"suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
"symfony/web-profiler-bundle": "To use the data collector."
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org/"
}
],
"description": "Symfony DoctrineBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"database",
"dbal",
"orm",
"persistence"
],
"time": "2020-11-14T13:38:44+00:00"
},
{
"name": "doctrine/doctrine-cache-bundle",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineCacheBundle.git",
"reference": "6bee2f9b339847e8a984427353670bad4e7bdccb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/6bee2f9b339847e8a984427353670bad4e7bdccb",
"reference": "6bee2f9b339847e8a984427353670bad4e7bdccb",
"shasum": ""
},
"require": {
"doctrine/cache": "^1.4.2",
"doctrine/inflector": "^1.0",
"php": "^7.1",
"symfony/doctrine-bridge": "^3.4|^4.0"
},
"require-dev": {
"instaclick/coding-standard": "~1.1",
"instaclick/object-calisthenics-sniffs": "dev-master",
"instaclick/symfony2-coding-standard": "dev-remaster",
"phpunit/phpunit": "^7.0",
"predis/predis": "~0.8",
"satooshi/php-coveralls": "^1.0",
"squizlabs/php_codesniffer": "~1.5",
"symfony/console": "^3.4|^4.0",
"symfony/finder": "^3.4|^4.0",
"symfony/framework-bundle": "^3.4|^4.0",
"symfony/phpunit-bridge": "^3.4|^4.0",
"symfony/security-acl": "^2.8",
"symfony/validator": "^3.4|^4.0",
"symfony/yaml": "^3.4|^4.0"
},
"suggest": {
"symfony/security-acl": "For using this bundle to cache ACLs"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\DoctrineCacheBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Fabio B. Silva",
"email": "fabio.bat.silva@gmail.com"
},
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@hotmail.com"
},
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org/"
}
],
"description": "Symfony Bundle for Doctrine Cache",
"homepage": "https://www.doctrine-project.org",
"keywords": [
"cache",
"caching"
],
"abandoned": true,
"time": "2019-11-29T11:22:01+00:00"
},
{
"name": "doctrine/doctrine-fixtures-bundle",
"version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
"reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273",
"reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273",
"shasum": ""
},
"require": {
"doctrine/data-fixtures": "~1.0",
"doctrine/doctrine-bundle": "~1.0",
"php": ">=5.3.2",
"symfony/doctrine-bridge": "~2.7|~3.0|~4.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\FixturesBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineFixturesBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"Fixture",
"persistence"
],
"time": "2017-10-30T19:26:42+00:00"
},
{
"name": "doctrine/doctrine-migrations-bundle",
"version": "v1.3.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineMigrationsBundle.git",
"reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/49fa399181db4bf4f9f725126bd1cb65c4398dce",
"reference": "49fa399181db4bf4f9f725126bd1cb65c4398dce",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "~1.0",
"doctrine/migrations": "^1.1",
"php": ">=5.4.0",
"symfony/framework-bundle": "~2.7|~3.3|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^7.4"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.3-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Bundle\\MigrationsBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Doctrine Project",
"homepage": "http://www.doctrine-project.org"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony DoctrineMigrationsBundle",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"dbal",
"migrations",
"schema"
],
"time": "2018-12-03T11:55:33+00:00"
},
{
"name": "doctrine/event-manager",
"version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
"reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f",
"reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.9@dev"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
"homepage": "https://www.doctrine-project.org/projects/event-manager.html",
"keywords": [
"event",
"event dispatcher",
"event manager",
"event system",
"events"
],
"time": "2020-05-29T18:28:51+00:00"
},
{
"name": "doctrine/inflector",
"version": "1.4.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c",
"reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^7.0",
"phpstan/phpstan": "^0.11",
"phpstan/phpstan-phpunit": "^0.11",
"phpstan/phpstan-strict-rules": "^0.11",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector",
"Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
"homepage": "https://www.doctrine-project.org/projects/inflector.html",
"keywords": [
"inflection",
"inflector",
"lowercase",
"manipulation",
"php",
"plural",
"singular",
"strings",
"uppercase",
"words"
],
"time": "2020-05-29T07:19:59+00:00"
},
{
"name": "doctrine/instantiator",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
"reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
"reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^8.0",
"ext-pdo": "*",
"ext-phar": "*",
"phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
"phpstan/phpstan": "^0.12",
"phpstan/phpstan-phpunit": "^0.12",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "https://ocramius.github.io/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
"homepage": "https://www.doctrine-project.org/projects/instantiator.html",
"keywords": [
"constructor",
"instantiate"
],
"time": "2020-11-10T18:47:58+00:00"
},
{
"name": "doctrine/lexer",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
"reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
"reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan": "^0.11.8",
"phpunit/phpunit": "^8.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
"homepage": "https://www.doctrine-project.org/projects/lexer.html",
"keywords": [
"annotations",
"docblock",
"lexer",
"parser",
"php"
],
"time": "2020-05-25T17:44:05+00:00"
},
{
"name": "doctrine/migrations",
"version": "v1.8.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/migrations.git",
"reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/migrations/zipball/215438c0eef3e5f9b7da7d09c6b90756071b43e6",
"reference": "215438c0eef3e5f9b7da7d09c6b90756071b43e6",
"shasum": ""
},
"require": {
"doctrine/dbal": "~2.6",
"ocramius/proxy-manager": "^1.0|^2.0",
"php": "^7.1",
"symfony/console": "~3.3|^4.0"
},
"require-dev": {
"doctrine/coding-standard": "^1.0",
"doctrine/orm": "~2.5",
"jdorn/sql-formatter": "~1.1",
"mikey179/vfsstream": "^1.6",
"phpunit/phpunit": "~7.0",
"squizlabs/php_codesniffer": "^3.0",
"symfony/yaml": "~3.3|^4.0"
},
"suggest": {
"jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.",
"symfony/yaml": "Allows the use of yaml for migration configuration files."
},
"bin": [
"bin/doctrine-migrations"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "v1.8.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations",
"Doctrine\\Migrations\\": "lib/Doctrine/Migrations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Michael Simonson",
"email": "contact@mikesimonson.com"
}
],
"description": "Database Schema migrations using Doctrine DBAL",
"homepage": "https://www.doctrine-project.org/projects/migrations.html",
"keywords": [
"database",
"migrations"
],
"time": "2018-06-06T21:00:30+00:00"
},
{
"name": "doctrine/orm",
"version": "2.7.5",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
"reference": "01187c9260cd085529ddd1273665217cae659640"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/orm/zipball/01187c9260cd085529ddd1273665217cae659640",
"reference": "01187c9260cd085529ddd1273665217cae659640",
"shasum": ""
},
"require": {
"composer/package-versions-deprecated": "^1.8",
"doctrine/annotations": "^1.11.1",
"doctrine/cache": "^1.9.1",
"doctrine/collections": "^1.5",
"doctrine/common": "^2.11 || ^3.0",
"doctrine/dbal": "^2.9.3",
"doctrine/event-manager": "^1.1",
"doctrine/inflector": "^1.0",
"doctrine/instantiator": "^1.3",
"doctrine/lexer": "^1.0",
"doctrine/persistence": "^1.3.3 || ^2.0",
"ext-pdo": "*",
"php": "^7.1",
"symfony/console": "^3.0|^4.0|^5.0"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan": "^0.12.18",
"phpunit/phpunit": "^8.0",
"symfony/yaml": "^3.4|^4.0|^5.0",
"vimeo/psalm": "^3.11"
},
"suggest": {
"symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
},
"bin": [
"bin/doctrine"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.7.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\ORM\\": "lib/Doctrine/ORM"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "Object-Relational-Mapper for PHP",
"homepage": "https://www.doctrine-project.org/projects/orm.html",
"keywords": [
"database",
"orm"
],
"time": "2020-12-03T08:52:14+00:00"
},
{
"name": "doctrine/persistence",
"version": "1.3.8",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
"reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288",
"reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/cache": "^1.0",
"doctrine/collections": "^1.0",
"doctrine/event-manager": "^1.0",
"doctrine/reflection": "^1.2",
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.10@dev"
},
"require-dev": {
"doctrine/coding-standard": "^6.0",
"phpstan/phpstan": "^0.11",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
"vimeo/psalm": "^3.11"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common",
"Doctrine\\Persistence\\": "lib/Doctrine/Persistence"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.",
"homepage": "https://doctrine-project.org/projects/persistence.html",
"keywords": [
"mapper",
"object",
"odm",
"orm",
"persistence"
],
"time": "2020-06-20T12:56:16+00:00"
},
{
"name": "doctrine/reflection",
"version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/reflection.git",
"reference": "fa587178be682efe90d005e3a322590d6ebb59a5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5",
"reference": "fa587178be682efe90d005e3a322590d6ebb59a5",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"ext-tokenizer": "*",
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.9"
},
"require-dev": {
"doctrine/coding-standard": "^6.0 || ^8.2.0",
"doctrine/common": "^2.10",
"phpstan/phpstan": "^0.11.0 || ^0.12.20",
"phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16",
"phpunit/phpunit": "^7.5 || ^9.1.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
}
},
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "lib/Doctrine/Common"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.",
"homepage": "https://www.doctrine-project.org/projects/reflection.html",
"keywords": [
"reflection",
"static"
],
"abandoned": "roave/better-reflection",
"time": "2020-10-27T21:46:55+00:00"
},
{
"name": "egeloen/ckeditor-bundle",
"version": "6.0.1",
"source": {
"type": "git",
"url": "https://github.com/egeloen/IvoryCKEditorBundle.git",
"reference": "9c9926918d3ae4b4d89ca2db578766ab9829ee7a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egeloen/IvoryCKEditorBundle/zipball/9c9926918d3ae4b4d89ca2db578766ab9829ee7a",
"reference": "9c9926918d3ae4b4d89ca2db578766ab9829ee7a",
"shasum": ""
},
"require": {
"egeloen/json-builder": "^2.0|^3.0",
"php": "^5.6|^7.0",
"symfony/dependency-injection": "^2.7|^3.0",
"symfony/form": "^2.7|^3.0",
"symfony/framework-bundle": "^2.7|^3.0"
},
"require-dev": {
"composer/composer": "^1.0",
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^5.0|^6.0",
"sensio/distribution-bundle": "^3.0.12|^4.0|^5.0",
"symfony/asset": "^2.7|^3.0",
"symfony/console": "^2.7|^3.0",
"symfony/phpunit-bridge": "^2.7|^3.0",
"symfony/templating": "^2.7|^3.0",
"symfony/twig-bridge": "^2.7|^3.0",
"symfony/yaml": "^2.7|^3.0",
"twig/twig": "^1.12"
},
"suggest": {
"egeloen/form-extra-bundle": "Allows to load CKEditor asynchronously",
"sensio/distribution-bundle": "Allows to install CKEditor via a script handler",
"symfony/asset": "Allows to rewrite/version assets",
"symfony/templating": "Allows to use PHP templates",
"symfony/twig-bridge": "Allows to use Twig templates",
"twig/twig": "Allows to use Twig templates"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "6.0-dev"
}
},
"autoload": {
"psr-4": {
"Ivory\\CKEditorBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
}
],
"description": "Provides a CKEditor integration for your Symfony2 Project.",
"keywords": [
"CKEditor"
],
"time": "2017-08-18T08:19:45+00:00"
},
{
"name": "egeloen/json-builder",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/egeloen/ivory-json-builder.git",
"reference": "3e70bc681891d8aca88dd72164caea659739f284"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egeloen/ivory-json-builder/zipball/3e70bc681891d8aca88dd72164caea659739f284",
"reference": "3e70bc681891d8aca88dd72164caea659739f284",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^5.6|^7.0",
"symfony/property-access": "^2.7|^3.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^5.0",
"symfony/phpunit-bridge": "^2.7|^3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"Ivory\\JsonBuilder\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
}
],
"description": "JSON builder with escaping control for PHP 5.6+",
"keywords": [
"Escape",
"builder",
"json"
],
"time": "2017-02-27T20:18:54+00:00"
},
{
"name": "evenement/evenement",
"version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/igorw/evenement.git",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
},
"type": "library",
"autoload": {
"psr-0": {
"Evenement": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Igor Wiedler",
"email": "igor@wiedler.ch"
}
],
"description": "Événement is a very simple event dispatching library for PHP",
"keywords": [
"event-dispatcher",
"event-emitter"
],
"time": "2017-07-23T21:35:13+00:00"
},
{
"name": "fig/link-util",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link-util.git",
"reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link-util/zipball/5d7b8d04ed3393b4b59968ca1e906fb7186d81e8",
"reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8",
"shasum": ""
},
"require": {
"php": ">=5.5.0",
"psr/link": "~1.0@dev"
},
"provide": {
"psr/link-implementation": "1.0"
},
"require-dev": {
"phpunit/phpunit": "^5.1",
"squizlabs/php_codesniffer": "^2.3.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Fig\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common utility implementations for HTTP links",
"keywords": [
"http",
"http-link",
"link",
"psr",
"psr-13",
"rest"
],
"time": "2021-02-03T23:36:04+00:00"
},
{
"name": "gos/pubsub-router-bundle",
"version": "v0.3.5",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle.git",
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/PubSubRouterBundle/zipball/a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
"reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0",
"shasum": ""
},
"require": {
"doctrine/cache": "~1.4",
"php": ">=5.5",
"symfony/console": "~3.4|~4.0",
"symfony/framework-bundle": "~3.4|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "0.3.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Bundle\\PubSubRouterBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Symfony PubSub Router Bundle",
"homepage": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle",
"keywords": [
"PubSub Bundle",
"WAMP",
"bundle",
"pubsub",
"redis",
"zmq"
],
"time": "2018-10-04T17:09:23+00:00"
},
{
"name": "gos/web-socket-bundle",
"version": "v1.10.4",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/WebSocketBundle.git",
"reference": "2d8dfd9dd49ee9328524f43d3afafbb50e0386b9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/2d8dfd9dd49ee9328524f43d3afafbb50e0386b9",
"reference": "2d8dfd9dd49ee9328524f43d3afafbb50e0386b9",
"shasum": ""
},
"require": {
"cboden/ratchet": "^0.4.1",
"gos/pubsub-router-bundle": "^0.3",
"gos/websocket-client": "^0.1",
"ocramius/proxy-manager": "^1.0|^2.1",
"php": ">=7.2",
"psr/log": "^1.0",
"react/event-loop": "^1.0",
"symfony/config": "^2.3|^3.0|^4.0",
"symfony/console": "^2.3|^3.0|^4.0",
"symfony/dependency-injection": "^2.3|^3.0|^4.0",
"symfony/deprecation-contracts": "^2.1",
"symfony/event-dispatcher": "^2.3|^3.0|^4.0",
"symfony/http-foundation": "^2.3|^3.0|^4.0",
"symfony/http-kernel": "^2.3|^3.0|^4.0",
"symfony/security-core": "^2.3|^3.0|^4.0"
},
"conflict": {
"twig/twig": "<1.34|>=2.0,<2.4"
},
"suggest": {
"doctrine/cache": "^1.0 to use doctrine/cache as a client driver",
"ext-amqp": "* to use the amqp pusher",
"ext-zmq": "* to use the zmq pusher",
"gos/react-amqp": "^0.2 to use the amqp server push handler",
"predis/predis": "^1.0 to use Predis as a client driver",
"react/zmq": "^0.4 to use zmq server push handler",
"symfony/cache": "^3.1|^4.0 to use symfony/cache as a client driver",
"symfony/options-resolver": "^2.3|^3.0|^4.0 to use the pushers",
"symfony/serializer": "^2.3|^3.0|^4.0 to use the pushers",
"symfony/stopwatch": "^2.3|^3.0|^4.0 to use the data collectors",
"twig/twig": "^1.34|^2.4|^3.0 to use the Twig extension"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-1.x": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Bundle\\WebSocketBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dare",
"email": "jeremy.d.dare@gmail.com"
},
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
}
],
"description": "Symfony Web Socket Bundle",
"homepage": "https://github.com/GeniusesOfSymfony/WebSocketBundle",
"keywords": [
"Ratchet",
"WAMP",
"Web Socket Bundle",
"io",
"websocket"
],
"time": "2020-07-06T14:08:35+00:00"
},
{
"name": "gos/websocket-client",
"version": "v0.1.2",
"source": {
"type": "git",
"url": "https://github.com/GeniusesOfSymfony/WebSocketPhpClient.git",
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketPhpClient/zipball/13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
"reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Gos\\Component\\WebSocketClient\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Johann Saunier",
"email": "johann_27@hotmail.fr"
},
{
"name": "Martin Bažík",
"email": "martin@bazo.sk"
}
],
"description": "WAMP client in PHP",
"keywords": [
"Ratchet",
"WAMP",
"websocket"
],
"time": "2015-08-04T11:43:11+00:00"
},
{
"name": "gregwar/captcha",
"version": "v1.1.9",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/Captcha.git",
"reference": "4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/Captcha/zipball/4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5",
"reference": "4bb668e6b40e3205a020ca5ee4ca8cff8b8780c5",
"shasum": ""
},
"require": {
"ext-gd": "*",
"ext-mbstring": "*",
"php": ">=5.3.0",
"symfony/finder": "*"
},
"require-dev": {
"phpunit/phpunit": "^6.4"
},
"type": "captcha",
"autoload": {
"psr-4": {
"Gregwar\\": "src/Gregwar"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Passault",
"email": "g.passault@gmail.com",
"homepage": "http://www.gregwar.com/"
},
{
"name": "Jeremy Livingston",
"email": "jeremy.j.livingston@gmail.com"
}
],
"description": "Captcha generator",
"homepage": "https://github.com/Gregwar/Captcha",
"keywords": [
"bot",
"captcha",
"spam"
],
"time": "2020-03-24T14:39:05+00:00"
},
{
"name": "gregwar/captcha-bundle",
"version": "v2.0.7",
"source": {
"type": "git",
"url": "https://github.com/Gregwar/CaptchaBundle.git",
"reference": "3ccfdf1c9324acbdfbcccea2c454075115741b3a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/3ccfdf1c9324acbdfbcccea2c454075115741b3a",
"reference": "3ccfdf1c9324acbdfbcccea2c454075115741b3a",
"shasum": ""
},
"require": {
"gregwar/captcha": "~1.1",
"php": ">=5.3.9",
"symfony/form": "~2.8|~3.0|~4.0",
"symfony/framework-bundle": "~2.8|~3.0|~4.0",
"twig/twig": "^1.40|^2.9"
},
"type": "captcha-bundle",
"autoload": {
"psr-4": {
"Gregwar\\CaptchaBundle\\": "/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Grégoire Passault",
"email": "g.passault@gmail.com",
"homepage": "http://www.gregwar.com/"
},
{
"name": "Jeremy Livingston",
"email": "jeremy.j.livingston@gmail.com"
}
],
"description": "Captcha bundle",
"homepage": "https://github.com/Gregwar/CaptchaBundle",
"keywords": [
"Symfony2",
"bot",
"captcha",
"code",
"security",
"spam",
"visual"
],
"time": "2019-09-23T13:07:46+00:00"
},
{
"name": "guzzlehttp/guzzle",
"version": "7.2.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79",
"reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.4",
"guzzlehttp/psr7": "^1.7",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0"
},
"provide": {
"psr/http-client-implementation": "1.0"
},
"require-dev": {
"ext-curl": "*",
"php-http/client-integration-tests": "^3.0",
"phpunit/phpunit": "^8.5.5 || ^9.3.5",
"psr/log": "^1.1"
},
"suggest": {
"ext-curl": "Required for CURL handler support",
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "7.1-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com",
"homepage": "https://sagikazarmark.hu"
}
],
"description": "Guzzle is a PHP HTTP client library",
"homepage": "http://guzzlephp.org/",
"keywords": [
"client",
"curl",
"framework",
"http",
"http client",
"psr-18",
"psr-7",
"rest",
"web service"
],
"time": "2020-10-10T11:47:56+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "60d379c243457e073cff02bc323a2a86cb355631"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
"reference": "60d379c243457e073cff02bc323a2a86cb355631",
"shasum": ""
},
"require": {
"php": ">=5.5"
},
"require-dev": {
"symfony/phpunit-bridge": "^4.4 || ^5.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
}
],
"description": "Guzzle promises library",
"keywords": [
"promise"
],
"time": "2020-09-30T07:37:28+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"psr/http-message": "~1.0",
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"ext-zlib": "*",
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Tobias Schultze",
"homepage": "https://github.com/Tobion"
}
],
"description": "PSR-7 message implementation that also provides common utility methods",
"keywords": [
"http",
"message",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"time": "2020-09-30T07:37:11+00:00"
},
{
"name": "incenteev/composer-parameter-handler",
"version": "v2.1.4",
"source": {
"type": "git",
"url": "https://github.com/Incenteev/ParameterHandler.git",
"reference": "084befb11ec21faeadcddefb88b66132775ff59b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/084befb11ec21faeadcddefb88b66132775ff59b",
"reference": "084befb11ec21faeadcddefb88b66132775ff59b",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/yaml": "^2.3 || ^3.0 || ^4.0 || ^5.0"
},
"require-dev": {
"composer/composer": "^1.0@dev",
"symfony/filesystem": "^2.3 || ^3 || ^4 || ^5",
"symfony/phpunit-bridge": "^4.0 || ^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Incenteev\\ParameterHandler\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christophe Coevoet",
"email": "stof@notk.org"
}
],
"description": "Composer script handling your ignored parameter file",
"homepage": "https://github.com/Incenteev/ParameterHandler",
"keywords": [
"parameters management"
],
"time": "2020-03-17T21:10:00+00:00"
},
{
"name": "jasig/phpcas",
"version": "1.3.9",
"source": {
"type": "git",
"url": "https://github.com/apereo/phpCAS.git",
"reference": "7325865c4cfb5005ed4e4c5cf01823be1726a2a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/apereo/phpCAS/zipball/7325865c4cfb5005ed4e4c5cf01823be1726a2a0",
"reference": "7325865c4cfb5005ed4e4c5cf01823be1726a2a0",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0",
"psr/log": "^1.0.0"
},
"require-dev": {
"monolog/monolog": "^1.0.0",
"phpunit/phpunit": ">=4.8.35 <8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"source/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Joachim Fritschi",
"homepage": "https://wiki.jasig.org/display/~fritschi"
},
{
"name": "Adam Franco",
"homepage": "https://wiki.jasig.org/display/~adamfranco"
}
],
"description": "Provides a simple API for authenticating users against a CAS server",
"homepage": "https://wiki.jasig.org/display/CASC/phpCAS",
"keywords": [
"apereo",
"cas",
"jasig"
],
"time": "2021-01-31T21:13:59+00:00"
},
{
"name": "jdorn/sql-formatter",
"version": "v1.2.17",
"source": {
"type": "git",
"url": "https://github.com/jdorn/sql-formatter.git",
"reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
"reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
"shasum": ""
},
"require": {
"php": ">=5.2.4"
},
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
}
},
"autoload": {
"classmap": [
"lib"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jeremy Dorn",
"email": "jeremy@jeremydorn.com",
"homepage": "http://jeremydorn.com/"
}
],
"description": "a PHP SQL highlighting library",
"homepage": "https://github.com/jdorn/sql-formatter/",
"keywords": [
"highlight",
"sql"
],
"time": "2014-01-12T16:20:24+00:00"
},
{
"name": "kriswallsmith/assetic",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/kriswallsmith/assetic.git",
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
"reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1",
"shasum": ""
},
"require": {
"php": ">=5.3.1",
"symfony/process": "~2.1|~3.0"
},
"conflict": {
"twig/twig": "<1.27"
},
"require-dev": {
"leafo/lessphp": "^0.3.7",
"leafo/scssphp": "~0.1",
"meenie/javascript-packer": "^1.1",
"mrclay/minify": "<2.3",
"natxet/cssmin": "3.0.4",
"patchwork/jsqueeze": "~1.0|~2.0",
"phpunit/phpunit": "~4.8 || ^5.6",
"psr/log": "~1.0",
"ptachoire/cssembed": "~1.0",
"symfony/phpunit-bridge": "~2.7|~3.0",
"twig/twig": "~1.23|~2.0",
"yfix/packager": "dev-master"
},
"suggest": {
"leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
"leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
"leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
"patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor",
"ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
"twig/twig": "Assetic provides the integration with the Twig templating engine"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
}
},
"autoload": {
"psr-0": {
"Assetic": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "kris.wallsmith@gmail.com",
"homepage": "http://kriswallsmith.net/"
}
],
"description": "Asset Management for PHP",
"homepage": "https://github.com/kriswallsmith/assetic",
"keywords": [
"assets",
"compression",
"minification"
],
"time": "2016-11-11T18:43:20+00:00"
},
{
"name": "laminas/laminas-code",
"version": "3.5.1",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
"reference": "b549b70c0bb6e935d497f84f750c82653326ac77"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-code/zipball/b549b70c0bb6e935d497f84f750c82653326ac77",
"reference": "b549b70c0bb6e935d497f84f750c82653326ac77",
"shasum": ""
},
"require": {
"laminas/laminas-eventmanager": "^3.3",
"laminas/laminas-zendframework-bridge": "^1.1",
"php": "^7.3 || ~8.0.0"
},
"conflict": {
"phpspec/prophecy": "<1.9.0"
},
"replace": {
"zendframework/zend-code": "^3.4.1"
},
"require-dev": {
"doctrine/annotations": "^1.10.4",
"ext-phar": "*",
"laminas/laminas-coding-standard": "^1.0.0",
"laminas/laminas-stdlib": "^3.3.0",
"phpunit/phpunit": "^9.4.2"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
"laminas/laminas-stdlib": "Laminas\\Stdlib component"
},
"type": "library",
"autoload": {
"psr-4": {
"Laminas\\Code\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
"homepage": "https://laminas.dev",
"keywords": [
"code",
"laminas"
],
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2020-11-30T20:16:31+00:00"
},
{
"name": "laminas/laminas-eventmanager",
"version": "3.3.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-eventmanager.git",
"reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/1940ccf30e058b2fd66f5a9d696f1b5e0027b082",
"reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082",
"shasum": ""
},
"require": {
"laminas/laminas-zendframework-bridge": "^1.0",
"php": "^7.3 || ^8.0"
},
"replace": {
"zendframework/zend-eventmanager": "^3.2.1"
},
"require-dev": {
"container-interop/container-interop": "^1.1",
"laminas/laminas-coding-standard": "~1.0.0",
"laminas/laminas-stdlib": "^2.7.3 || ^3.0",
"phpbench/phpbench": "^0.17.1",
"phpunit/phpunit": "^8.5.8"
},
"suggest": {
"container-interop/container-interop": "^1.1, to use the lazy listeners feature",
"laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.3.x-dev",
"dev-develop": "3.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Laminas\\EventManager\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Trigger and listen to events within a PHP application",
"homepage": "https://laminas.dev",
"keywords": [
"event",
"eventmanager",
"events",
"laminas"
],
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2020-08-25T11:10:44+00:00"
},
{
"name": "laminas/laminas-zendframework-bridge",
"version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
"reference": "6ede70583e101030bcace4dcddd648f760ddf642"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642",
"reference": "6ede70583e101030bcace4dcddd648f760ddf642",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"laminas": {
"module": "Laminas\\ZendFrameworkBridge"
}
},
"autoload": {
"files": [
"src/autoload.php"
],
"psr-4": {
"Laminas\\ZendFrameworkBridge\\": "src//"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Alias legacy ZF class names to Laminas Project equivalents.",
"keywords": [
"ZendFramework",
"autoloading",
"laminas",
"zf"
],
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2020-09-14T14:23:00+00:00"
},
{
"name": "lightsaml/lightsaml",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/lightSAML.git",
"reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/lightSAML/zipball/377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5",
"reference": "377f04d1fb25f2fb2e72dabeff10b336f1cbe4c5",
"shasum": ""
},
"require": {
"php": ">=5.6",
"robrichards/xmlseclibs": "~2.0|~3.0|~4.0",
"symfony/event-dispatcher": "~2.3|~3.0|~4.0",
"symfony/http-foundation": "~2.3|~3.0|~4.0"
},
"require-dev": {
"monolog/monolog": "~1.3",
"phpunit/phpunit": ">=5.7",
"pimple/pimple": "~3.0",
"symfony/css-selector": "~2.3|~3.0|~4.0",
"symfony/dom-crawler": "~2.3|~3.0|~4.0"
},
"suggest": {
"lightsaml/sp-bundle": "Symfony 2 SP security bundle",
"lightsaml/symfony-bridge": "Symfony 2 build container bridge"
},
"type": "library",
"autoload": {
"psr-0": {
"LightSaml\\Tests\\": "tests/",
"LightSaml\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "https://github.com/tmilos/",
"role": "Developer"
}
],
"description": "Light SAML 2.0 PHP library",
"homepage": "https://www.lightsaml.com/",
"keywords": [
"SAML 2.0",
"Single Logout",
"Single SignOn",
"library",
"lightSAML",
"php"
],
"time": "2018-05-28T11:21:22+00:00"
},
{
"name": "lightsaml/sp-bundle",
"version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SpBundle.git",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SpBundle/zipball/2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"reference": "2150175dd2a5ad9cccfa7892e8c4af04503f5881",
"shasum": ""
},
"require": {
"lightsaml/symfony-bridge": "~1.3",
"php": ">=5.6",
"symfony/framework-bundle": "~2.7|~3.0|~4.0",
"symfony/security-bundle": "~2.7|~3.0|~4.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7",
"sebastian/comparator": "^1.2.4|~2.0|~3.0",
"symfony/monolog-bundle": "~2.7|~3.0|~4.0",
"symfony/symfony": "~2.7|~3.0|~4.0"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"LightSaml\\SpBundle\\Tests\\": "tests/",
"LightSaml\\SpBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "http://github.com/tmilos",
"role": "Developer"
}
],
"description": "Light SAML2 SP Symfony Bundle",
"homepage": "http://www.lightsaml.com/SP-Bundle/",
"time": "2019-11-13T19:05:47+00:00"
},
{
"name": "lightsaml/symfony-bridge",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/lightSAML/SymfonyBridgeBundle.git",
"reference": "8d3120825032a7468e894d0ae68630f21cd6035b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lightSAML/SymfonyBridgeBundle/zipball/8d3120825032a7468e894d0ae68630f21cd6035b",
"reference": "8d3120825032a7468e894d0ae68630f21cd6035b",
"shasum": ""
},
"require": {
"lightsaml/lightsaml": "~1.1",
"php": ">=5.5.1",
"symfony/dependency-injection": "~2.7|~3.0|~4.0",
"symfony/framework-bundle": "~2.7|~3.0|~4.0",
"symfony/yaml": "~2.7|~3.0|~4.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "~2.0",
"phpunit/phpunit": "^5.7",
"symfony/browser-kit": "~2.7|~3.0|~4.0",
"symfony/filesystem": "~2.7|~3.0|~4.0",
"symfony/finder": "~2.7|~3.0|~4.0",
"symfony/routing": "~2.7|~3.0|~4.0"
},
"suggest": {
"lightsaml/lightsamp-idp": "If you will be using IDP LightSAML services"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"LightSaml\\SymfonyBridgeBundle\\Tests\\": "tests/",
"LightSaml\\SymfonyBridgeBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Milos Tomic",
"email": "tmilos@gmail.com",
"homepage": "http://github.com/tmilos",
"role": "Developer"
}
],
"description": "Light SAML Symfony bridge bundle",
"homepage": "http://www.lightsaml.com",
"time": "2018-05-23T08:11:59+00:00"
},
{
"name": "mashape/unirest-php",
"version": "v3.0.4",
"source": {
"type": "git",
"url": "https://github.com/Mashape/unirest-php.git",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Mashape/unirest-php/zipball/842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"reference": "842c0f242dfaaf85f16b72e217bf7f7c19ab12cb",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.4.0"
},
"require-dev": {
"codeclimate/php-test-reporter": "0.1.*",
"phpunit/phpunit": "~4.4"
},
"suggest": {
"ext-json": "Allows using JSON Bodies for sending and parsing requests"
},
"type": "library",
"autoload": {
"psr-0": {
"Unirest\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Unirest PHP",
"homepage": "https://github.com/Mashape/unirest-php",
"keywords": [
"client",
"curl",
"http",
"https",
"rest"
],
"time": "2016-08-11T17:49:21+00:00"
},
{
"name": "monolog/monolog",
"version": "1.26.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33",
"reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"psr/log": "~1.0"
},
"provide": {
"psr/log-implementation": "1.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
"graylog2/gelf-php": "~1.0",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpstan/phpstan": "^0.12.59",
"phpunit/phpunit": "~4.5",
"ruflin/elastica": ">=0.90 <3.0",
"sentry/sentry": "^0.13",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
"ext-mongo": "Allow sending log messages to a MongoDB server",
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
"php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
"sentry/sentry": "Allow sending log messages to a Sentry server"
},
"type": "library",
"autoload": {
"psr-4": {
"Monolog\\": "src/Monolog"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
"homepage": "http://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
"time": "2020-12-14T12:56:38+00:00"
},
{
"name": "ocramius/proxy-manager",
"version": "2.8.1",
"source": {
"type": "git",
"url": "https://github.com/Ocramius/ProxyManager.git",
"reference": "371c8f2d9d1e888ce1f8f2137d9187252b07ee94"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/371c8f2d9d1e888ce1f8f2137d9187252b07ee94",
"reference": "371c8f2d9d1e888ce1f8f2137d9187252b07ee94",
"shasum": ""
},
"require": {
"laminas/laminas-code": "^3.4.1",
"ocramius/package-versions": "^1.8.0,<1.10.0",
"php": "~7.4.1",
"webimpress/safe-writer": "^2.0.1"
},
"conflict": {
"doctrine/annotations": "<1.6.1",
"laminas/laminas-stdlib": "<3.2.1",
"zendframework/zend-stdlib": "<3.2.1"
},
"require-dev": {
"doctrine/coding-standard": "^6.0.0",
"ext-phar": "*",
"infection/infection": "^0.16.2",
"nikic/php-parser": "^4.4.0",
"phpbench/phpbench": "^0.17.0",
"phpunit/phpunit": "^9.1.1",
"slevomat/coding-standard": "^5.0.4",
"squizlabs/php_codesniffer": "^3.5.4",
"vimeo/psalm": "^3.11.1"
},
"suggest": {
"laminas/laminas-json": "To have the JsonRpc adapter (Remote Object feature)",
"laminas/laminas-soap": "To have the Soap adapter (Remote Object feature)",
"laminas/laminas-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)",
"ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
}
},
"autoload": {
"psr-4": {
"ProxyManager\\": "src/ProxyManager"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"homepage": "http://ocramius.github.io/"
}
],
"description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
"homepage": "https://github.com/Ocramius/ProxyManager",
"keywords": [
"aop",
"lazy loading",
"proxy",
"proxy pattern",
"service proxies"
],
"funding": [
{
"url": "https://github.com/Ocramius",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
"type": "tidelift"
}
],
"time": "2020-07-13T19:23:57+00:00"
},
{
"name": "oneup/uploader-bundle",
"version": "1.9.4",
"target-dir": "Oneup/UploaderBundle",
"source": {
"type": "git",
"url": "https://github.com/1up-lab/OneupUploaderBundle.git",
"reference": "8a6dc57c35e12fbc341e52e401a1d286475ec445"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/1up-lab/OneupUploaderBundle/zipball/8a6dc57c35e12fbc341e52e401a1d286475ec445",
"reference": "8a6dc57c35e12fbc341e52e401a1d286475ec445",
"shasum": ""
},
"require": {
"paragonie/random_compat": "^1.1|^2.0",
"php": ">=5.4",
"symfony/asset": "^2.4|^3.0",
"symfony/finder": "^2.4|^3.0",
"symfony/framework-bundle": "^2.4|^3.0",
"symfony/templating": "^2.4|^3.0",
"symfony/translation": "^2.4|^3.0"
},
"require-dev": {
"amazonwebservices/aws-sdk-for-php": "1.5.*",
"knplabs/gaufrette": "0.2.*@dev",
"oneup/flysystem-bundle": "^1.2",
"phpunit/phpunit": "^4.4",
"sensio/framework-extra-bundle": "2.*|^3.0",
"symfony/browser-kit": "2.*|^3.0",
"symfony/class-loader": "2.*|^3.0",
"symfony/security-bundle": "2.*|^3.0",
"twistor/flysystem-stream-wrapper": "^1.0"
},
"suggest": {
"knplabs/knp-gaufrette-bundle": "0.1.*",
"oneup/flysystem-bundle": "^1.2",
"twistor/flysystem-stream-wrapper": "^1.0 (Required when using Flysystem)"
},
"type": "symfony-bundle",
"autoload": {
"psr-0": {
"Oneup\\UploaderBundle": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jim Schmid",
"email": "js@1up.io",
"homepage": "http://1up.io",
"role": "Developer"
}
],
"description": "Handles multi file uploads in Symfony2. Features included: Chunked upload, Orphans management, Gaufrette support.",
"homepage": "http://1up.io",
"keywords": [
"FancyUpload",
"FineUploader",
"MooUpload",
"Uploadify",
"YUI3 Uploader",
"blueimp",
"dropzone",
"fileupload",
"jQuery File Uploader",
"plupload",
"upload"
],
"time": "2020-02-04T12:08:35+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.19",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241",
"reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241",
"shasum": ""
},
"require": {
"php": ">=5.2.0"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*"
},
"suggest": {
"ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
},
"type": "library",
"autoload": {
"files": [
"lib/random.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Paragon Initiative Enterprises",
"email": "security@paragonie.com",
"homepage": "https://paragonie.com"
}
],
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"time": "2020-10-15T10:06:57+00:00"
},
{
"name": "psr/cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
"reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
"keywords": [
"cache",
"psr",
"psr-6"
],
"time": "2016-08-06T20:24:11+00:00"
},
{
"name": "psr/container",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common Container Interface (PHP FIG PSR-11)",
"homepage": "https://github.com/php-fig/container",
"keywords": [
"PSR-11",
"container",
"container-interface",
"container-interop",
"psr"
],
"time": "2017-02-14T16:28:37+00:00"
},
{
"name": "psr/http-client",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"shasum": ""
},
"require": {
"php": "^7.0 || ^8.0",
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
"homepage": "https://github.com/php-fig/http-client",
"keywords": [
"http",
"http-client",
"psr",
"psr-18"
],
"time": "2020-06-29T06:28:15+00:00"
},
{
"name": "psr/http-message",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
"homepage": "https://github.com/php-fig/http-message",
"keywords": [
"http",
"http-message",
"psr",
"psr-7",
"request",
"response"
],
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "psr/link",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/link.git",
"reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562",
"reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for HTTP links",
"keywords": [
"http",
"http-link",
"link",
"psr",
"psr-13",
"rest"
],
"time": "2016-10-28T16:06:13+00:00"
},
{
"name": "psr/log",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Log\\": "Psr/Log/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [
"log",
"psr",
"psr-3"
],
"time": "2020-03-23T09:12:05+00:00"
},
{
"name": "psr/simple-cache",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\SimpleCache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interfaces for simple caching",
"keywords": [
"cache",
"caching",
"psr",
"psr-16",
"simple-cache"
],
"time": "2017-10-23T01:57:42+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "120b605dfeb996808c31b6477290a714d356e822"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
"reference": "120b605dfeb996808c31b6477290a714d356e822",
"shasum": ""
},
"require": {
"php": ">=5.6"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^5 || ^6.5"
},
"type": "library",
"autoload": {
"files": [
"src/getallheaders.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph Khattar",
"email": "ralph.khattar@gmail.com"
}
],
"description": "A polyfill for getallheaders.",
"time": "2019-03-08T08:55:37+00:00"
},
{
"name": "ramsey/uuid",
"version": "3.9.3",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92",
"reference": "7e1633a6964b48589b142d60542f9ed31bd37a92",
"shasum": ""
},
"require": {
"ext-json": "*",
"paragonie/random_compat": "^1 | ^2 | 9.99.99",
"php": "^5.4 | ^7 | ^8",
"symfony/polyfill-ctype": "^1.8"
},
"replace": {
"rhumsaa/uuid": "self.version"
},
"require-dev": {
"codeception/aspect-mock": "^1 | ^2",
"doctrine/annotations": "^1.2",
"goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1",
"jakub-onderka/php-parallel-lint": "^1",
"mockery/mockery": "^0.9.11 | ^1",
"moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
"php-mock/php-mock-phpunit": "^0.3 | ^1.1",
"phpunit/phpunit": "^4.8 | ^5.4 | ^6.5",
"squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
"ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
"ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator",
"ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
"moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Ramsey\\Uuid\\": "src/"
},
"files": [
"src/functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ben Ramsey",
"email": "ben@benramsey.com",
"homepage": "https://benramsey.com"
},
{
"name": "Marijn Huizendveld",
"email": "marijn.huizendveld@gmail.com"
},
{
"name": "Thibaud Fabre",
"email": "thibaud@aztech.io"
}
],
"description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
"homepage": "https://github.com/ramsey/uuid",
"keywords": [
"guid",
"identifier",
"uuid"
],
"time": "2020-02-21T04:36:14+00:00"
},
{
"name": "ratchet/rfc6455",
"version": "v0.3",
"source": {
"type": "git",
"url": "https://github.com/ratchetphp/RFC6455.git",
"reference": "c8651c7938651c2d55f5d8c2422ac5e57a183341"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/c8651c7938651c2d55f5d8c2422ac5e57a183341",
"reference": "c8651c7938651c2d55f5d8c2422ac5e57a183341",
"shasum": ""
},
"require": {
"guzzlehttp/psr7": "^1.0",
"php": ">=5.4.2"
},
"require-dev": {
"phpunit/phpunit": "5.7.*",
"react/socket": "^1.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"
},
{
"name": "Matt Bonneau",
"role": "Developer"
}
],
"description": "RFC6455 WebSocket protocol handler",
"homepage": "http://socketo.me",
"keywords": [
"WebSockets",
"rfc6455",
"websocket"
],
"time": "2020-05-15T18:31:24+00:00"
},
{
"name": "react/cache",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/cache.git",
"reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/cache/zipball/4bf736a2cccec7298bdf745db77585966fc2ca7e",
"reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/promise": "^3.0 || ^2.0 || ^1.1"
},
"require-dev": {
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async, Promise-based cache interface for ReactPHP",
"keywords": [
"cache",
"caching",
"promise",
"reactphp"
],
"time": "2021-02-02T06:47:52+00:00"
},
{
"name": "react/dns",
"version": "v1.4.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/dns.git",
"reference": "665260757171e2ab17485b44e7ffffa7acb6ca1f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/dns/zipball/665260757171e2ab17485b44e7ffffa7acb6ca1f",
"reference": "665260757171e2ab17485b44e7ffffa7acb6ca1f",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"react/cache": "^1.0 || ^0.6 || ^0.5",
"react/event-loop": "^1.0 || ^0.5",
"react/promise": "^3.0 || ^2.7 || ^1.2.1",
"react/promise-timer": "^1.2"
},
"require-dev": {
"clue/block-react": "^1.2",
"phpunit/phpunit": "^9.3 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Dns\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async DNS resolver for ReactPHP",
"keywords": [
"async",
"dns",
"dns-resolver",
"reactphp"
],
"time": "2020-09-18T12:12:55+00:00"
},
{
"name": "react/event-loop",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/event-loop.git",
"reference": "6d24de090cd59cfc830263cfba965be77b563c13"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/event-loop/zipball/6d24de090cd59cfc830263cfba965be77b563c13",
"reference": "6d24de090cd59cfc830263cfba965be77b563c13",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"suggest": {
"ext-event": "~1.0 for ExtEventLoop",
"ext-pcntl": "For signal handling support when using the StreamSelectLoop",
"ext-uv": "* for ExtUvLoop"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\EventLoop\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.",
"keywords": [
"asynchronous",
"event-loop"
],
"time": "2020-01-01T18:39:52+00:00"
},
{
"name": "react/promise",
"version": "v2.8.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com"
}
],
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
"keywords": [
"promise",
"promises"
],
"time": "2020-05-12T15:16:56+00:00"
},
{
"name": "react/promise-timer",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise-timer.git",
"reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise-timer/zipball/daee9baf6ef30c43ea4c86399f828bb5f558f6e6",
"reference": "daee9baf6ef30c43ea4c86399f828bb5f558f6e6",
"shasum": ""
},
"require": {
"php": ">=5.3",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/promise": "^3.0 || ^2.7.0 || ^1.2.1"
},
"require-dev": {
"phpunit/phpunit": "^9.0 || ^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": "2020-07-10T12:18:06+00:00"
},
{
"name": "react/socket",
"version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/socket.git",
"reference": "e2b96b23a13ca9b41ab343268dbce3f8ef4d524a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/socket/zipball/e2b96b23a13ca9b41ab343268dbce3f8ef4d524a",
"reference": "e2b96b23a13ca9b41ab343268dbce3f8ef4d524a",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.0",
"react/dns": "^1.1",
"react/event-loop": "^1.0 || ^0.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": "^9.3 || ^5.7 || ^4.8.35",
"react/promise-stream": "^1.2"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Socket\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Christian Lück",
"email": "christian@clue.engineering",
"homepage": "https://clue.engineering/"
},
{
"name": "Cees-Jan Kiewiet",
"email": "reactphp@ceesjankiewiet.nl",
"homepage": "https://wyrihaximus.net/"
},
{
"name": "Jan Sorgalla",
"email": "jsorgalla@gmail.com",
"homepage": "https://sorgalla.com/"
},
{
"name": "Chris Boden",
"email": "cboden@gmail.com",
"homepage": "https://cboden.dev/"
}
],
"description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP",
"keywords": [
"Connection",
"Socket",
"async",
"reactphp",
"stream"
],
"time": "2020-08-28T12:49:05+00:00"
},
{
"name": "react/stream",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/stream.git",
"reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/stream/zipball/7c02b510ee3f582c810aeccd3a197b9c2f52ff1a",
"reference": "7c02b510ee3f582c810aeccd3a197b9c2f52ff1a",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.8",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5"
},
"require-dev": {
"clue/stream-filter": "~1.2",
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Stream\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP",
"keywords": [
"event-driven",
"io",
"non-blocking",
"pipe",
"reactphp",
"readable",
"stream",
"writable"
],
"time": "2020-05-04T10:17:57+00:00"
},
{
"name": "robrichards/xmlseclibs",
"version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/robrichards/xmlseclibs.git",
"reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df",
"reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"php": ">= 5.4"
},
"type": "library",
"autoload": {
"psr-4": {
"RobRichards\\XMLSecLibs\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "A PHP library for XML Security",
"homepage": "https://github.com/robrichards/xmlseclibs",
"keywords": [
"security",
"signature",
"xml",
"xmldsig"
],
"time": "2020-09-05T13:00:25+00:00"
},
{
"name": "sensio/distribution-bundle",
"version": "v5.0.25",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
"reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/80a38234bde8321fb92aa0b8c27978a272bb4baf",
"reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"sensiolabs/security-checker": "~5.0|~6.0",
"symfony/class-loader": "~2.3|~3.0",
"symfony/config": "~2.3|~3.0",
"symfony/dependency-injection": "~2.3|~3.0",
"symfony/filesystem": "~2.3|~3.0",
"symfony/http-kernel": "~2.3|~3.0",
"symfony/process": "~2.3|~3.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "5.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\DistributionBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Base bundle for Symfony Distributions",
"keywords": [
"configuration",
"distribution"
],
"abandoned": true,
"time": "2019-06-18T15:43:58+00:00"
},
{
"name": "sensio/framework-extra-bundle",
"version": "v5.4.1",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
"reference": "585f4b3a1c54f24d1a8431c729fc8f5acca20c8a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/585f4b3a1c54f24d1a8431c729fc8f5acca20c8a",
"reference": "585f4b3a1c54f24d1a8431c729fc8f5acca20c8a",
"shasum": ""
},
"require": {
"doctrine/annotations": "^1.0",
"doctrine/persistence": "^1.0",
"php": ">=7.1.3",
"symfony/config": "^3.4|^4.3",
"symfony/dependency-injection": "^3.4|^4.3",
"symfony/framework-bundle": "^3.4|^4.3",
"symfony/http-kernel": "^3.4|^4.3"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
"nyholm/psr7": "^1.1",
"symfony/browser-kit": "^3.4|^4.3",
"symfony/dom-crawler": "^3.4|^4.3",
"symfony/expression-language": "^3.4|^4.3",
"symfony/finder": "^3.4|^4.3",
"symfony/monolog-bridge": "^3.0|^4.0",
"symfony/monolog-bundle": "^3.2",
"symfony/phpunit-bridge": "^3.4.19|^4.1.8",
"symfony/psr-http-message-bridge": "^1.1",
"symfony/security-bundle": "^3.4|^4.3",
"symfony/twig-bundle": "^3.4|^4.3",
"symfony/yaml": "^3.4|^4.3",
"twig/twig": "~1.12|~2.0"
},
"suggest": {
"symfony/expression-language": "",
"symfony/psr-http-message-bridge": "To use the PSR-7 converters",
"symfony/security-bundle": ""
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "5.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\FrameworkExtraBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle provides a way to configure your controllers with annotations",
"keywords": [
"annotations",
"controllers"
],
"time": "2019-07-08T08:31:25+00:00"
},
{
"name": "sensiolabs/security-checker",
"version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/security-checker.git",
"reference": "a576c01520d9761901f269c4934ba55448be4a54"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/a576c01520d9761901f269c4934ba55448be4a54",
"reference": "a576c01520d9761901f269c4934ba55448be4a54",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
"symfony/console": "^2.8|^3.4|^4.2|^5.0",
"symfony/http-client": "^4.3|^5.0",
"symfony/mime": "^4.3|^5.0",
"symfony/polyfill-ctype": "^1.11"
},
"bin": [
"security-checker"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.0-dev"
}
},
"autoload": {
"psr-4": {
"SensioLabs\\Security\\": "SensioLabs/Security"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien.potencier@gmail.com"
}
],
"description": "A security checker for your composer.lock",
"abandoned": "https://github.com/fabpot/local-php-security-checker",
"time": "2019-11-01T13:20:14+00:00"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.12",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950",
"reference": "181b89f18a90f8925ef805f950d47a7190e9b950",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"mockery/mockery": "~0.9.1",
"symfony/phpunit-bridge": "~3.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.4-dev"
}
},
"autoload": {
"files": [
"lib/swift_required.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Corbyn"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Swiftmailer, free feature-rich PHP mailer",
"homepage": "https://swiftmailer.symfony.com",
"keywords": [
"email",
"mail",
"mailer"
],
"time": "2018-07-31T09:26:32+00:00"
},
{
"name": "symfony/assetic-bundle",
"version": "v2.8.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/assetic-bundle.git",
"reference": "2e0a23a4874838e26de6f025e02fc63328921a4c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/assetic-bundle/zipball/2e0a23a4874838e26de6f025e02fc63328921a4c",
"reference": "2e0a23a4874838e26de6f025e02fc63328921a4c",
"shasum": ""
},
"require": {
"kriswallsmith/assetic": "~1.4",
"php": ">=5.3.0",
"symfony/console": "~2.3|~3.0",
"symfony/dependency-injection": "~2.3|~3.0",
"symfony/framework-bundle": "~2.3|~3.0",
"symfony/yaml": "~2.3|~3.0"
},
"conflict": {
"kriswallsmith/spork": "<=0.2",
"twig/twig": "<1.27"
},
"require-dev": {
"kriswallsmith/spork": "~0.3",
"patchwork/jsqueeze": "~1.0",
"symfony/class-loader": "~2.3|~3.0",
"symfony/css-selector": "~2.3|~3.0",
"symfony/dom-crawler": "~2.3|~3.0",
"symfony/phpunit-bridge": "~2.7|~3.0",
"symfony/twig-bundle": "~2.3|~3.0"
},
"suggest": {
"kriswallsmith/spork": "to be able to dump assets in parallel",
"symfony/twig-bundle": "to use the Twig integration"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.8-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\AsseticBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kris Wallsmith",
"email": "kris.wallsmith@gmail.com",
"homepage": "http://kriswallsmith.net/"
}
],
"description": "Integrates Assetic into Symfony2",
"homepage": "https://github.com/symfony/AsseticBundle",
"keywords": [
"assets",
"compression",
"minification"
],
"abandoned": "symfony/webpack-encore-pack",
"time": "2017-07-14T07:26:46+00:00"
},
{
"name": "symfony/deprecation-contracts",
"version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
"reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"files": [
"function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/http-client",
"version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
"reference": "22cb1a7844fff206cc5186409776e78865405ea5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/22cb1a7844fff206cc5186409776e78865405ea5",
"reference": "22cb1a7844fff206cc5186409776e78865405ea5",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/log": "^1.0",
"symfony/http-client-contracts": "^2.2",
"symfony/polyfill-php73": "^1.11",
"symfony/polyfill-php80": "^1.15",
"symfony/service-contracts": "^1.0|^2"
},
"provide": {
"php-http/async-client-implementation": "*",
"php-http/client-implementation": "*",
"psr/http-client-implementation": "1.0",
"symfony/http-client-implementation": "1.1"
},
"require-dev": {
"amphp/amp": "^2.5",
"amphp/http-client": "^4.2.1",
"amphp/http-tunnel": "^1.0",
"amphp/socket": "^1.1",
"guzzlehttp/promises": "^1.4",
"nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0",
"psr/http-client": "^1.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/http-kernel": "^4.4.13|^5.1.5",
"symfony/process": "^4.4|^5.0",
"symfony/stopwatch": "^4.4|^5.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\HttpClient\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com",
"time": "2021-01-27T10:15:41+00:00"
},
{
"name": "symfony/http-client-contracts",
"version": "v2.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
"reference": "41db680a15018f9c1d4b23516059633ce280ca33"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
"reference": "41db680a15018f9c1d4b23516059633ce280ca33",
"shasum": ""
},
"require": {
"php": ">=7.2.5"
},
"suggest": {
"symfony/http-client-implementation": ""
},
"type": "library",
"extra": {
"branch-version": "2.3",
"branch-alias": {
"dev-main": "2.3-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"psr-4": {
"Symfony\\Contracts\\HttpClient\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Generic abstractions related to HTTP clients",
"homepage": "https://symfony.com",
"keywords": [
"abstractions",
"contracts",
"decoupling",
"interfaces",
"interoperability",
"standards"
],
"time": "2020-10-14T17:08:19+00:00"
},
{
"name": "symfony/mime",
"version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
"reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/7dee6a43493f39b51ff6c5bb2bd576fe40a76c86",
"reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0",
"symfony/polyfill-php80": "^1.15"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/mailer": "<4.4"
},
"require-dev": {
"egulias/email-validator": "^2.1.10",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/property-access": "^4.4|^5.1",
"symfony/property-info": "^4.4|^5.1",
"symfony/serializer": "^5.2"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Mime\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Allows manipulating MIME messages",
"homepage": "https://symfony.com",
"keywords": [
"mime",
"mime-type"
],
"time": "2021-02-02T06:10:15+00:00"
},
{
"name": "symfony/monolog-bundle",
"version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bundle.git",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
"shasum": ""
},
"require": {
"monolog/monolog": "~1.22",
"php": ">=5.6",
"symfony/config": "~3.4|~4.0",
"symfony/dependency-injection": "~3.4.10|^4.0.10",
"symfony/http-kernel": "~3.4|~4.0",
"symfony/monolog-bridge": "~3.4|~4.0"
},
"require-dev": {
"symfony/console": "~3.4|~4.0",
"symfony/phpunit-bridge": "^3.4.19|^4.0",
"symfony/yaml": "~3.4|~4.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MonologBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony MonologBundle",
"homepage": "http://symfony.com",
"keywords": [
"log",
"logging"
],
"time": "2019-06-20T12:18:19+00:00"
},
{
"name": "symfony/orm-pack",
"version": "v1.0.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/orm-pack.git",
"reference": "c9bcc08102061f406dc908192c0f33524a675666"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/orm-pack/zipball/c9bcc08102061f406dc908192c0f33524a675666",
"reference": "c9bcc08102061f406dc908192c0f33524a675666",
"shasum": ""
},
"require": {
"doctrine/doctrine-bundle": "*",
"doctrine/doctrine-migrations-bundle": "*",
"doctrine/orm": "*"
},
"type": "symfony-pack",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A pack for the Doctrine ORM",
"time": "2020-02-10T18:03:48+00:00"
},
{
"name": "symfony/polyfill-apcu",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-apcu.git",
"reference": "3b3944f40987b9d3f9b9147f86c32df87d9f3505"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/3b3944f40987b9d3f9b9147f86c32df87d9f3505",
"reference": "3b3944f40987b9d3f9b9147f86c32df87d9f3505",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Apcu\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"apcu",
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
"reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-icu",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "b2b1e732a6c039f1a3ea3414b3379a2433e183d6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/b2b1e732a6c039f1a3ea3414b3379a2433e183d6",
"reference": "b2b1e732a6c039f1a3ea3414b3379a2433e183d6",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance and support of other locales than \"en\""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Icu\\": ""
},
"classmap": [
"Resources/stubs"
],
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's ICU-related data and classes",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"icu",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44",
"reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44",
"shasum": ""
},
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "6e971c891537eb617a00bb07a43d182a6915faba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/6e971c891537eb617a00bb07a43d182a6915faba",
"reference": "6e971c891537eb617a00bb07a43d182a6915faba",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for intl's Normalizer class and related functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"intl",
"normalizer",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T17:09:11+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13",
"reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675",
"reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "metapackage",
"extra": {
"branch-alias": {
"dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-php70",
"version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php70.git",
"reference": "5f03a781d984aae42cebd18e7912fa80f02ee644"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644",
"reference": "5f03a781d984aae42cebd18e7912fa80f02ee644",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "metapackage",
"extra": {
"branch-alias": {
"dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-php72",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
"reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php73",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
"reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
"reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php73\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php80",
"version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
"reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"files": [
"bootstrap.php"
],
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/service-contracts",
"version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
"reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
"reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/container": "^1.0"
},
"suggest": {
"symfony/service-implementation": ""
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Service\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Generic abstractions related to writing services",
"homepage": "https://symfony.com",
"keywords": [
"abstractions",
"contracts",
"decoupling",
"interfaces",
"interoperability",
"standards"
],
"time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/swiftmailer-bundle",
"version": "v2.6.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/swiftmailer-bundle.git",
"reference": "c4808f5169efc05567be983909d00f00521c53ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec",
"reference": "c4808f5169efc05567be983909d00f00521c53ec",
"shasum": ""
},
"require": {
"php": ">=5.3.2",
"swiftmailer/swiftmailer": "~4.2|~5.0",
"symfony/config": "~2.7|~3.0",
"symfony/dependency-injection": "~2.7|~3.0",
"symfony/http-kernel": "~2.7|~3.0"
},
"require-dev": {
"symfony/console": "~2.7|~3.0",
"symfony/framework-bundle": "~2.7|~3.0",
"symfony/phpunit-bridge": "~3.3@dev",
"symfony/yaml": "~2.7|~3.0"
},
"suggest": {
"psr/log": "Allows logging"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\SwiftmailerBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "http://symfony.com/contributors"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Symfony SwiftmailerBundle",
"homepage": "http://symfony.com",
"time": "2017-10-19T01:06:41+00:00"
},
{
"name": "symfony/symfony",
"version": "v3.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/symfony.git",
"reference": "83093d5448a7b90fd4cbcce38580ae53898f506f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/symfony/zipball/83093d5448a7b90fd4cbcce38580ae53898f506f",
"reference": "83093d5448a7b90fd4cbcce38580ae53898f506f",
"shasum": ""
},
"require": {
"doctrine/common": "~2.4",
"ext-xml": "*",
"fig/link-util": "^1.0",
"php": "^5.5.9|>=7.0.8",
"psr/cache": "~1.0",
"psr/container": "^1.0",
"psr/link": "^1.0",
"psr/log": "~1.0",
"psr/simple-cache": "^1.0",
"symfony/polyfill-apcu": "~1.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "~1.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php56": "~1.0",
"symfony/polyfill-php70": "~1.6",
"twig/twig": "^1.41|^2.10"
},
"conflict": {
"monolog/monolog": ">=2",
"phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
"phpdocumentor/type-resolver": "<0.3.0",
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
},
"provide": {
"psr/cache-implementation": "1.0",
"psr/container-implementation": "1.0",
"psr/log-implementation": "1.0",
"psr/simple-cache-implementation": "1.0"
},
"replace": {
"symfony/asset": "self.version",
"symfony/browser-kit": "self.version",
"symfony/cache": "self.version",
"symfony/class-loader": "self.version",
"symfony/config": "self.version",
"symfony/console": "self.version",
"symfony/css-selector": "self.version",
"symfony/debug": "self.version",
"symfony/debug-bundle": "self.version",
"symfony/dependency-injection": "self.version",
"symfony/doctrine-bridge": "self.version",
"symfony/dom-crawler": "self.version",
"symfony/dotenv": "self.version",
"symfony/event-dispatcher": "self.version",
"symfony/expression-language": "self.version",
"symfony/filesystem": "self.version",
"symfony/finder": "self.version",
"symfony/form": "self.version",
"symfony/framework-bundle": "self.version",
"symfony/http-foundation": "self.version",
"symfony/http-kernel": "self.version",
"symfony/inflector": "self.version",
"symfony/intl": "self.version",
"symfony/ldap": "self.version",
"symfony/lock": "self.version",
"symfony/monolog-bridge": "self.version",
"symfony/options-resolver": "self.version",
"symfony/process": "self.version",
"symfony/property-access": "self.version",
"symfony/property-info": "self.version",
"symfony/proxy-manager-bridge": "self.version",
"symfony/routing": "self.version",
"symfony/security": "self.version",
"symfony/security-bundle": "self.version",
"symfony/security-core": "self.version",
"symfony/security-csrf": "self.version",
"symfony/security-guard": "self.version",
"symfony/security-http": "self.version",
"symfony/serializer": "self.version",
"symfony/stopwatch": "self.version",
"symfony/templating": "self.version",
"symfony/translation": "self.version",
"symfony/twig-bridge": "self.version",
"symfony/twig-bundle": "self.version",
"symfony/validator": "self.version",
"symfony/var-dumper": "self.version",
"symfony/web-link": "self.version",
"symfony/web-profiler-bundle": "self.version",
"symfony/web-server-bundle": "self.version",
"symfony/workflow": "self.version",
"symfony/yaml": "self.version"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/annotations": "~1.0",
"doctrine/cache": "~1.6",
"doctrine/data-fixtures": "^1.1",
"doctrine/dbal": "~2.4",
"doctrine/doctrine-bundle": "~1.4",
"doctrine/orm": "~2.4,>=2.4.5",
"egulias/email-validator": "~1.2,>=1.2.8|~2.0",
"monolog/monolog": "~1.11",
"ocramius/proxy-manager": "~0.4|~1.0|~2.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0",
"predis/predis": "~1.0",
"symfony/phpunit-bridge": "^5.2",
"symfony/security-acl": "~2.8|~3.0"
},
"type": "library",
"extra": {
"branch-version": "3.4"
},
"autoload": {
"psr-4": {
"Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
"Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
"Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
"Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
"Symfony\\Bundle\\": "src/Symfony/Bundle/",
"Symfony\\Component\\": "src/Symfony/Component/"
},
"classmap": [
"src/Symfony/Component/Intl/Resources/stubs"
],
"exclude-from-classmap": [
"**/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "The Symfony PHP framework",
"homepage": "https://symfony.com",
"keywords": [
"framework"
],
"time": "2020-11-27T08:43:16+00:00"
},
{
"name": "tetranz/select2entity-bundle",
"version": "v2.10.1",
"source": {
"type": "git",
"url": "https://github.com/tetranz/select2entity-bundle.git",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tetranz/select2entity-bundle/zipball/1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"reference": "1d4b184e41bdb76a61d7462b748d9cf0ecade47a",
"shasum": ""
},
"require": {
"doctrine/orm": ">=2.4",
"php": ">=5.4.0",
"twig/twig": ">=2.9"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": []
},
"autoload": {
"psr-4": {
"Tetranz\\Select2EntityBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ross Keatinge",
"email": "tetranz@gmail.com"
}
],
"description": "A Symfony bundle that integrates Select2 as a drop-in replacement for a standard entity field on a Symfony form.",
"keywords": [
"autocomplete",
"select2",
"symfony",
"typeahead"
],
"time": "2019-07-14T02:30:34+00:00"
},
{
"name": "thecsea/simple-caldav-client",
"version": "v0.1.14",
"source": {
"type": "git",
"url": "https://github.com/thecsea/simpleCalDAV.git",
"reference": "542eda99c5a18c04b3701ebda9ce8d3eb0db7728"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thecsea/simpleCalDAV/zipball/542eda99c5a18c04b3701ebda9ce8d3eb0db7728",
"reference": "542eda99c5a18c04b3701ebda9ce8d3eb0db7728",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-xml": "*",
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"it\\thecsea\\simple_caldav_client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0"
],
"authors": [
{
"name": "claudio cardinale",
"email": "cardi@thecsea.it",
"homepage": "http://thecsea.it"
}
],
"description": "A simple and complete php caldav client",
"homepage": "http://www.thecsea.it",
"keywords": [
"CalDAV",
"Simple",
"client"
],
"time": "2020-09-28T11:55:52+00:00"
},
{
"name": "twig/twig",
"version": "v2.14.3",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "8bc568d460d88b25c00c046256ec14a787ea60d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/8bc568d460d88b25c00c046256ec14a787ea60d9",
"reference": "8bc568d460d88b25c00c046256ec14a787ea60d9",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3"
},
"require-dev": {
"psr/container": "^1.0",
"symfony/phpunit-bridge": "^4.4.9|^5.0.9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.14-dev"
}
},
"autoload": {
"psr-0": {
"Twig_": "lib/"
},
"psr-4": {
"Twig\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com",
"homepage": "http://fabien.potencier.org",
"role": "Lead Developer"
},
{
"name": "Twig Team",
"role": "Contributors"
},
{
"name": "Armin Ronacher",
"email": "armin.ronacher@active-4.com",
"role": "Project Founder"
}
],
"description": "Twig, the flexible, fast, and secure template language for PHP",
"homepage": "https://twig.symfony.com",
"keywords": [
"templating"
],
"time": "2021-01-05T15:34:33+00:00"
},
{
"name": "webimpress/safe-writer",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/webimpress/safe-writer.git",
"reference": "5cfafdec5873c389036f14bf832a5efc9390dcdd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webimpress/safe-writer/zipball/5cfafdec5873c389036f14bf832a5efc9390dcdd",
"reference": "5cfafdec5873c389036f14bf832a5efc9390dcdd",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^8.5.8 || ^9.3.7",
"vimeo/psalm": "^3.14.2",
"webimpress/coding-standard": "^1.1.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.1.x-dev",
"dev-develop": "2.2.x-dev",
"dev-release-1.0": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Webimpress\\SafeWriter\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-2-Clause"
],
"description": "Tool to write files safely, to avoid race conditions",
"keywords": [
"concurrent write",
"file writer",
"race condition",
"safe writer",
"webimpress"
],
"funding": [
{
"url": "https://github.com/michalbundyra",
"type": "github"
}
],
"time": "2020-08-25T07:21:11+00:00"
}
],
"packages-dev": [
{
"name": "nikic/php-parser",
"version": "v4.10.4",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e",
"reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
"php": ">=7.0"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
},
"bin": [
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.9-dev"
}
},
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Nikita Popov"
}
],
"description": "A PHP parser written in PHP",
"keywords": [
"parser",
"php"
],
"time": "2020-12-20T10:01:03+00:00"
},
{
"name": "sensio/generator-bundle",
"version": "v3.1.7",
"source": {
"type": "git",
"url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
"reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65",
"reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65",
"shasum": ""
},
"require": {
"symfony/console": "~2.7|~3.0",
"symfony/framework-bundle": "~2.7|~3.0",
"symfony/process": "~2.7|~3.0",
"symfony/yaml": "~2.7|~3.0",
"twig/twig": "^1.28.2|^2.0"
},
"require-dev": {
"doctrine/orm": "~2.4",
"symfony/doctrine-bridge": "~2.7|~3.0",
"symfony/filesystem": "~2.7|~3.0",
"symfony/phpunit-bridge": "^3.3"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Sensio\\Bundle\\GeneratorBundle\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "This bundle generates code for you",
"time": "2017-12-07T15:36:41+00:00"
},
{
"name": "symfony/maker-bundle",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
"reference": "9a9e3f4253ca0d923ad49b327db6f89a8f74fe4c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/maker-bundle/zipball/9a9e3f4253ca0d923ad49b327db6f89a8f74fe4c",
"reference": "9a9e3f4253ca0d923ad49b327db6f89a8f74fe4c",
"shasum": ""
},
"require": {
"doctrine/inflector": "^1.2|^2.0",
"nikic/php-parser": "^4.0",
"php": ">=7.1.3",
"symfony/config": "^3.4|^4.0|^5.0",
"symfony/console": "^3.4|^4.0|^5.0",
"symfony/dependency-injection": "^3.4|^4.0|^5.0",
"symfony/deprecation-contracts": "^2.2",
"symfony/filesystem": "^3.4|^4.0|^5.0",
"symfony/finder": "^3.4|^4.0|^5.0",
"symfony/framework-bundle": "^3.4|^4.0|^5.0",
"symfony/http-kernel": "^3.4|^4.0|^5.0"
},
"require-dev": {
"composer/semver": "^3.0@dev",
"doctrine/doctrine-bundle": "^1.8|^2.0",
"doctrine/orm": "^2.3",
"friendsofphp/php-cs-fixer": "^2.8",
"friendsoftwig/twigcs": "^3.1.2",
"symfony/http-client": "^4.3|^5.0",
"symfony/phpunit-bridge": "^4.3|^5.0",
"symfony/process": "^3.4|^4.0|^5.0",
"symfony/security-core": "^3.4|^4.0|^5.0",
"symfony/yaml": "^3.4|^4.0|^5.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-main": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Bundle\\MakerBundle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.",
"homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html",
"keywords": [
"code generator",
"generator",
"scaffold",
"scaffolding"
],
"time": "2021-02-07T01:02:28+00:00"
},
{
"name": "symfony/phpunit-bridge",
"version": "v3.4.47",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
"reference": "120273ad5d03a8deee08ca9260e2598f288f2bac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/120273ad5d03a8deee08ca9260e2598f288f2bac",
"reference": "120273ad5d03a8deee08ca9260e2598f288f2bac",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"conflict": {
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2"
},
"suggest": {
"symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
},
"bin": [
"bin/simple-phpunit"
],
"type": "symfony-bridge",
"extra": {
"thanks": {
"name": "phpunit/phpunit",
"url": "https://github.com/sebastianbergmann/phpunit"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Bridge\\PhpUnit\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony PHPUnit Bridge",
"homepage": "https://symfony.com",
"time": "2020-11-13T16:28:59+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=7"
},
"platform-dev": [],
"plugin-api-version": "1.1.0"
}

View File

@ -11,7 +11,6 @@ use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\CoreBundle\Entity\Group;
class SecurityController extends Controller
{
@ -22,18 +21,12 @@ class SecurityController extends Controller
public function loginAction(Request $request)
{
// Récupération de la cible de navigation
$redirect = $request->get("redirect");
// Masteridentity
$masteridentity=$this->getParameter("masteridentity");
// Init Client CAS
\phpCAS::setDebug("/var/log/phpcas/phpCAS-ninegate.log");
if($this->getParameter("cas_type")=="client")
@\phpCAS::client(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), false);
else
@\phpCAS::proxy(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), false);
\phpCAS::setDebug(false);
\phpCAS::client(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), false);
\phpCAS::setNoCasServerValidation();
@ -46,10 +39,11 @@ class SecurityController extends Controller
// Récupération Attribut
$attributes = \phpCAS::getAttributes();
// Init
$email = "";
$lastname = "";
$firstname = "";
// Suppression des Attributs en tableaux
foreach ($attributes as $key => $value) {
if(is_array($value))
unset($attributes[$key]);
}
// Rechercher l'utilisateur
$em = $this->getDoctrine()->getManager();
@ -78,37 +72,17 @@ class SecurityController extends Controller
if($masteridentity=="LDAP") {
// Normalement la synchronisation des comptes aurait du générer le compte en base c'est donc pas normal
// Peut-être juste relancer une synchronisation
// On tente une synchronisation via methode SSO
$masteridentity="SSO";
// throw $this->createNotFoundException('Permission denied. Need to synchronize LDAP ? Contact your administrator');
throw $this->createNotFoundException('Permission denied. Need to synchronize LDAP ? Contact your administrator');
}
if($masteridentity=="SSO") {
if(empty($email)) $email = $username."@nomail.com";
// On s'assure qu'il n'y a pas déjà un utilisateur avec le même mail
$usermail = $em->getRepository('CadolesCoreBundle:User')->findOneBy(array("email"=>$email));
if($usermail) {
return $this->render('CadolesCoreBundle:Registration:info.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
'infotitle' => "Première connexion",
'info' => "Votre compte ne peut être activé car votre adresse mel est déjà utilisée par un autre compte utilisateur.<br>Nous sommes désolés du désagrément et vous invitons à contacter un administrateur.",
'mode' => "error",
'redirectto' => "",
]);
}
// Là c'est normal que potentiellement il n'existe pas il faut donc l'autogénérer
$user = new User();
// On calcule le niveau01 de l'utilisateur
$niveau01=$em->getRepository('CadolesCoreBundle:Niveau01')->calculateNiveau01($attributes);
if(!$niveau01) {
$niveau01=$em->getRepository('CadolesCoreBundle:Niveau01')->findAll()[0];
//throw $this->createNotFoundException('Permission denied. No Organisation Niveau 01 match');
}
if(!$niveau01)
throw $this->createNotFoundException('Permission denied. No Organisation Niveau 01 match');
$user->setUsername($username);
$user->setEmail($email);
@ -125,21 +99,13 @@ class SecurityController extends Controller
$user->setAvatar("noavatar.png");
$user->setVisible(true);
$user->setAuthlevel("simple");
$user->setBelongingpopulation("agent");
$user->setRole("ROLE_USER");
if(in_array($username,$this->getParameter("ldap_usersadmin")))
$user->setRole("ROLE_ADMIN");
$em->persist($user);
$em->flush();
// Génération auto des groupes
$this->submitGroup($attributes);
// On calcule les groupes de l'utilisateur
$user=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
$user=$groups=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
}
}
else {
@ -153,44 +119,30 @@ class SecurityController extends Controller
// On s'assure que le niveau 02 appartient bien au niveau 01 calculé
$sameniveau01=(!is_null($user->getNiveau02())&&$niveau01==$user->getNiveau02()->getNiveau01());
// On calcule les groupes de l'utilisateur
$user=$groups=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
$user->setLastname($lastname);
$user->setFirstname($firstname);
$user->setEmail($email);
if(!$sameniveau01) {
$user->setNiveau01($niveau01);
$user->setNiveau02(null);
}
if(in_array($username,$this->getParameter("ldap_usersadmin")))
$user->setRole("ROLE_ADMIN");
// Génération auto des groupes
$this->submitGroup($attributes);
// On calcule les groupes de l'utilisateur
$user=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
if(!$sameniveau01) $user->setNiveau02(null);
$em->persist($user);
$em->flush();
}
}
// Calcul Service
/*
$user = $em->getRepository('CadolesCoreBundle:User')->calculateServices($user, $attributes);
// Attributs calculés
$attributes = $em->getRepository('CadolesCoreBundle:User')->calculateAttributes($user, $attributes);
*/
// Sauvegarde des attributes en session
$this->get('session')->set('attributes', $attributes);
// Sauvegarde des ssoitems en session
$ssoitems=[];
if($this->getParameter('ssosynchroitem')) {
$user_attr_cas_item=$this->getParameter('user_attr_cas_item');
if(array_key_exists($user_attr_cas_item,$attributes)) {
if(!is_array($attributes[$user_attr_cas_item])) {
$attributes[$user_attr_cas_item]=[$attributes[$user_attr_cas_item]];
}
$ssoitems=$attributes[$user_attr_cas_item];
}
}
$this->get('session')->set('ssoitems', $ssoitems);
// Autoconnexion
// Récupérer le token de l'utilisateur
$token = new UsernamePasswordToken($user, null, "main", $user->getRoles());
@ -201,25 +153,14 @@ class SecurityController extends Controller
$dispatcher = new EventDispatcher();
$dispatcher->dispatch("security.interactive_login", $event);
// On enregistre sa visite
$user->setVisitedate(new \DateTime());
$user->setVisitecpt($user->getVisitecpt()+1);
$em->persist($user);
$em->flush();
if($redirect)
return $this->redirect($redirect);
else
return $this->redirect($this->generateUrl('cadoles_core_home'));
return $this->redirect($this->generateUrl('cadoles_core_home'));
}
public function logoutAction() {
// Init Client CAS
\phpCAS::setDebug(false);
if($this->getParameter("cas_type")=="client")
@\phpCAS::client(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), true);
else
@\phpCAS::proxy(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), true);
\phpCAS::client(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), true);
\phpCAS::setNoCasServerValidation();
@ -227,124 +168,4 @@ class SecurityController extends Controller
$url=$this->generateUrl('cadoles_core_home', array(), UrlGeneratorInterface::ABSOLUTE_URL);
\phpCAS::logout(array("service"=>$url));
}
public function testAction() {
$em = $this->getDoctrine()->getManager();
// Init Client CAS
\phpCAS::setDebug("/var/log/phpcas/phpCAS-ninegate.log");
if($this->getParameter("cas_type")=="client")
@\phpCAS::client(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), false);
else
@\phpCAS::proxy(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), false);
\phpCAS::setNoCasServerValidation();
// Authentification
\phpCAS::forceAuthentication();
// Récupération UID
$username = \phpCAS::getUser();
// Récupération Attribut
$attributes = \phpCAS::getAttributes();
$user = $em->getRepository('CadolesCoreBundle:User')->findOneBy(array("username"=>$username));
// On calcule le niveau01 de l'utilisateur
$niveau01=$em->getRepository('CadolesCoreBundle:Niveau01')->calculateNiveau01($attributes);
// Génération auto des groupes
$groups=$this->submitGroup($attributes);
// On calcule les groupes de l'utilisateur
$user=$em->getRepository('CadolesCoreBundle:Group')->calculateGroup($user,$attributes);
return $this->render('CadolesCASBundle:Test:test.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
'attributes' => $attributes,
'user' => $user,
'username' => $username,
'niveau01' => $niveau01,
]);
}
private function submitGroup($attributes) {
$em = $this->getDoctrine()->getManager();
if(!$this->getParameter('ssosynchrogroup'))
return null;
$user_attr_cas_group=$this->getParameter('user_attr_cas_group');
// Si l'utilisateur possège l'attribut groupe dans ses attributs
if(array_key_exists($user_attr_cas_group,$attributes)) {
if(!is_array($attributes[$user_attr_cas_group])) {
$attributes[$user_attr_cas_group]=[$attributes[$user_attr_cas_group]];
}
foreach($attributes[$user_attr_cas_group] as $ssogroup) {
$basedn=$this->getParameter('ldap_basedn');
$name=$ssogroup;
if($basedn!="") {
// Si présence du basedn dans le nom du groupe = nous sommes en présence d'un DN = on récupere donc comme nom que son cn
if(stripos($name,$basedn)!==false) {
$tbname=explode(",",$name);
$tbname=explode("=",$tbname[0]);
$name=$tbname[1];
}
}
// Recherche du groupe
$group=$em->getRepository("CadolesCoreBundle:Group")->findOneBy(["label"=>$name]);
if(!$group) {
$group=new Group();
$group->setLabel($name);
$group->setFgcancreatepage(false);
$group->setFgcancreateblog(false);
$group->setFgcancreatecalendar(false);
$group->setFgcancreateproject(false);
$group->setFgcanshare(false);
$group->setFgopen(false);
$group->setFgall(false);
}
$group->setAttributes('{"'.$user_attr_cas_group.'":"'.$ssogroup.'"}');
$group->setFgtemplate(false);
$em->persist($group);
$em->flush();
}
}
}
function imapunreadAction() {
if($this->getParameter("active_imapunread")&&$this->getParameter("cas_type")=="proxy") {
$ip=$this->getParameter("imapundread_ip");
// Init Client CAS
\phpCAS::setDebug("/var/log/phpcas/phpCAS-ninegate.log");
@\phpCAS::proxy(CAS_VERSION_2_0, $this->getParameter('cas_host'), $this->getParameter('cas_port'), is_null($this->getParameter('cas_path')) ? '' : $this->getParameter('cas_path'), false);
\phpCAS::setNoCasServerValidation();
\phpCAS::forceAuthentication();
$pt= \phpCAS::retrievePT('imap://'.$ip,$t,$f);
$a = \phpCAS::serviceMail("{".$ip.":993/imap/ssl/novalidate-cert}","imap://".$ip,0, $errc,$err,$pt);
$unseen = imap_status($a, "{".$ip.":993/imap/ssl/novalidate-cert}INBOX", SA_UNSEEN);
$count=$unseen->unseen;
$response = new Response(json_encode($count));
}
else
$response = new Response(json_encode(""));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}

View File

@ -6,11 +6,3 @@ cas_sp.logout:
path: /logout
defaults: { _controller: CadolesCASBundle:Security:logout }
cas_sp.test:
path: /test
defaults: { _controller: CadolesCASBundle:Security:test }
cas_sp.imapunread:
path: /imapunread
defaults: { _controller: CadolesCASBundle:Security:imapunread }

View File

@ -1,35 +0,0 @@
{% extends '@CadolesCore/base.html.twig' %}
{% block pagewrapper %}
<h1>TEST SSO</h1>
<h2>Atttribut SSO</h2>
{% for key, attribute in attributes %}
{% if attribute is iterable %}
{% for value in attribute %}
<strong>{{ key }}</strong> = {{ value }}<br>
{% endfor %}
{% else %}
<strong>{{ key }}</strong> = {{ attribute }}<br>
{% endif %}
{% endfor %}
<h2>Correspondance Utilisateur Ninegate</h2>
<strong>username</strong> = {{ user.username }}<br>
<strong>firstname</strong> = {{ user.firstname }}<br>
<strong>lastname</strong> = {{ user.lastname }}<br>
<strong>email</strong> = {{ user.email }}<br>
<h2>Appartient au Niveau 01</h2>
<strong>{{ niveau01.label }}</strong> = {{ niveau01.attributes }}
<h2>Appartient aux Groupes</h2>
{% for usergroup in user.groups %}
{% if not usergroup.group.attributes is empty %}
<strong>{{usergroup.group.label}}</strong> = {{usergroup.group.attributes}}<br>
{% endif %}
{% endfor %}
<br><br><br><br><br><br><br>
{% endblock %}

View File

@ -5,14 +5,14 @@ use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
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 Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Id\AssignedGenerator;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Cadoles\CoreBundle\Entity\Group;
use Cadoles\CoreBundle\Entity\UserGroup;
use Cadoles\CoreBundle\Entity\PermModoProfil;
use Cadoles\CoreBundle\Entity\PermModo;
class InitDataCommand extends ContainerAwareCommand
{
@ -38,7 +38,6 @@ class InitDataCommand extends ContainerAwareCommand
$em = $this->getContainer()->get('doctrine')->getEntityManager();
$masteridentity=$this->getContainer()->getParameter('masteridentity');
$ldap_template = $this->getContainer()->getParameter('ldap_template');
$finder = new Finder();
$finder->in('src/Cadoles/CoreBundle/Command/data');
@ -50,7 +49,7 @@ class InitDataCommand extends ContainerAwareCommand
$content = $file->getContents();
$stmt = $em->getConnection()->prepare($content);
$stmt->execute();
$stmt->execute();
}
// Init 02 = ce qui est toujours le cas
@ -86,16 +85,6 @@ class InitDataCommand extends ContainerAwareCommand
}
$stmt->closeCursor();
// On s'assure que l'admin à un password et sinon on l'init à la valeur du genconfig
$user=$em->getRepository('CadolesCoreBundle:User')->findOneBy(['username'=>'admin']);
if($user&&empty($user->getPassword())) {
$initpwdadmin=$this->getContainer()->getParameter('initpwdadmin');
$output->writeln(' > Initialisation passsword admin / '.$initpwdadmin.' : pensez à modfier votre password après connexion');
$user->setPassword($initpwdadmin);
$em->persist($user);
$em->flush();
}
// On s'assure que le groupe 'Tout le Monde' existe
$group=$em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgall'=>true));
if (!$group) {
@ -109,7 +98,6 @@ class InitDataCommand extends ContainerAwareCommand
$group->setFgcancreatepage(true);
$group->setFgcancreateblog(true);
$group->setFgcancreatecalendar(true);
$group->setFgcancreateproject(true);
$em->persist($group);
$em->flush();
}
@ -138,7 +126,6 @@ class InitDataCommand extends ContainerAwareCommand
$usergroup->setUser($user);
$usergroup->setGroup($group);
$usergroup->setKeyvalue($key);
$usergroup->setRolegroup(0);
$em->persist($usergroup);
$em->flush();
$em->clear();
@ -151,122 +138,12 @@ class InitDataCommand extends ContainerAwareCommand
if(!$niveau01) {
// Si ce n'est pas le cas on positionne un filtre ultra large sur le niveau01 de base
$niveau01=$group=$em->getRepository('CadolesCoreBundle:Niveau01')->find(-100);
if($ldap_template=="scribe")
$niveau01->setLdapfilter("(&(uid=*)(objectclass=inetOrgPerson)(!(description=Computer)))");
else
$niveau01->setLdapfilter($this->getContainer()->getParameter('openldapreqniveau01'));
$niveau01->setLdapfilter("(uid=*)");
$em->persist($niveau01);
$em->flush();
}
}
// On s'assure si masteridentity est à SSO qu'au minimum un niveau01 possède un attribut
if($masteridentity=="SSO") {
$niveau01=$em->createQueryBuilder()->select('n')->from('CadolesCoreBundle:Niveau01','n')->where('n.attributes IS NOT NULL')->getQuery()->getResult();
if(!$niveau01) {
// Si ce n'est pas le cas on positionne un attribut ultra large sur le niveau01 de base
$niveau01=$group=$em->getRepository('CadolesCoreBundle:Niveau01')->find(-100);
$niveau01->setAttributes('{"username":"*"}');
$em->persist($niveau01);
$em->flush();
}
}
// Génération du profils de permissions modérateurs
$metadata = $em->getClassMetaData('CadolesCoreBundle:PermModoProfil');
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
$metadata->setIdGenerator(new AssignedGenerator());
$entityprofil = $em->getRepository('CadolesCoreBundle:PermModoProfil')->find(-100);
if(!$entityprofil) {
$entityprofil = new PermModoProfil();
$entityprofil->setId(-100);
$entityprofil->setName("Global");
$em->persist($entityprofil);
$em->flush();
}
// Affecter les permissions modérateurs sans profils sur le profils par défaut
$entitys = $em->getRepository('CadolesCoreBundle:PermModo')->findBy(["permmodoprofil"=>null]);
foreach($entitys as $entity) {
$entity->setPermmodoprofil($entityprofil);
$em->persist($entity);
$em->flush();
}
// Affecter le profil modérateur par défaut aux modérateurs qui n'en ont pas
$users = $em->getRepository('CadolesCoreBundle:User')->findBy(["role"=>"ROLE_MODO","permmodoprofil"=>null]);
foreach($users as $user) {
$user->setPermmodoprofil($entityprofil);
$em->persist($user);
$em->flush();
}
// Initialiser l'ensemble des profils modérateurs
$entityprofils = $em->getRepository('CadolesCoreBundle:PermModoProfil')->findAll();
foreach($entityprofils as $profil) {
$this->addModeration($profil,'cadoles_core_config_commun',0);
$this->addModeration($profil,'cadoles_core_config_theme',0);
$this->addModeration($profil,'cadoles_core_config_datauser',0);
$this->addModeration($profil,'cadoles_core_config_datausers',0);
$this->addModeration($profil,'cadoles_core_config_whitelist',0);
$this->addModeration($profil,'cadoles_core_config_niveau01',1);
$this->addModeration($profil,'cadoles_core_config_niveau02',1);
$this->addModeration($profil,'cadoles_core_config_group',1);
$this->addModeration($profil,'cadoles_core_config_registration',1);
$this->addModeration($profil,'cadoles_core_config_user',1);
$this->addModeration($profil,'cadoles_portal_config_pagetemplate',1);
$this->addModeration($profil,'cadoles_portal_config_page',1);
$this->addModeration($profil,'cadoles_portal_config_item',1);
$this->addModeration($profil,'cadoles_portal_config_alert',1);
$this->addModeration($profil,'cadoles_portal_config_calendar',1);
$this->addModeration($profil,'cadoles_portal_config_blog',1);
$this->addModeration($profil,'cadoles_portal_config_project',1);
$this->addModeration($profil,'cadoles_portal_config_flux',1);
$this->addModeration($profil,'cadoles_portal_config_notice',1);
$this->addModeration($profil,'cadoles_portal_config_icon',1);
$this->addModeration($profil,'cadoles_portal_config_syncbalado',0);
$this->addModeration($profil,'cadoles_portal_config_synccdt',0);
$this->addModeration($profil,'cadoles_portal_config_syncgepiannu',0);
$this->addModeration($profil,'cadoles_portal_config_syncgepisiecle',0);
$this->addModeration($profil,'cadoles_portal_config_synclimesurvey',0);
$this->addModeration($profil,'cadoles_portal_config_syncmoodle',0);
$this->addModeration($profil,'cadoles_portal_config_syncnextcloud',0);
$this->addModeration($profil,'cadoles_portal_config_syncsacoche',0);
$this->addModeration($profil,'cadoles_portal_config_syncpiwik',0);
$this->addModeration($profil,'cadoles_portal_config_syncwordpress',0);
$this->addModeration($profil,'cadoles_core_config_statistic',1);
$this->addModeration($profil,'cadoles_core_config_mailing',1);
$this->addModeration($profil,'cadoles_core_config_importuser',0);
$this->addModeration($profil,'cadoles_cron_config',0);
$this->addModeration($profil,'cadoles_cron_config_log',0);
}
// Forcer le theme
$force_theme=$this->getContainer()->getParameter('force_theme');
if($force_theme) {
// On force la configuration du theme
$force_themename=$this->getContainer()->getParameter('force_themename');
$config = $em->getRepository('CadolesCoreBundle:Config')->find("theme");
if($config) {
$config->setValue($force_themename);
$em->persist($config);
$em->flush();
}
// On enlève l'accès de la sidebar
$sidebar = $em->getRepository('CadolesCoreBundle:Sidebar')->findOneBy(["path"=>"cadoles_core_config_theme"]);
if($sidebar) {
$em->remove($sidebar);
$em->flush();
}
}
$output->writeln('');
}
@ -275,17 +152,4 @@ class InitDataCommand extends ContainerAwareCommand
$rootdir = rtrim(getcwd(), '/');
return $rootdir . '/' . trim($extra['symfony-app-dir'], '/');
}
protected function addModeration($profil,$route,$visible) {
$em = $this->getContainer()->get('doctrine')->getEntityManager();
$entity=$em->getRepository('CadolesCoreBundle:PermModo')->findOneBy(["route"=>$route,"permmodoprofil"=>$profil]);
if(!$entity) {
$entity=new PermModo();
$entity->setRoute($route);
$entity->setVisible($visible);
$entity->setPermmodoprofil($profil);
$em->persist($entity);
$em->flush();
}
}
}

View File

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

View File

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

View File

@ -1,343 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ConfirmationQuestion;
use Symfony\Component\Console\Input\ArrayInput;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\CoreBundle\Entity\Group;
use Cadoles\CoreBundle\Entity\UserGroup;
class ScribeToNinegateCommand extends Command
{
private $container;
private $em;
private $output;
private $connection;
private $host;
private $port;
private $pwd;
private $user;
protected function configure()
{
$this
->setName('Core:ScribeToNinegate')
->setDescription('Récupére un annuaire Scribe et le transforme en donnée Ninegate')
->setHelp('Récupére un annuaire Scribe et le transforme en donnée Ninegate')
->addArgument('host', InputArgument::REQUIRED, 'host du ldap scribe')
->addArgument('pwd', InputArgument::REQUIRED, 'pwd du compte cn=admin,o=gouv,c=fr')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->container = $this->getApplication()->getKernel()->getContainer();
$this->em = $this->container->get('doctrine')->getEntityManager();
$this->output = $output;
// Récupérer les parametres
$this->host = $input->getArgument('host');
$this->port = 389;
$this->pwd = $input->getArgument('pwd');
$this->user = "cn=reader,o=gouv,c=fr";
$ldap_basedn = $this->container->getParameter('ldap_basedn');
$ldap_username = $this->container->getParameter('ldap_username');
$ldap_firstname = $this->container->getParameter('ldap_firstname');
$ldap_lastname = $this->container->getParameter('ldap_lastname');
$ldap_email = $this->container->getParameter('ldap_email');
$ldap_usersadmin = $this->container->getParameter('ldap_usersadmin');
$fieldstoread = array($ldap_username,$ldap_firstname,$ldap_lastname,$ldap_email,"userPassword");
if(!$this->connect()) {
$this->writelnred("IMPOSSIBLE DE SE CONNECTER A L'ANNUAIRE SCRIBE");
return 0;
}
// On arrive à se connecter à l'annuaire du scribe
$this->writeln("CONNEXION A L'ANNUAIRE SCRIBE");
// Attention confirmation
$this->writeln('');
$this->writelnred('ATTENTION');
$this->writelnred('En confirmant vous allez totalement réinitialiser votre Ninegate');
$helper = $this->getHelper('question');
$question = new ConfirmationQuestion('Souhaitez-vous poursuivre (yes/no)?', false);
if (!$helper->ask($input, $output, $question)) {
return 0;
}
$this->writelnred('');
$this->writelnred('== PURGE');
$this->writelnred('PURGE DES CONFIG');
$this->purge('CadolesCoreBundle:Config');
$this->purge('CadolesCoreBundle:Script');
$this->purge('CadolesCoreBundle:Statistic');
$this->purge('CadolesCoreBundle:Whitelist');
$this->writelnred('PURGE DES ITEMS');
$this->purge('CadolesPortalBundle:Item');
$this->purge('CadolesPortalBundle:Itemcategory');
$this->writelnred('PURGE DES BOOKMARKS');
$this->purge('CadolesPortalBundle:Bookmark');
$this->writelnred('PURGE DES ALERTES');
$this->purge('CadolesPortalBundle:Alert');
$this->purge('CadolesPortalBundle:Alertcategory');
$this->writelnred('PURGE DES NOTICE');
$this->purge('CadolesPortalBundle:Notice');
$this->writelnred('PURGE DES CALENDAR');
$this->purge('CadolesPortalBundle:Calendar');
$this->writelnred('PURGE DES FLUX');
$this->purge('CadolesPortalBundle:Flux');
$this->writelnred('PURGE DES BLOG');
$this->purge('CadolesPortalBundle:Blog');
$this->writelnred('PURGE DES PROJECT');
$this->purge('CadolesPortalBundle:Project');
$this->writelnred('PURGE DES UTILISATEURS');
$this->purge('CadolesCoreBundle:User');
$this->writelnred('PURGE DES INSCRIPTIONS');
$this->purge('CadolesCoreBundle:Registration');
$this->writelnred('PURGE DES GROUPES');
$this->purge('CadolesCoreBundle:Group');
$this->writelnred('PURGE DES NIVEAU 02');
$this->purge('CadolesCoreBundle:Niveau02');
$this->writelnred('PURGE DES NIVEAU 01');
$this->purge('CadolesCoreBundle:Niveau01');
$this->writelnred('PURGE DES PAGES');
$this->purge('CadolesPortalBundle:Page');
$this->writelnred('PURGE DES ICONES');
$this->purge('CadolesPortalBundle:Icon');
$this->writeln('');
$this->writelnred('');
$this->writelnred('== INIT DATA');
$command = $this->getApplication()->find("Core:InitData");
$parameter = new ArrayInput([]);
$command->run($parameter, $output);
$command = $this->getApplication()->find("Cron:InitData");
$parameter = new ArrayInput([]);
$command->run($parameter, $output);
$command = $this->getApplication()->find("Portal:InitData");
$parameter = new ArrayInput([]);
$command->run($parameter, $output);
$command = $this->getApplication()->find("Core:Script");
$parameter = new ArrayInput([]);
$command->run($parameter, $output);
$this->writelnred('');
$this->writelnred('== USERS SCRIBE TO USERS NINEGATE');
$niveau01=$this->em->getRepository('CadolesCoreBundle:Niveau01')->find(-100);
$niveau01->setSiren("");
$this->em->persist($niveau01);
$this->em->flush();
$scribeusers = $this->search("(&(uid=*)(mail=*)(objectClass=person)(!(description=Computer)))", $fieldstoread, $ldap_basedn);
foreach($scribeusers as $scribeuser) {
if($scribeuser[$ldap_email]=="") {
$this->writelnred("Compte sans mail = ".$scribeuser[$ldap_username]." ".$scribeuser[$ldap_email]);
continue;
}
$user=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('email' => $scribeuser[$ldap_email]));
if($user&&$user->getUsername()!=$scribeuser[$ldap_username]) {
$this->writelnred("EMAIL en double = ".$scribeuser[$ldap_username]." ".$scribeuser[$ldap_email]);
continue;
}
$this->writeln($scribeuser[$ldap_username]." ".$scribeuser[$ldap_email]);
$user=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('username' => $scribeuser[$ldap_username]));
if(!$user) {
$user = new User();
$user->setUsername($scribeuser[$ldap_username]);
}
$user->setLastname($scribeuser[$ldap_lastname]);
$user->setFirstname($scribeuser[$ldap_firstname]);
$user->setEmail($scribeuser[$ldap_email]);
$user->setNiveau01($niveau01);
$user->setSiren($niveau01->getSiren());
$user->setPasswordDirect($scribeuser["userpassword"]);
$user->setSalt(uniqid(mt_rand(), true));
$user->setVisible(true);
$user->setAuthlevel("simple");
$user->setBelongingpopulation("agent");
if(in_array($scribeuser[$ldap_username],$ldap_usersadmin))
$user->setRole("ROLE_ADMIN");
else
$user->setRole("ROLE_USER");
$this->em->persist($user);
$this->em->flush();
}
$this->writelnred('');
$this->writelnred('== USERS SCRIBE TO USERS NINEGATE');
$scribegroups = $this->search("(objectClass=posixGroup)", ["cn","memberuid"], $ldap_basedn);
$exludgroupe=["DomainAdmins","DomainUsers","DomainComputers","PrintOperators","eleves","professeurs"];
foreach($scribegroups as $scribegroup) {
if(in_array($scribegroup["cn"],$exludgroupe)) continue;
$this->writeln($scribegroup["cn"]);
$group=$this->em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('label' => $scribegroup["cn"]));
if(!$group) {
$group = new Group();
$group->setLabel($scribegroup["cn"]);
}
$group->setFgcanshare(false);
$group->setFgcancreatepage(false);
$group->setFgcancreateblog(false);
$group->setFgcancreatecalendar(false);
$group->setFgcancreateproject(false);
$group->setFgopen(false);
$group->setFgall(false);
$group->setFgtemplate(false);
$this->em->persist($group);
$this->em->flush();
if(array_key_exists("memberuid",$scribegroup))
{
if(!is_array($scribegroup["memberuid"]))
$scribegroup["memberuid"] = [ $scribegroup["memberuid"] ];
}
else
$scribegroup["memberuid"] = [];
foreach($scribegroup["memberuid"] as $scribemember) {
$user=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('username' => $scribemember));
if($user) {
$member=$this->em->getRepository('CadolesCoreBundle:UserGroup')->findOneBy(array('group' => $group, 'user' => $user));
if(!$member) {
$member= new UserGroup();
$member->setGroup($group);
$member->setUser($user);
$member->setRolegroup(0);
$this->em->persist($member);
$this->em->flush();
}
}
}
}
return 1;
}
private function purge($entityname) {
// Si on purge les pages il faut d'abord purger les pages qui ne sont pas pagetemplate
if($entityname=="CadolesPortalBundle:Page") {
$qb=$this->em->createQueryBuilder();
$entitys = $qb->select('t')
->from($entityname,'t')
->where($qb->expr()->isNotNull('t.page'))
->getQuery()
->getResult();
foreach ($entitys as $entity) {
$this->em->remove($entity);
}
$this->em->flush();
}
$entitys=$this->em->getRepository($entityname)->findAll();
foreach ($entitys as $entity) {
$this->em->remove($entity);
}
$this->em->flush();
}
private function connect() {
if($this->connection){
return $this->connection;
} else {
$ldapConn = ldap_connect($this->host, $this->port);
if($ldapConn){
ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3);
if(ldap_bind( $ldapConn, $this->user, $this->pwd)){
$this->connection = $ldapConn;
return $this->connection;
}
}
}
}
public function search($filter, $attributes = array(), $subBranch = '') {
$connection = $this->connect();
$branch = ($subBranch ? $subBranch : $this->baseDN);
$result = ldap_search($connection, $branch, $filter, $attributes,0,0,0);
if(!$result) {
$this->ldapError();
}
return $this->resultToArray($result);
}
private function resultToArray($result){
$connection = $this->connect();
$resultArray = array();
if($result){
$entry = ldap_first_entry($connection, $result);
while ($entry){
$row = array();
$attr = ldap_first_attribute($connection, $entry);
while ($attr){
$val = ldap_get_values_len($connection, $entry, $attr);
if(array_key_exists('count', $val) AND $val['count'] == 1){
$row[strtolower($attr)] = $val[0];
} else {
$row[strtolower($attr)] = $val;
}
$attr = ldap_next_attribute($connection, $entry);
}
$resultArray[] = $row;
$entry = ldap_next_entry($connection, $entry);
}
}
return $resultArray;
}
public function ldapError(){
$connection = $this->connect();
throw new \Exception(
'Error: ('. ldap_errno($connection) .') '. ldap_error($connection)
);
}
private function writelnred($string) {
$this->output->writeln('<fg=red>'.$string.'</>');
}
private function writeln($string) {
$this->output->writeln($string);
}
}

View File

@ -1,583 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpKernel\KernelInterface;
use Doctrine\DBAL\Connection as DBALConnection;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Id\AssignedGenerator;
use Cadoles\CoreBundle\Entity\Script;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\PortalBundle\Entity\Project;
use Cadoles\PortalBundle\Entity\Pagewidget;
global $bdd01;
global $config;
class ScriptCommand extends Command
{
private $container;
private $em;
private $output;
private $filesystem;
private $rootlog;
protected function configure()
{
$this
->setName('Core:Script')
->setDescription('Lauch Script')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->container = $this->getApplication()->getKernel()->getContainer();
$this->em = $this->container->get('doctrine')->getEntityManager();
$this->output = $output;
$this->filesystem = new Filesystem();
$this->rootlog = $this->container->get('kernel')->getRootDir()."/../var/logs/";
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"visibletrue"]);
if(!$script) {
$this->writeln("== SCRIPT = visibletrue");
$this->visibletrue();
$script=new Script();
$script->setName("visibletrue");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"setusersniveau"]);
if(!$script) {
$this->writeln("== SCRIPT = setusersniveau");
$this->setusersniveau();
$script=new Script();
$script->setName("setusersniveau");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"setfgcancreateproject"]);
if(!$script) {
$this->writeln("== SCRIPT = setfgcancreateproject");
$this->setfgcancreateproject();
$script=new Script();
$script->setName("setfgcancreateproject");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"createproject"]);
if(!$script) {
$this->writeln("== SCRIPT = createproject");
$this->createproject();
$script=new Script();
$script->setName("createproject");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"createthumbmini"]);
if(!$script) {
$this->writeln("== SCRIPT = createthumbmini");
$this->createthumbmini();
$script=new Script();
$script->setName("createthumbmini");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"createwidgetproject"]);
if(!$script) {
$this->writeln("== SCRIPT = createwidgetproject");
$this->createwidgetproject();
$script=new Script();
$script->setName("createwidgetproject");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"renamegroup"]);
if(!$script) {
$this->writeln("== SCRIPT = renamegroup");
$this->renamegroup();
$script=new Script();
$script->setName("renamegroup");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"rolegroup"]);
if(!$script) {
$this->writeln("== SCRIPT = rolegroup");
$this->rolegroup();
$script=new Script();
$script->setName("rolegroup");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"userdefaultmissing"]);
if(!$script) {
$this->writeln("== SCRIPT = userdefaultmissing");
$this->userdefaultmissing();
$script=new Script();
$script->setName("userdefaultmissing");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"updateorthographe01"]);
if(!$script) {
$this->writeln("== SCRIPT = updateorthographe01");
$this->updateorthographe01();
$script=new Script();
$script->setName("updateorthographe01");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"updateorthographe02"]);
if(!$script) {
$this->writeln("== SCRIPT = updateorthographe02");
$this->updateorthographe02();
$script=new Script();
$script->setName("updateorthographe02");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
if($this->container->getParameter('ldap_template')=="scribe") {
$script=$this->em->getRepository("CadolesCoreBundle:Script")->findOneBy(["name"=>"purgepageprofil"]);
if(!$script) {
$this->writeln("== SCRIPT = purgepageprofil");
$this->purgepageprofil();
$script=new Script();
$script->setName("purgepageprofil");
$this->em->persist($script);
$this->em->flush();
$this->writeln("");
}
}
return 1;
}
private function visibletrue() {
$users = $this->em->getRepository('CadolesCoreBundle:User')->findAll();
foreach($users as $user) {
if(!$user->getVisible()) {
$this->writeln($user->getUsername());
$user->setVisible(true);
$this->em->persist($user);
$this->em->flush();
}
}
}
private function setusersniveau() {
$users = $this->em->getRepository('CadolesCoreBundle:User')->findAll();
foreach($users as $user) {
$this->writeln($user->getUsername());
$user->setLabelniveau01($user->getNiveau01()->getLabel());
$user->setLabelniveau02(($user->getNiveau02()?$user->getNiveau02()->getLabel():null));
$this->em->persist($user);
$this->em->flush();
}
}
private function setfgcancreateproject() {
$group=$this->em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgall'=>true));
if ($group) {
$group->setFgcancreateproject(true);
$this->em->persist($group);
$this->em->flush();
}
}
private function createproject() {
$groups=$this->em->getRepository('CadolesCoreBundle:Group')->findBy(array('fgcanshare'=>true));
foreach($groups as $group) {
// On regarde s'il a au moins un project
if($group->getProjects()->isEmpty()) {
$project=new Project();
$project->setName($group->getLabel());
$project->addGroup($group);
$project->setUser($group->getOwner());
$this->em->persist($project);
$this->em->flush();
}
}
}
private function createthumbmini() {
$directory=$this->container->get('kernel')->getRootDir()."/../uploads/file";
$files=[];
$fs = new Filesystem();
if($fs->exists($directory)) {
$finder = new Finder();
$finder->in($directory)->directories()->exclude("thumb")->exclude("thumbmini");
foreach (iterator_to_array($finder) as $rep) {
$finder2 = new Finder();
if($fs->exists($rep."/thumb")) {
$finder2->sortByName()->in($rep."/thumb");
foreach ($finder2 as $file) {
if(!$fs->exists($rep."/thumbmini/".$file->getRelativePathname())) {
$this->writeln($file->getRelativePathname());
$fs->mkdir($rep."/thumbmini");
$fs->copy($rep."/thumb/".$file->getRelativePathname(),$rep."/thumbmini/".$file->getRelativePathname());
$max_width=60;
$width = $this->getWidth($rep."/thumbmini/".$file->getRelativePathname());
$height = $this->getHeight($rep."/thumbmini/".$file->getRelativePathname());
$scale = $max_width/$width;
$this->resizeImage($rep."/thumbmini/".$file->getRelativePathname(),$width,$height,$scale);
$fs->chown($rep."/thumbmini/".$file->getRelativePathname(), 'www-data');
}
}
}
}
}
}
private function createwidgetproject(){
$entityPage = $this->em->getRepository('CadolesPortalBundle:Page')->find(-110);
if($entityPage) {
$fields=["fields"=>[]];
$metadata = $this->em->getClassMetaData('CadolesPortalBundle:Pagewidget');
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_AUTO);
$pages=$this->em->getRepository('CadolesPortalBundle:Page')->findBy(["page"=>$entityPage]);
foreach($pages as $page) {
$this->addWidget2Page($page,-1800,"R1C1",1,"Taches du groupe",true,$fields);
}
$metadata = $this->em->getClassMetaData('CadolesPortalBundle:Pagewidget');
$metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE);
$metadata->setIdGenerator(new AssignedGenerator());
$this->addWidget(-145,$entityPage,-1800,"R1C1",1,"Taches du groupe",true,$fields);
}
}
private function renamegroup(){
$groups = $this->em->getRepository('CadolesCoreBundle:Group')->findAll();
foreach($groups as $group) {
// Si présence d'un = dans le label
if(stripos($group->getLabel(),"=")!==false) {
$newname=str_replace("=","-",$group->getLabel());
$this->writeln("Renommer groupe = ".$group->getLabel());
// Renommer les pages
$pages = $this->em->getRepository('CadolesPortalBundle:Page')->findBy(["name"=>$group->getLabel()]);
foreach($pages as $page) {
$page->setName($newname);
$this->em->persist($page);
$this->em->flush();
}
// Renommer calendrier
$calendars = $this->em->getRepository('CadolesPortalBundle:Calendar')->findBy(["name"=>$group->getLabel()]);
foreach($calendars as $calendar) {
$calendar->setName($newname);
$this->em->persist($calendar);
$this->em->flush();
}
// Renommer blog
$blogs = $this->em->getRepository('CadolesPortalBundle:Blog')->findBy(["name"=>$group->getLabel()]);
foreach($blogs as $blog) {
$blog->setName($newname);
$this->em->persist($blog);
$this->em->flush();
}
// Renommer projet
$projects = $this->em->getRepository('CadolesPortalBundle:Project')->findBy(["name"=>$group->getLabel()]);
foreach($projects as $project) {
$project->setName($newname);
$this->em->persist($project);
$this->em->flush();
}
$group->setLabel($newname);
$this->em->persist($group);
$this->em->flush();
}
}
}
private function rolegroup(){
$usergroups = $this->em->getRepository('CadolesCoreBundle:UserGroup')->findAll();
foreach($usergroups as $usergroup) {
if(!$usergroup->getRolegroup()) {
$role=0;
if($usergroup->getFgmanager()) {
$role=50;
if($usergroup->getUser()==$usergroup->getGroup()->getOwner()) $role=100;
}
$usergroup->setRolegroup($role);
$this->em->persist($usergroup);
$this->em->flush();
}
}
}
private function userdefaultmissing(){
$users = $this->em->getRepository('CadolesCoreBundle:User')->findAll();
foreach($users as $user) {
if($user->getVisible()=="") {
$user->setVisible(true);
$this->em->persist($user);
$this->em->flush();
}
if($user->getAuthlevel()=="") {
$user->setAuthlevel("simple");
$this->em->persist($user);
$this->em->flush();
}
if($user->getBelongingpopulation()=="") {
$user->setBelongingpopulation("agent");
$this->em->persist($user);
$this->em->flush();
}
}
}
private function updateorthographe01(){
$config=$this->em->getRepository('CadolesCoreBundle:Config')->find("fgforceconnect");
if($config) {
$config->setHelp("Forcer la connexion afin de rendre votre site privé");
$this->em->persist($config);
$this->em->flush();
}
$config=$this->em->getRepository('CadolesCoreBundle:Config')->find("fontfacebody");
if($config) {
$config->setHelp("Police générale de votre site");
$this->em->persist($config);
$this->em->flush();
}
$config=$this->em->getRepository('CadolesCoreBundle:Config')->find("permgroup");
if($config) {
$config->setHelp("Détermine quel rôle aura la permission de créer des groupes de travail");
$this->em->persist($config);
$this->em->flush();
}
$config=$this->em->getRepository('CadolesCoreBundle:Config')->find("permannu");
if($config) {
$config->setHelp("Détermine quel rôle aura la permission de voir l'annuaire");
$this->em->persist($config);
$this->em->flush();
}
$config=$this->em->getRepository('CadolesCoreBundle:Config')->find("labelbookmarkuser");
if($config) {
$config->setHelp("Titre de la section des items créés par l'utilisateur, et qui ne sont listés que dans cette section.");
$this->em->persist($config);
$this->em->flush();
}
$config=$this->em->getRepository('CadolesCoreBundle:Config')->find("labelbookmarkitem");
if($config) {
$config->setHelp("Titre sur la section des items créés par l'administrateur ou le modérateur, mis à la disposition de l'utilisateur, et sélectionnés par ce dernier pour apparaitre dans cette section plutôt que dans leur catégorie d'origine.");
$this->em->persist($config);
$this->em->flush();
}
}
private function updateorthographe02(){
$entityItem = $this->em->getRepository('CadolesPortalBundle:Item')->find(-398);
if($entityItem) {
if($entityItem->getSubtitle()!="Messagerie") {
$entityItem->setSubtitle("Messagerie");
$entityItem->setContent("Messagerie permettant la communication sécurisée par méls. La messagerie na pas pour but denvoyer des gros fichiers mais plutôt de communiquer des informations, des liens.");
$this->em->persist($entityItem);
$this->em->flush();
}
}
}
private function purgepageprofil() {
$page=$this->em->getRepository('CadolesPortalBundle:Page')->findOneBy(['name'=>'PROFIL - Enseignants']);
if($page) {
$this->em->remove($page);
$this->em->flush();
}
$page=$this->em->getRepository('CadolesPortalBundle:Page')->findOneBy(['name'=>'PROFIL - Administratifs']);
if($page) {
$this->em->remove($page);
$this->em->flush();
}
}
private function writelnred($string) {
$this->output->writeln('<fg=red>'.$string.'</>');
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
}
private function writeln($string) {
$this->output->writeln($string);
$this->filesystem->appendToFile($this->rootlog.'cron.log', $string."\n");
}
protected function getHeight($image) {
$size = getimagesize($image);
$height = $size[1];
return $height;
}
// Cacul de la largeur
protected function getWidth($image) {
$size = getimagesize($image);
$width = $size[0];
return $width;
}
protected function resizeImage($image,$width,$height,$scale) {
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
$newImage = imagecreatetruecolor( $newImageWidth, $newImageHeight );
imagealphablending( $newImage, false );
imagesavealpha( $newImage, true );
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
switch($imageType) {
case "image/gif":
imagegif($newImage,$image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$image,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$image);
break;
}
chmod($image, 0640);
return $image;
}
private function addWidget($id,$entityPage,$widgetid,$loc,$order,$title,$border,$fields) {
$entityPagewidget = $this->em->getRepository('CadolesPortalBundle:Pagewidget')->find($id);
if(!$entityPagewidget) {
$entityWidget = $this->em->getRepository('CadolesPortalBundle:Widget')->find($widgetid);
if($entityWidget) {
$entityPagewidget = new Pagewidget();
$entityPagewidget->setId($id);
$entityPagewidget->setLoc($loc);
$entityPagewidget->setRoworder($order);
$entityPagewidget->setName($title);
$entityPagewidget->setHeight($entityWidget->getHeight());
$entityPagewidget->setAutoajust($entityWidget->getAutoajust());
$entityPagewidget->setBorder($border);
$entityPagewidget->setOpened($entityWidget->getOpened());
$entityPagewidget->setIcon($entityWidget->getIcon());
$entityPagewidget->setPage($entityPage);
$entityPagewidget->setWidget($entityWidget);
$entityPagewidget->setParameter($fields);
$this->em->persist($entityPagewidget);
$this->em->flush();
}
}
}
private function addWidget2Page($entityPage,$widgetid,$loc,$order,$title,$border,$fields) {
$entityWidget = $this->em->getRepository('CadolesPortalBundle:Widget')->find($widgetid);
if($entityWidget) {
$entityPagewidget = $this->em->getRepository('CadolesPortalBundle:Pagewidget')->findOneBy(["page"=>$entityPage,"widget"=>$entityWidget]);
if(!$entityPagewidget) {
$entityPagewidget = new Pagewidget();
$entityPagewidget->setLoc($loc);
$entityPagewidget->setRoworder($order);
$entityPagewidget->setName($title);
$entityPagewidget->setHeight($entityWidget->getHeight());
$entityPagewidget->setAutoajust($entityWidget->getAutoajust());
$entityPagewidget->setBorder($border);
$entityPagewidget->setOpened($entityWidget->getOpened());
$entityPagewidget->setIcon($entityWidget->getIcon());
$entityPagewidget->setPage($entityPage);
$entityPagewidget->setWidget($entityWidget);
$entityPagewidget->setParameter($fields);
$this->em->persist($entityPagewidget);
$this->em->flush();
}
}
}
}

View File

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

View File

@ -18,7 +18,6 @@ use Cadoles\CoreBundle\Entity\Group;
use Cadoles\CoreBundle\Entity\UserGroup;
use Cadoles\PortalBundle\Entity\Calendar;
use Cadoles\PortalBundle\Entity\Blog;
use Cadoles\PortalBundle\Entity\Project;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
@ -36,8 +35,6 @@ class SynchroCommand extends Command
private $rootlog;
private $ldap;
private $ldap_basedn;
private $ldap_baseuser;
private $ldap_basegroup;
protected function configure()
{
@ -68,25 +65,6 @@ class SynchroCommand extends Command
$labelniveau02 = mb_strtoupper($this->container->getParameter('labelniveau02'));
$masteridentity = $this->container->getParameter('masteridentity');
$this->ldap_basedn = $this->container->getParameter('ldap_basedn');
$this->ldap_baseuser = $this->container->getParameter('ldap_baseuser');
$this->ldap_basegroup = $this->container->getParameter('ldap_basegroup');
$ldap_username = strtolower($this->container->getParameter('ldap_username'));
$ldap_firstname = strtolower($this->container->getParameter('ldap_firstname'));
$ldap_lastname = strtolower($this->container->getParameter('ldap_lastname'));
$ldap_email = strtolower($this->container->getParameter('ldap_email'));
$ldap_member = strtolower($this->container->getParameter('ldap_member'));
$scribe_group = strtolower($this->container->getParameter('scribe_group'));
$ldap_type = $this->container->getParameter('ldap_type');
$ldap_template = $this->container->getParameter('ldap_template');
$ldap_usersadmin = $this->container->getParameter('ldap_usersadmin');
$scribe_master = strtolower($this->container->getParameter('scribe_master'));
$fieldstoread = array($ldap_username,$ldap_firstname,$ldap_lastname,$ldap_email);
$ldapusers = array();
$ldapmails = array();
$simulate = $input->getArgument('simulate');
if($simulate=="") $simulate="true";
@ -114,48 +92,46 @@ class SynchroCommand extends Command
$this->writeln('== SYNCHONISATION LDAP TO BUNDLE ====================');
$this->writeln('=====================================================');
$this->ldap_basedn = $this->container->getParameter('ldap_basedn');
$ldap_template = $this->container->getParameter('ldap_template');
$ldap_username = $this->container->getParameter('ldap_username');
$ldap_firstname = $this->container->getParameter('ldap_firstname');
$ldap_lastname = $this->container->getParameter('ldap_lastname');
$ldap_email = $this->container->getParameter('ldap_email');
$ldap_usersadmin = $this->container->getParameter('ldap_usersadmin');
$fieldstoread = array($ldap_username,$ldap_firstname,$ldap_lastname,$ldap_email);
$ldapusers = array();
$ldapmails = array();
if($ldap_template=="scribe") {
$this->writeln('');
$this->writeln('== PROFILS ==========================================');
// Eleves
$ldapfilter="(&(uid=*)(ENTPersonProfils=eleve))";
$label="PROFIL - Elèves";
$label="PROFIL = Elèves";
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
// Enseignants
$ldapfilter="(|(&(uid=*)(ENTPersonProfils=enseignant))(&(uid=*)(typeadmin=0))(&(uid=*)(typeadmin=2)))";
$label="PROFIL - Enseignants";
$label="PROFIL = Enseignants";
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
// Responsables
$ldapfilter="(&(uid=*)(ENTPersonProfils=responsable))";
$label="PROFIL - Responsables";
$label="PROFIL = Responsables";
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
// Administratifs
$ldapfilter="(&(uid=*)(ENTPersonProfils=administratif))";
$label="PROFIL - Administratifs";
$label="PROFIL = Administratifs";
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
// Niveaux
$this->writeln('');
$this->writeln('== NIVEAUX ==========================================');
$results = $this->ldap->search("type=Niveau", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(&(type=Niveau)(cn=$cn))";
$label="NIVEAU - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
}
// Classes
$this->writeln('');
$this->writeln('== CLASSES ==========================================');
$results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
@ -163,77 +139,9 @@ class SynchroCommand extends Command
$cn=$result["cn"];
$ldapfilter="(|(&(type=Classe)(cn=$cn))(&(type=Equipe)(cn=profs-$cn))(&(ENTPersonProfils=Administratif)(divcod=$cn)))";
$label="CLASSE - ".$result["cn"];
$label="CLASSE = ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
}
// Elèves des Classes
$this->writeln('');
$this->writeln('== ELEVES DES CLASSES ==========================================');
$results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(&(type=Classe)(cn=$cn))";
$label="ELEVES - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
}
// Professeurs des Classes
$this->writeln('');
$this->writeln('== PROFESSEURS DES CLASSES ==========================================');
$results = $this->ldap->search("type=Classe", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(|(&(type=Equipe)(cn=profs-$cn))(&(ENTPersonProfils=Administratif)(divcod=$cn)))";
$label="PROFESSEURS - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
}
// Options
$this->writeln('');
$this->writeln('== OPTIONS ==========================================');
$results = $this->ldap->search("type=Option", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(|(&(type=Option)(cn=$cn))(&(type=Equipe)(cn=profs-$cn))(&(ENTPersonProfils=Administratif)(divcod=$cn)))";
$label="OPTION - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
}
// Groupes
$this->writeln('');
$this->writeln('== GROUPES ==========================================');
$results = $this->ldap->search("type=Groupe", ['cn','description','gidNumber'], $this->ldap_basedn);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(&(type=Groupe)(cn=$cn))";
$label="GROUPE - ".$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,$scribe_group);
}
}
elseif($ldap_template=="open") {
if($this->container->getParameter('openldapsynchrogroup')) {
$this->writeln('');
$this->writeln('== GROUPES ==========================================');
$results = $this->ldap->search($this->container->getParameter('openldapreqgroup'), ['cn','description','gidNumber'], $this->ldap_basegroup);
foreach($results as $result) {
$cn=$result["cn"];
$ldapfilter="(&".$this->container->getParameter('openldapreqgroup')."(cn=$cn))";
$label=$result["cn"];
$this->writeln(" - $label");
if(!$simulate) $this->addmodGroup($label,$ldapfilter,false);
}
if(!$simulate) $this->addmodGroup($label,$ldapfilter,true);
}
}
@ -255,7 +163,7 @@ class SynchroCommand extends Command
// On execute le filtre d'appartenance à ce niveau
$this->writeln("== Récupération des utilisateurs de l'annuaire");
$niveau01=$this->em->getRepository('CadolesCoreBundle:Niveau01')->find($data["id"]);
$results = $this->ldap->search($niveau01->getLdapfilter(), $fieldstoread, $this->ldap_baseuser);
$results = $this->ldap->search($niveau01->getLdapfilter(), $fieldstoread, $this->ldap_basedn);
$nbuserstotal=count($results);
// Pour chaque utilisateur ldap
@ -275,10 +183,6 @@ class SynchroCommand extends Command
$result[$ldap_username]=utf8_encode($result[$ldap_username]);
if(!isset($result[$ldap_lastname])) $result[$ldap_lastname] = "";
if(!isset($result[$ldap_firstname])) $result[$ldap_firstname] = "";
if(!array_key_exists($ldap_email,$result)||empty($result[$ldap_email])) {
$result[$ldap_email]=$result[$ldap_username]."@nomail.fr";
}
$result[$ldap_email]=strtolower($result[$ldap_email]);
$result[$ldap_email]=utf8_encode($result[$ldap_email]);
@ -311,8 +215,7 @@ class SynchroCommand extends Command
if($user->getLastname()!=$result[$ldap_lastname]||$user->getFirstname()!=$result[$ldap_firstname]||$user->getEmail()!=$result[$ldap_email]||$toadmin) {
$usermail=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('email' => $result[$ldap_email]));
if($usermail&&$usermail!=$user) {
if($usermail!=$user) {
array_push($tberrors," - Modification dans Bundle impossible >> ".$result[$ldap_username]." un autre utilisateur a déjà ce mail = ".$result[$ldap_email]);
}
else {
@ -352,29 +255,18 @@ class SynchroCommand extends Command
$this->writeln('== '.$group->getLabel());
if(!is_null($ldapfilter)) {
$results = $this->ldap->search($ldapfilter,[$ldap_username,$ldap_member] , $this->ldap_basedn);
$results = $this->ldap->search($ldapfilter,[$ldap_username,"memberuid"] , $this->ldap_basedn);
foreach($results as $result) {
if(isset($result[$ldap_member])) {
if(isset($result["memberuid"])) {
// Si memberid est un tableau il y a plusieur user dedans
if(is_array($result[$ldap_member])) {
foreach($result[$ldap_member] as $key => $value) {
if(is_array($result["memberuid"])) {
foreach($result["memberuid"] as $key => $value) {
if(is_int($key)) {
$username=$value;
// si le username forme un DN, il faut récupérer juste la première entrée
$tmp=explode(",",$username);
if(is_array($tmp)&&count($tmp)>1) {
$tmp=explode("=",$tmp[0]);
$username=$tmp[1];
}
$user=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('username' => $username));
$user=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('username' => $value));
if($user) {
array_push($ldapusersgroup,$username);
$this->writeln(" - Rattacher >> ".$username);
array_push($ldapusersgroup,$value);
$this->writeln(" - Rattacher >> ".$value);
if(!$simulate) $this->addtoGroup($user,$group);
}
}
@ -382,19 +274,10 @@ class SynchroCommand extends Command
}
// sinon m'a qu'un seul uid
else {
$username=$result[$ldap_member];
// si le username forme un DN, il faut récupérer juste la première entrée
$tmp=explode(",",$username);
if(is_array($tmp)&&count($tmp)>1) {
$tmp=explode("=",$tmp[0]);
$username=$tmp[1];
}
$user=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('username' => $username));
$user=$this->em->getRepository('CadolesCoreBundle:User')->findOneBy(array('username' => $result["memberuid"]));
if($user) {
array_push($ldapusersgroup,$username);
$this->writeln(" - Rattacher >> ".$username);
array_push($ldapusersgroup,$result["memberuid"]);
$this->writeln(" - Rattacher >> ".$result["memberuid"]);
if(!$simulate) $this->addtoGroup($user,$group);
}
}
@ -465,62 +348,6 @@ class SynchroCommand extends Command
$this->em->clear();
if($nbusers%1000==0) $this->writelnred(" == Nombre d'utilisateurs traités = $nbusers==");
}
$this->writeln('');
$this->writeln('== GROUPS ============================================');
// Pour chaque groupe annuaire on s'assure que le groupe existe bien dans l'annuaire
$groups=$this->em->getRepository('CadolesCoreBundle:Group')->findBy(["fgtemplate"=>true]);
foreach($groups as $group) {
if(stripos($group->getLabel(),"PROFIL - ")===false) {
$results = $this->ldap->search($group->getLdapfilter(), [], $this->ldap_basedn);
if(count($results)==0) {
$this->writeln(" - Suppression dans Bundle >> ".$group->getLabel());
if(!$simulate) {
if($group->getFgcanshare()) {
// Sur l'ensemble des pages liés
$pages=$group->getPages();
foreach($pages as $page) {
$getgroups=$page->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($getgroups->count()==1)
$this->em->remove($page);
}
// Sur l'ensemble des calendar liés
$calendars=$group->getCalendars();
foreach($calendars as $calendar) {
$getgroups=$calendar->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($getgroups->count()==1)
$this->em->remove($calendar);
}
// Sur l'ensemble des blog liés
$blogs=$group->getBlogs();
foreach($blogs as $blog) {
$getgroups=$blog->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($getgroups->count()==1)
$this->em->remove($blog);
}
// Sur l'ensemble des project liés
$projects=$group->getProjects();
foreach($projects as $project) {
$getgroups=$project->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($getgroups->count()==1)
$this->em->remove($project);
}
}
$this->em->remove($group);
$this->em->flush();
}
}
}
}
}
}
else {
@ -547,7 +374,7 @@ class SynchroCommand extends Command
// Mise à jour si elle existe
if(count($results) > 0) {
$this->writeln(' - Modification dans annuaire >> '.$data->getLabel());
if(!$simulate) $this->ldap->modifyNiveau01($data,$data->getLabel(),$results[0]["cn"]);
if(!$simulate) $this->ldap->modifyNiveau01($data,$data->getLabel());
}
// Sinon création de la fiche
else {
@ -574,7 +401,7 @@ class SynchroCommand extends Command
// Mise à jour si elle existe
if(count($results) > 0) {
$this->writeln(' - Modification dans annuaire >> '.$data->getLabel());
if(!$simulate) $this->ldap->modifyNiveau02($data,$data->getLabel(),$results[0]["cn"]);
if(!$simulate) $this->ldap->modifyNiveau02($data,$data->getLabel());
}
// Sinon création de la fiche
else {
@ -601,7 +428,7 @@ class SynchroCommand extends Command
// Mise à jour si elle existe
if(count($results) > 0) {
$this->writeln(' - Modification dans annuaire >> '.$data->getLabel());
if(!$simulate) $this->ldap->modifyGroup($data,$data->getLabel(),$results[0]["cn"]);
if(!$simulate) $this->ldap->modifyGroup($data,$data->getLabel());
}
// Sinon création de la fiche
else {
@ -621,9 +448,9 @@ class SynchroCommand extends Command
->getQuery()
->getResult();
foreach($datas as $data) {
$criteria = '('.$ldap_username.'='.$data->getUsername().')';
$criteria = '(uid='.$data->getUsername().')';
$subbranch=$baseUser;
$results = $this->ldap->search($criteria, array($ldap_username), $subbranch);
$results = $this->ldap->search($criteria, array('uid'), $subbranch);
// S'assurer que SIREN correspond au Niveau01
if($data->getNiveau01()->getSiren()!=$data->getSiren()) {
@ -673,13 +500,10 @@ class SynchroCommand extends Command
$dn=$this->ldap->getNiveau01DN($data->getLabel());
$attrs["memberuid"]=array();
$attrs["cadolesMember"]=array();
if($ldap_type=="AD") $attrs["member"]=array();
foreach($data->getUsers() as $userniveau01) {
array_push($attrs["memberuid"],$userniveau01->getUsername());
array_push($attrs["cadolesMember"],$this->ldap->getUserDN($userniveau01));
if($ldap_type=="AD") array_push($attrs["member"],$this->ldap->getUserDN($userniveau01));
$this->writeln(' > '.$userniveau01->getUsername());
}
if(!$simulate) $this->ldap->ldapModify($dn, $attrs);
@ -707,13 +531,10 @@ class SynchroCommand extends Command
$dn=$this->ldap->getNiveau02DN($data->getLabel());
$attrs["memberuid"]=array();
$attrs["cadolesMember"]=array();
if($ldap_type=="AD") $attrs["member"]=array();
foreach($data->getUsers() as $userniveau01) {
array_push($attrs["memberuid"],$userniveau01->getUsername());
array_push($attrs["cadolesMember"],$this->ldap->getUserDN($userniveau01));
if($ldap_type=="AD") array_push($attrs["member"],$this->ldap->getUserDN($userniveau01));
$this->writeln(' > '.$userniveau01->getUsername());
}
if(!$simulate) $this->ldap->ldapModify($dn, $attrs);
@ -742,19 +563,11 @@ class SynchroCommand extends Command
$dn=$this->ldap->getGroupDN($data->getLabel());
$attrs["memberuid"]=array();
$attrs["cadolesMember"]=array();
if($ldap_type=="AD") $attrs['member']=array();
foreach($data->getUsers() as $usergroupe) {
if(!in_array($usergroupe->getUser()->getUsername(), $attrs["memberuid"])) {
array_push($attrs["memberuid"],$usergroupe->getUser()->getUsername());
array_push($attrs["cadolesMember"],$this->ldap->getUserDN($usergroupe->getUser()));
if($ldap_type=="AD") array_push($attrs["member"],$this->ldap->getUserDN($usergroupe->getUser()));
$this->writeln(' > '.$usergroupe->getUser()->getUsername());
}
else {
$this->writelnred(' > EXIST'.$usergroupe->getUser()->getUsername());
}
array_push($attrs["memberuid"],$usergroupe->getUser()->getUsername());
array_push($attrs["cadolesMember"],$this->ldap->getUserDN($usergroupe->getUser()));
$this->writeln(' > '.$usergroupe->getUser()->getUsername());
}
if(!$simulate) $this->ldap->ldapModify($dn, $attrs);
}
@ -807,7 +620,7 @@ class SynchroCommand extends Command
$criteria = '(cn=*)';
$subbranch=$baseGroup;
$results = $this->ldap->search($criteria, array('cn'), $subbranch);
$results = $this->search($criteria, array('cn'), $subbranch);
foreach($results as $result) {
$data = $this->em->getRepository('CadolesCoreBundle:Group')->findBy(array('label' => $result["cn"]));
if($data) $this->writeln(' - Existe dans bundle >> '.$result["cn"]);
@ -822,15 +635,15 @@ class SynchroCommand extends Command
$this->writeln('== USER =============================================');
$baseUser = $this->container->getParameter('ldap_baseuser');
$criteria = '('.$ldap_username.'=*)';
$criteria = '(uid=*)';
$subbranch=$baseUser;
$results = $this->ldap->search($criteria, array($ldap_username), $subbranch);
$results = $this->ldap->search($criteria, array('uid'), $subbranch);
foreach($results as $result) {
$data = $this->em->getRepository('CadolesCoreBundle:User')->findBy(array('username' => $result[$ldap_username]));
if($data) $this->writeln(' - Existe dans bundle >> '.$result[$ldap_username]);
$data = $this->em->getRepository('CadolesCoreBundle:User')->findBy(array('username' => $result["uid"]));
if($data) $this->writeln(' - Existe dans bundle >> '.$result["uid"]);
else {
$this->writeln(' - A supprimer dans annuaire >> '.$result[$ldap_username]);
$dn=$ldap_username.'='.$result[$ldap_username].','.$baseUser;
$this->writeln(' - A supprimer dans annuaire >> '.$result["uid"]);
$dn='uid='.$result["uid"].','.$baseUser;
if(!$simulate) $this->ldap->deleteByDN($dn);
}
}
@ -851,22 +664,15 @@ class SynchroCommand extends Command
protected function addmodGroup($label,$ldapfilter,$fgcanshare) {
$portal_activate = $this->container->getParameter('portal_activate');
$group=$this->em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgtemplate' => false, 'label' => $label));
if($group) {
$this->writelnred(" - ".$label." existe déjà comme groupe interne à Ninegate");
return 0;
}
$group=$this->em->getRepository('CadolesCoreBundle:Group')->findOneBy(array('fgtemplate' => true, 'label' => $label));
if(!$group) {
$group=new Group();
$group->setFgcanshare($fgcanshare);
$group->setFgcancreatepage(false);
$group->setFgcancreateblog(false);
$group->setFgcancreatecalendar(false);
$group->setFgcancreateproject(false);
}
$group->setFgcanshare($fgcanshare);
$group->setLabel($label);
$group->setFgopen(false);
$group->setFgall(false);
@ -918,17 +724,6 @@ class SynchroCommand extends Command
$this->em->persist($blog);
$this->em->flush();
}
// On regarde s'il a au moins un project
if($group->getProjects()->isEmpty()) {
$project=new Project();
$project->setName($group->getLabel());
$project->addGroup($group);
$this->em->persist($project);
$this->em->flush();
}
}
}
@ -938,16 +733,14 @@ class SynchroCommand extends Command
$member= new UserGroup();
$member->setGroup($group);
$member->setUser($user);
$member->setRolegroup(0);
}
// Si modèle scribe
$ldap_template = $this->container->getParameter('ldap_template');
$scribe_master = $this->container->getParameter('scribe_master');
if($ldap_template=="scribe"&&$scribe_master) {
if($ldap_template=="scribe") {
$ldapfilter="(|(&(uid=".$user->getUsername().")(ENTPersonProfils=enseignant))(&(uid=".$user->getUsername().")(typeadmin=0))(&(uid=".$user->getUsername().")(typeadmin=2)))";
$results = $this->ldap->search($ldapfilter, ['uid'], $this->ldap_basedn);
if($results) $member->setRolegroup(50);
if($results) $member->setFgmanager(true);
}
$this->em->persist($member);

View File

@ -1,123 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpKernel\KernelInterface;
use Doctrine\DBAL\Connection as DBALConnection;
use Doctrine\ORM\EntityManager;
use Symfony\Component\Validator\Constraints\DateTime;
use Cadoles\CoreBundle\Entity\Registration;
class TestRestCommand extends Command
{
private $container;
private $em;
private $output;
private $filesystem;
private $rootlog;
private $byexec;
protected function configure()
{
$this
->setName('Core:TestRest')
->setDescription('Test REST API Ninegate')
->setHelp('Test REST API Ninegate')
->addArgument('login', InputArgument::OPTIONAL, 'uid du user à tester')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->container = $this->getApplication()->getKernel()->getContainer();
$this->em = $this->container->get('doctrine')->getEntityManager();
$this->output = $output;
// Récupérer le login à interroger
$login = $input->getArgument('login');
if($login=="") $login="admin";
// Récuper la clé d'API
$masterapikey = $this->container->getParameter('apikeyninegate');
// Recherche des élèments de masterIdentify
$headers = ['Accept' => 'application/json'];
// Localisation du ninegate
$url = "https://".$this->container->getParameter("weburl")."/".$this->container->getParameter("alias");
// rest/user/{login}
// Récupération des informations utilisateurs issus du masteridentity
// key = parametre obligatoire
// key = clé d'accès du l'api
// only = paramétre optionnel
// only = liste des informations désirés = user, items, bookmarks, groups, alerts, calendars
$apiurl = $url."/rest/user/".$login;
$this->writeln($apiurl);
$response = \Unirest\Request::post($apiurl,$headers,["key"=>$masterapikey,"only"=>"user,items,bookmarks"]);
dump($response->body);
$this->writeln('');
return 1;
// rest/alert/hide
// Cache une alert à un utilisateur
// key = parametre obligatoire
// key = clé d'accès de l'api
// login = parametre obligatoire
// login = uid de l'utilisateur sur lequel on souhaite ajouter un bookmark
// idalert = parametre obligatoire
// idalert = id de l'alert à chacher
$apiurl = $url."/rest/alert/hide";
$this->writeln($apiurl);
$response = \Unirest\Request::post($apiurl,$headers,["key"=>$masterapikey,"login"=>"admin","idalert"=>2]);
$idbookmark=$response->body;
dump($response->body);
// rest/bookmark/add
// Ajout d'un item ninegate existant comme bookmark d'un utilisateur
// key = parametre obligatoire
// key = clé d'accès du l'api
// login = parametre obligatoire
// login = uid de l'utilisateur sur lequel on souhaite ajouter un bookmark
// iditem = parametre obligatoire
// iditem = id de l'item ninegate qui doit etre ajouté en tant que bookmark
$apiurl = $url."/rest/bookmark/add";
$this->writeln($apiurl);
$response = \Unirest\Request::post($apiurl,$headers,["key"=>$masterapikey,"login"=>"admin","iditem"=>3]);
$idbookmark=$response->body;
dump($response->body);
// rest/bookmark/del
// Ajout d'un item ninegate existant comme bookmark d'un utilisateur
// key = parametre obligatoire
// key = clé d'accès du l'api
// idbookmark = parametre obligatoire
// idbookmark = id du bookmark à supprimer
$apiurl = $url."/rest/bookmark/del";
$this->writeln($apiurl);
$response = \Unirest\Request::post($apiurl,$headers,["key"=>$masterapikey,"idbookmark"=>$idbookmark]);
$idbookmark=$response->body;
dump($response->body);
$this->writeln('');
return 1;
}
private function writelnred($string) {
$this->output->writeln('<fg=red>'.$string.'</>');
}
private function writeln($string) {
$this->output->writeln($string);
}
}

View File

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

View File

@ -210,33 +210,4 @@ class AjaxController extends Controller
return $response;
}
public function itemlistAction(Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$output=array();
$em = $this->getDoctrine()->getManager();
$page_limit=$request->query->get('page_limit');
$q=$request->query->get('q');
$qb = $em->createQueryBuilder();
$qb->select('table')->from("CadolesPortalBundle:Item",'table')
->where('table.title LIKE :value')
->setParameter("value", "%".$q."%")
->orderBy('table.title');
$datas=$qb->setFirstResult(0)->setMaxResults($page_limit)->getQuery()->getResult();
foreach($datas as $data) {
array_push($output,array("id"=>$data->getId(),"text"=>$data->getTitle()));
}
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}

View File

@ -141,15 +141,49 @@ class ConfigController extends Controller
return $config;
}
public function datauserdefaultAction(Request $request)
public function permmodoAction()
{
$em = $this->getDoctrine()->getManager();
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$config->setValue("");
$em->persist($config);
$sidebars=$this->get('session')->get('sidebar');
$perms=[];
foreach($sidebars as $sidebar) {
foreach($sidebar["childs"] as $child) {
$permmod=$em->getRepository("CadolesCoreBundle:PermModo")->findOneBy(["route"=>$child["path"]]);
if($permmod) {
array_push($perms,['id' => $permmod->getId(), 'label'=>$sidebar['label'].' >> '.$child['label'],'visible'=>$permmod->getVisible()]);
}
}
}
return $this->render('CadolesCoreBundle:Config:permmodo.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
'permmodos' => $perms
]);
}
public function permmodoupdateAction(Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) return new JsonResponse(array('message' => 'Interdit'), 400);
$output=array();
$id = $request->request->get('id');
$em = $this->getDoctrine()->getManager();
$permmodo = $this->getDoctrine()->getRepository("CadolesCoreBundle:PermModo")->find($id);
if (!$permmodo) throw $this->createNotFoundException('Unable to find entity.');
$permmodo->setVisible(!$permmodo->getVisible());
$em->persist($permmodo);
$em->flush();
return $this->redirectToRoute('cadoles_core_config_datauser');
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function datauserAction(Request $request)
@ -158,93 +192,65 @@ class ConfigController extends Controller
$session=$this->get('session');
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$fields=$config->getValue();
$fields=json_decode($fields,true);
if(!is_array($fields)) $fields=[];
// Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
if(!array_key_exists("firstname",$fields)) {
if($fields=="") {
// Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prénom";
}
if(!array_key_exists("visible",$fields)) {
$fields["visible"]["perm"]=2;
$fields["visible"]["label"]="Visible";
}
if(!array_key_exists("authlevel",$fields)) {
$fields["authlevel"]["perm"]=2;
$fields["authlevel"]["label"]="Niveau d'authentification";
}
if(!array_key_exists("belongingpopulation",$fields)) {
$fields["belongingpopulation"]["perm"]=2;
$fields["belongingpopulation"]["label"]="Population d'appartenance";
}
if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
}
if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
}
if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]=$session->get('labelniveau02');
}
$fields["niveau02"]["label"]="Niveau 02";
if(!array_key_exists("usualname",$fields)) {
$fields["usualname"]["perm"]=1;
$fields["usualname"]["label"]="Nom d'Usage";
}
if(!array_key_exists("gender",$fields)) {
$fields["gender"]["perm"]=1;
$fields["gender"]["label"]="Sexe";
}
if(!array_key_exists("givensname",$fields)) {
$fields["givensname"]["perm"]=1;
$fields["givensname"]["label"]="Autre Prénom";
}
if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
}
if(!array_key_exists("postaladress",$fields)) {
$fields["postaladress"]["perm"]=1;
$fields["postaladress"]["label"]="Adresse";
}
if(!array_key_exists("birthdate",$fields)) {
$fields["birthdate"]["perm"]=1;
$fields["birthdate"]["label"]="Date de Naissance";
}
if(!array_key_exists("birthcountry",$fields)) {
$fields["birthcountry"]["perm"]=1;
$fields["birthcountry"]["label"]="Pays de Naissance";
}
if(!array_key_exists("birthplace",$fields)) {
$fields["birthplace"]["perm"]=1;
$fields["birthplace"]["label"]="Ville de Naissance";
}
if(!array_key_exists("visite",$fields)) {
$fields["visite"]["perm"]=1;
$fields["visite"]["label"]="Visite";
else {
$fields=json_decode($fields, true);
}
if(!$session->get('viewniveau02'))
if($session->get('viewniveau02')&&!array_key_exists("niveau02",$fields))
$fields["niveau02"]["perm"]=1;
elseif(!$session->get('viewniveau02'))
unset($fields["niveau02"]);
if(array_key_exists("niveau02",$fields))
$fields["niveau02"]["label"]=$session->get('labelniveau02');
@ -276,17 +282,6 @@ class ConfigController extends Controller
]);
}
public function datausersdefaultAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$config->setValue("");
$em->persist($config);
$em->flush();
return $this->redirectToRoute('cadoles_core_config_datausers');
}
public function datausersAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
@ -294,63 +289,50 @@ class ConfigController extends Controller
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$fields=$config->getValue();
$fields=json_decode($fields, true);
if(!is_array($fields)) $fields=[];
// Valeur par défaut 0=caché / 3=visible
if(!array_key_exists("avatar",$fields)) {
if($fields=="") {
// Valeur par défaut 0=caché / 3=visible
$fields["avatar"]["perm"]=1;
$fields["avatar"]["label"]="Avatar";
}
if(!array_key_exists("login",$fields)) {
$fields["login"]["perm"]=1;
$fields["login"]["label"]="Login";
}
if(!array_key_exists("lastname",$fields)) {
$fields["lastname"]["perm"]=1;
$fields["lastname"]["label"]="Nom";
}
if(!array_key_exists("firstname",$fields)) {
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prenom";
}
if(!array_key_exists("email",$fields)) {
$fields["email"]["perm"]=1;
$fields["email"]["label"]="Email";
}
if(!array_key_exists("niveau01",$fields)) {
$fields["niveau01"]["perm"]=1;
$fields["niveau01"]["label"]=$session->get('labelniveau01');
}
if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]=$session->get('labelniveau02');
}
if(!array_key_exists("group",$fields)) $fields["group"]["perm"]=1;
$fields["group"]["label"]="Groupes (caché uniquement pour le rôle Utilisateur) ";
if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
}
if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
}
if(!array_key_exists("role",$fields)) {
$fields["niveau01"]["perm"]=1;
$fields["niveau01"]["label"]="Niveau 01";
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]="Niveau 02";
$fields["group"]["perm"]=1;
$fields["group"]["label"]="Groupes";
$fields["role"]["perm"]=1;
$fields["role"]["label"]="Rôles";
}
if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
else {
$fields=json_decode($fields, true);
}
if(!array_key_exists("visitedate",$fields)) $fields["visitedate"]["perm"]=1;
$fields["visitedate"]["label"]="Visite (caché uniquement pour les rôles Animateur et Utilisateur) ";
if(!$session->get('viewniveau02'))
$fields["niveau01"]["label"]=$session->get('labelniveau01');
if($session->get('viewniveau02')&&!array_key_exists("niveau02",$fields))
$fields["niveau02"]["perm"]=1;
elseif(!$session->get('viewniveau02'))
unset($fields["niveau02"]);
if(array_key_exists("niveau02",$fields))
$fields["niveau02"]["label"]=$session->get('labelniveau02');
$form = $this->createForm(DatauserType::class,$config,array("mode"=>"datausers","fields" => $fields));
// Récupération des data du formulaire

View File

@ -26,7 +26,7 @@ class CoreController extends Controller
$itemcategorys=null;
if($item_activate) {
$em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,$this->get('session')->get('ssoitems'));
$em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys);
return $this->render('CadolesPortalBundle:Page:noportal.html.twig',[
'useheader' => true,
'usemenu' => false,
@ -50,27 +50,20 @@ class CoreController extends Controller
// Récupération de la page encours
$id = $request->query->get('id');
// Récupération redirection potentielle
$gotoroute = $request->query->get('gotoroute');
$gotoid = $request->query->get('gotoid');
// L'utilisateur en cours
// Chargement des chartes à signer
if($user) {
$notices=$em->getRepository("CadolesPortalBundle:Notice")->getNoticeToRead($user);
if(! $notices->isEmpty()) {
$notices=$em->getRepository("CadolesPortalBundle:Notice")->getNoticeUser($user,false);
return $this->render('CadolesPortalBundle:Notice:mustread.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
'maxwidth' => true,
'mustread' => true,
'notices' => $notices,
'id' => $id,
'notices' => $notices
]);
}
@ -86,8 +79,8 @@ class CoreController extends Controller
switch($key) {
case "firstname": if($user->getFirstname()=="") $toprofil=true; break;
case "visible": if($user->getVisible()=="") $toprofil=true; break;
//case "authlevel": if($user->getAuthlevel()=="") $toprofil=true; break;
//case "belongingpopulation": if($user->getBelongingpopulation()=="") $toprofil=true; break;
case "authlevel": if($user->getAuthlevel()=="") $toprofil=true; break;
case "belongingpopulation": if($user->getBelongingpopulation()=="") $toprofil=true; break;
case "job": if($user->getJob()=="") $toprofil=true; break;
case "position": if($user->getPosition()=="") $toprofil=true; break;
case "niveau02": if($user->geNiveau02()=="") $toprofil=true; break;
@ -104,18 +97,8 @@ class CoreController extends Controller
}
}
// Si niveau01 commence par autre = alors niveau01other obligatoire
$message="";
$niveau01=strtolower($user->getNiveau01()->getLabel());
if(stripos($niveau01,"autre")===0) {
if(!$user->getNiveau01other()) {
$toprofil=true;
$message="<br>Merci d'indiquer votre ".$this->getParameter("labelniveau01");
}
}
if($toprofil) {
return $this->redirect($this->generateUrl('cadoles_core_user',array("info"=>"Merci de compléter votre profil".$message)));
return $this->redirect($this->generateUrl('cadoles_core_profil',array("info"=>"Merci de compléter votre profil")));
}
}
@ -146,9 +129,7 @@ class CoreController extends Controller
'groupsshared' => $groupsshared,
'canadd' => $this->get('session')->get('cancreatepage'),
'widgetsuser' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Widget")->getWidgetAccess("user"),
'widgetsgroup' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Widget")->getWidgetAccess("group"),
'gotoroute' => $gotoroute,
'gotoid' => $gotoid,
'widgetsgroup' => $this->getDoctrine()->getRepository("CadolesPortalBundle:Widget")->getWidgetAccess("group")
]);
}

View File

@ -14,206 +14,10 @@ use Symfony\Component\Finder\Finder;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class FileController extends Controller
{
public function listAction($directory,Request $request,$access="config") {
$canupdate= $this->getPermission($access,$directory);
$subdirectory=$request->get("subdirectory");
$clear=$request->get("clear");
$view=$request->get("view");
$sort=$request->get("sort");
$order=$request->get("order");
$defaultview=$request->get("defaultview");
// Récupérer les préférences utilisateur
$toupdate=false;
$preference=$this->getUser()->getPreference();
if(is_null($preference)) $preference=[];
// Préférence subdirectory
if(!array_key_exists("widgetsubdirectory",$preference)) {
$toupdate=true;
$preference["widgetsubdirectory"]=[];
}
if((!array_key_exists($directory,$preference["widgetsubdirectory"]))) {
$toupdate=true;
$preference["widgetsubdirectory"][$directory]=null;
}
if($clear&&!is_null($preference["widgetsubdirectory"][$directory])) {
$toupdate=true;
$preference["widgetsubdirectory"][$directory]=null;
}
else {
if(!$subdirectory) $subdirectory = $preference["widgetsubdirectory"][$directory];
elseif($subdirectory!=$preference["widgetsubdirectory"][$directory]) {
$toupdate=true;
$preference["widgetsubdirectory"][$directory] = $subdirectory;
}
}
// Préférence mode de visualisation
if(!array_key_exists("widgetviewdirectory",$preference)) {
$toupdate=true;
$preference["widgetviewdirectory"]=[];
}
if((!array_key_exists($directory,$preference["widgetviewdirectory"]))) {
$toupdate=true;
$preference["widgetviewdirectory"][$directory]=$defaultview;
}
if($view&&$preference["widgetviewdirectory"][$directory]!=$view) {
$toupdate=true;
$preference["widgetviewdirectory"][$directory]=$view;
}
// Préférence trie
if(!array_key_exists("widgetsortdirectory",$preference)) {
$toupdate=true;
$preference["widgetsortdirectory"]=[];
}
if((!array_key_exists($directory,$preference["widgetsortdirectory"]))) {
$toupdate=true;
$preference["widgetsortdirectory"][$directory]="name";
}
if($sort&&$preference["widgetsortdirectory"][$directory]!=$sort) {
$toupdate=true;
$preference["widgetsortdirectory"][$directory]=$sort;
}
// Préférence order
if(!array_key_exists("widgetorderdirectory",$preference)) {
$toupdate=true;
$preference["widgetorderdirectory"]=[];
}
if((!array_key_exists($directory,$preference["widgetorderdirectory"]))) {
$toupdate=true;
$preference["widgetorderdirectory"][$directory]="SORT_ASC";
}
if($sort&&$preference["widgetorderdirectory"][$directory]!=$order) {
$toupdate=true;
$preference["widgetorderdirectory"][$directory]=$order;
}
// Mise à jour des préferences
if($toupdate) {
$em = $this->getDoctrine()->getManager();
$this->getUser()->setPreference($preference);
$em->persist($this->getUser());
$em->flush();
}
// Construire le chemin réel
$iddirectory=explode("-",$directory)[1];
$fulldirectory=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory."/".$subdirectory;
$parents=null;
$dirname="Home";
if($subdirectory) {
$parents=explode("/",$subdirectory);
$dirname=end($parents);
array_pop($parents);
}
// Générer le tableau de fichiers
$files=[];
$dirs=[];
$fs = new Filesystem();
if($fs->exists($fulldirectory)) {
$finder = new Finder();
$finder->depth('== 0')->sortByName()->in($fulldirectory)->exclude('thumb')->exclude('thumbmini')->exclude('__trash');
foreach ($finder as $file) {
if(is_dir($file)) {
$tmp=[];
$tmp["name"]=$file->getRelativePathname();
$tmp["namesort"]=strtolower($tmp["name"]);
$tmp["date"]=date ("d/m/Y H:i", filemtime($file));
$tmp["datesort"] = date ("YmdHi", filemtime($file));
array_push($dirs,$tmp);
}
else {
$tmp=[];
$tmp["name"]=$file->getRelativePathname();
$tmp["namesort"]=strtolower($tmp["name"]);
$tmp["extension"]=strtolower($file->getExtension());
$fileinfo = new file($file->getPathname());
$tmp["minetype"]=$fileinfo->getMimeType();
$tmp["minefamily"]=explode("/",$tmp["minetype"])[0];
$tmp["date"] = date ("d/m/Y H:i", filemtime($file));
$tmp["datesort"] = date ("YmdHi", filemtime($file));
$tmp["thumb"]="";
if($tmp["extension"]=="pdf") {
$tmp["thumb"]="/".$this->getParameter('alias')."/bundles/cadolescore/images/files/".$tmp["extension"].".png";
}
elseif($fs->exists($fulldirectory."/thumbmini/".$tmp["name"])) {
$data = file_get_contents($fulldirectory."/thumbmini/".$tmp["name"]);
$tmp["thumb"]="data:image/" . $tmp["extension"] . ";base64," . base64_encode($data);
}
elseif($fs->exists($fulldirectory."/thumb/".$tmp["name"])) {
$data = file_get_contents($fulldirectory."/thumb/".$tmp["name"]);
$tmp["thumb"]="data:image/" . $tmp["extension"] . ";base64," . base64_encode($data);
}
elseif($fs->exists($this->get('kernel')->getRootDir()."/../web/bundles/cadolescore/images/files/".$tmp["extension"].".png")) {
$tmp["thumb"]="/".$this->getParameter('alias')."/bundles/cadolescore/images/files/".$tmp["extension"].".png";
}
array_push($files,$tmp);
}
}
}
// Flag poubelle
$fgtrash=false;
if(stripos($subdirectory,"_trash")==1) $fgtrash=true;
// Trie du tableu
$sort = array_column($files, $preference["widgetsortdirectory"][$directory]."sort");
if($preference["widgetorderdirectory"][$directory]=="SORT_ASC")
array_multisort($sort, SORT_ASC, $files);
else
array_multisort($sort, SORT_DESC, $files);
$sort = array_column($dirs, $preference["widgetsortdirectory"][$directory]."sort");
if($preference["widgetorderdirectory"][$directory]=="SORT_ASC")
array_multisort($sort, SORT_ASC, $dirs);
else
array_multisort($sort, SORT_DESC, $dirs);
return $this->render('CadolesCoreBundle:File:list.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'access' => $access,
'iddirectory' => $iddirectory,
'directory' => $directory,
'parents' => $parents,
'subdirectory' => $subdirectory,
'dirname' => $dirname,
'dirs' => $dirs,
'files' => $files,
'canupdate' => $canupdate,
'canadd' => $canupdate,
'view' => $preference["widgetviewdirectory"][$directory],
'sort' => $preference["widgetsortdirectory"][$directory],
'order' => $preference["widgetorderdirectory"][$directory],
'fgtrash' => $fgtrash,
]);
}
public function uploadAction($id,$type,Request $request,$access="config")
public function uploadAction($id,$type,$access="config")
{
$canupdate =$this->getPermission($access,$id);
if(!$canupdate) throw $this->createNotFoundException('Permission denied');
$subdirectory=urldecode($request->get("subdirectory"));
$forcereload=(is_null($request->get("forcereload"))?true:$request->get("forcereload"));
return $this->render('CadolesCoreBundle:File:upload.html.twig',[
'useheader' => false,
'usemenu' => false,
@ -221,275 +25,9 @@ class FileController extends Controller
'access' => $access,
'id' => $id,
'type' => $type,
'subdirectory' => $subdirectory,
'forcereload' => $forcereload,
]);
}
public function subdirectoryAction($id,$type,Request $request,$access="config")
{
$canupdate =$this->getPermission($access,$id);
if(!$canupdate) throw $this->createNotFoundException('Permission denied');
$subdirectory=$request->get("subdirectory");
$defaultData = [];
$form = $this->createFormBuilder()
->add('subdirectory', TextType::class,["label"=>"Répertoire"])
->add('submit', SubmitType::class,["label"=>"Valider"])
->getForm();
$form->handleRequest($request);
$toclose=false;
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
if($data["subdirectory"]=="thumb"||$data["subdirectory"]=="thumbmini"||$data["subdirectory"]=="__trash") {
$form->addError(new FormError('Nom de répertoire réservé, merci de choisir un autre nom de répertoire'));
$this->get('session')->getFlashBag()->clear();
$request->getSession()->getFlashBag()->add("error", 'Nom de répertoire réservé, merci de choisir un autre nom de répertoire');
}
else {
$filesystem = new Filesystem();
$fulldirectory=$this->get('kernel')->getRootDir()."/../uploads/file/".$id;
if($subdirectory) $fulldirectory.="/".$subdirectory."/".$data["subdirectory"];
else $fulldirectory.="/".$data["subdirectory"];
$filesystem->mkdir($fulldirectory);
$toclose=true;
}
}
return $this->render('CadolesCoreBundle:File:subdirectory.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'access' => $access,
'id' => $id,
'type' => $type,
'subdirectory' => $subdirectory,
'form' => $form->createView(),
'toclose' => $toclose,
]);
}
public function renameAction($id,$oldname, Request $request,$access="config")
{
$canupdate =$this->getPermission($access,$id);
if(!$canupdate) throw $this->createNotFoundException('Permission denied');
$subdirectory=$request->get("subdirectory");
$form = $this->createFormBuilder()
->add('subdirectory', TextType::class,["label"=>"Renommer"])
->add('submit', SubmitType::class,["label"=>"Valider"])
->getForm();
$form->handleRequest($request);
$toclose=false;
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
if($data["subdirectory"]=="thumb"||$data["subdirectory"]=="thumbmini"||$data["subdirectory"]=="__trash") {
$form->addError(new FormError('Nom réservé, merci de choisir un autre nom'));
$this->get('session')->getFlashBag()->clear();
$request->getSession()->getFlashBag()->add("error", 'Nom réservé, merci de choisir un autre nom');
}
else {
$fs = new Filesystem();
$fulldirectory=$this->get('kernel')->getRootDir()."/../uploads/file/".$id;
if($subdirectory) $fulldirectory.="/".$subdirectory;
$urlsource= $fulldirectory."/".$oldname;
$urldestination = $fulldirectory."/".$data["subdirectory"];
if($urlsource!=$urldestination) {
if($fs->exists($urldestination)) {
$form->addError(new FormError('Ce nom existe déjà'));
$this->get('session')->getFlashBag()->clear();
$request->getSession()->getFlashBag()->add("error", 'Ce nom existe déjà');
}
elseif($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else {
$fs->rename($urlsource,$urldestination,true);
$fs->touch($urldestination);
$urlsource= $fulldirectory."/thumb/".$oldname;
$urldestination = $fulldirectory."/thumb/".$data["subdirectory"];
if($fs->exists($urlsource))
$fs->rename($urlsource,$urldestination,true);
$urlsource= $fulldirectory."/thumbmini/".$oldname;
$urldestination = $fulldirectory."/thumbmini/".$data["subdirectory"];
if($fs->exists($urlsource))
$fs->rename($urlsource,$urldestination,true);
}
$toclose=true;
}
}
}
} else $form->get('subdirectory')->setData($oldname);
return $this->render('CadolesCoreBundle:File:subdirectory.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'access' => $access,
'id' => $id,
'subdirectory' => $subdirectory,
'form' => $form->createView(),
'toclose' => $toclose,
]);
}
public function trashAction(Request $request,$access="config")
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$output=array();
$directory=$request->request->get('directory');
// Récupération du répertoire source et le nom du fichier
$racine=$this->get('kernel')->getRootDir()."/../uploads/file";
$directory=$request->request->get('directory');
$dirsource =$request->request->get('subdirectory');
$namesource =$request->request->get('filename');
$canupdate =$this->getPermission($access,$directory);
if(!$canupdate) throw $this->createNotFoundException('Permission denied');
$fs = new Filesystem();
// Déplacer le fichier
$urlsource=$racine."/".$directory."/".$dirsource."/".$namesource;
$urldestination=$racine."/".$directory."/__trash/".$dirsource."/".$namesource;
$fs->mkdir($racine."/".$directory."/__trash/".$dirsource);
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else $fs->rename($urlsource,$urldestination,true);
}
// Déplacer le thumb
$fs->mkdir($racine."/".$directory."/__trash/".$dirsource."/thumb");
$urlsource=$racine."/".$directory."/".$dirsource."/thumb/".$namesource;
$urldestination=$racine."/".$directory."/__trash/".$dirsource."/thumb/".$namesource;
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else $fs->rename($urlsource,$urldestination,true);
}
// Déplacer le thumbmini
$fs->mkdir($racine."/".$directory."/__trash/".$dirsource."/thumbmini");
$urlsource=$racine."/".$directory."/".$dirsource."/thumbmini/".$namesource;
$urldestination=$racine."/".$directory."/__trash/".$dirsource."/thumbmini/".$namesource;
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else $fs->rename($urlsource,$urldestination,true);
}
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function restaureAction(Request $request,$access="config")
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$output=array();
$directory=$request->request->get('directory');
// Récupération du répertoire source et le nom du fichier
$racine=$this->get('kernel')->getRootDir()."/../uploads/file";
$directory=$request->request->get('directory');
$dirsource =$request->request->get('subdirectory');
$namesource =$request->request->get('filename');
$canupdate =$this->getPermission($access,$directory);
if(!$canupdate) throw $this->createNotFoundException('Permission denied');
$fs = new Filesystem();
// Déplacer le fichier
$dirdestination=str_replace("__trash/","",$dirsource);
$urlsource=$racine."/".$directory."/".$dirsource."/".$namesource;
$urldestination=str_replace("__trash/","/",$urlsource);
$fs->mkdir($racine."/".$directory."/".$dirdestination);
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else $fs->rename($urlsource,$urldestination,true);
}
// Déplacer le thumb
$urlsource=$racine."/".$directory."/".$dirsource."/thumb/".$namesource;
$urldestination=str_replace("__trash/","/",$urlsource);
$fs->mkdir($racine."/".$directory."/".$dirdestination."/thumb");
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else $fs->rename($urlsource,$urldestination,true);
}
// Déplacer le thumbmini
$urlsource=$racine."/".$directory."/".$dirsource."/thumbmini/".$namesource;
$urldestination=str_replace("__trash/","/",$urlsource);
$fs->mkdir($racine."/".$directory."/".$dirdestination."/thumbmini");
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else $fs->rename($urlsource,$urldestination,true);
}
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function purgetrashAction($directory,Request $request,$access="config")
{
$output=array();
$canupdate =$this->getPermission($access,$directory);
if(!$canupdate) throw $this->createNotFoundException('Permission denied');
$fs = new Filesystem();
$url=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory."/__trash";
if($fs->exists($url)) {
$fs->remove($url);
}
return $this->redirectToRoute('cadoles_core_'.$access.'_file_list',['directory'=>$directory]);
}
public function deleteAction(Request $request,$access="config")
{
// S'assurer que c'est un appel ajax
@ -499,13 +37,9 @@ class FileController extends Controller
$output=array();
$directory=$request->request->get('directory');
$subdirectory=$request->request->get('subdirectory');
$filename=$request->request->get('filename');
if($subdirectory) $directory.="/".$subdirectory;
$canupdate =$this->getPermission($access,$directory);
if(!$canupdate) throw $this->createNotFoundException('Permission denied');
$this->getPermission($access,$directory);
$fs = new Filesystem();
$url=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory."/".$filename;
if($fs->exists($url)) {
@ -517,103 +51,18 @@ class FileController extends Controller
return $response;
}
public function moveAction(Request $request,$access="config")
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$output=array();
$directory=$request->request->get('directory');
// Récupération du répertoire source et le nom du fichier
$racine=$this->get('kernel')->getRootDir()."/../uploads/file";
$directory = $request->request->get('directory');
$dirsource = $request->request->get('dirsource');
$namesource = $request->request->get('namesource');
$dirdestination = $request->request->get('dirdestination');
$namedestination = $request->request->get('namedestination');
$canupdate =$this->getPermission($access,$directory);
if(!$canupdate) throw $this->createNotFoundException('Permission denied');
$fs = new Filesystem();
// Déplacer le fichier
$urlsource=str_replace("//","/",$racine."/".$dirsource."/".$namesource);
$urldestination=str_replace("//","/",$racine."/".$dirdestination."/".$namedestination);
// Controle de cohérance du déplacement
$fgerror=false;
if(empty($racine)) $fgerror=true;
if(empty($dirsource)) $fgerror=true;
if(empty($directory)) $fgerror=true;
if($urlsource==$urldestination) $fgerror=true;
if(stripos($urldestination,$urlsource)!==false) $fgerror=true;
if($fgerror) return new JsonResponse(array('message' => 'Interdit'), 400);
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else
$fs->rename($urlsource,$urldestination, true);
}
// Déplacer le thumb
$fs->mkdir($racine."/".$dirdestination."/thumb");
$urlsource=$racine."/".$dirsource."/thumb/".$namesource;
$urldestination=$racine."/".$dirdestination."/thumb/".$namedestination;
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else
$fs->rename($urlsource,$urldestination, true);
}
// Déplacer le thumbmini
$fs->mkdir($racine."/".$dirdestination."/thumbmini");
$urlsource=$racine."/".$dirsource."/thumbmini/".$namesource;
$urldestination=$racine."/".$dirdestination."/thumbmini/".$namedestination;
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);
$fs->remove($urlsource);
}
else
$fs->rename($urlsource,$urldestination, true);
}
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function viewAction($directory,$filename,Request $request,$access="config")
{
$this->getPermission($access,$directory);
$subdirectory=$request->query->get('subdirectory');
$navigation = $request->query->get('navigation');
$tbprev=[];
$tbnext=[];
$url=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory;
if($subdirectory) $url.="/".$subdirectory;
$url.="/".$filename;
$url=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory."/".$filename;
$file = new file($url);
$minetype=$file->getMimeType();
$minefamily=explode("/",$minetype)[0];
@ -629,7 +78,7 @@ class FileController extends Controller
if($fs->exists($dir)) {
$finder = new Finder();
$finder->sortByName()->in($dir)->exclude('thumb')->exclude("thumbmini");
$finder->sortByName()->in($dir)->exclude('thumb');
$i=-1;
@ -672,7 +121,6 @@ class FileController extends Controller
'usesidebar' => false,
'access' => $access,
'directory' => $directory,
'subdirectory' => $subdirectory,
'minefamily' => $minefamily,
'minetype' => $minetype,
'filename' => $filename,
@ -690,14 +138,11 @@ class FileController extends Controller
}
}
public function showAction($directory,$filename,Request $request,$access="config")
public function showAction($directory,$filename,$access="config")
{
$this->getPermission($access,$directory);
$subdirectory=$request->query->get('subdirectory');
$file=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory;
if($subdirectory) $file.="/".$subdirectory;
$file.="/".$filename;
$file=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory."/".$filename;
$response = new BinaryFileResponse($file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE);
@ -705,14 +150,11 @@ class FileController extends Controller
return $response;
}
public function downloadAction($directory,$filename,Request $request,$access="config")
public function downloadAction($directory,$filename,$access="config")
{
$this->getPermission($access,$directory);
$subdirectory=$request->query->get('subdirectory');
$file=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory;
if($subdirectory) $file.="/".$subdirectory;
$file.="/".$filename;
$file=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory."/".$filename;
$response = new BinaryFileResponse($file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
@ -735,38 +177,10 @@ class FileController extends Controller
// On s'assure que l'utilisateur à la permission de voir
$page=$widget->getPage();
$em->getRepository("CadolesPortalBundle:Page")->getPermission($this->getUser(),$page,$cansee,$canupdate,$canadd);
$em->getRepository("CadolesPortalBundle:Page")->getPermission($this->getUser(),$page,$cansee,$canupdate);
if(!$cansee) throw $this->createNotFoundException('Permission denied');
return $canadd;
break;
case "projecttask":
// Récupération de la tache
$projecttask=$em->getRepository("CadolesPortalBundle:Projecttask")->find($id);
if (!$projecttask) throw $this->createNotFoundException('Unable to find entity.');
// On s'assure que l'utilisateur à la permission de voir
$project=$projecttask->getProject();
$user=$this->getUser();
$em->getRepository("CadolesPortalBundle:Project")->getPermission($user,$project,$cansee,$canupdate,$canadd);
if(!$cansee) throw $this->createNotFoundException('Permission denied');
return $canupdate;
break;
case "calendarevent":
// Récupération de l'event'
$calendarevent=$em->getRepository("CadolesPortalBundle:Calendarevent")->find($id);
if (!$calendarevent) throw $this->createNotFoundException('Unable to find entity.');
// On s'assure que l'utilisateur à la permission de voir
$calendar=$calendarevent->getCalendar();
$user=$this->getUser();
$em->getRepository("CadolesPortalBundle:Calendar")->getPermission($user,$calendar,$cansee,$canupdate,$canadd);
if(!$cansee) throw $this->createNotFoundException('Permission denied');
return $canadd;
break;
}
}
else $canupdate=true;
}
}

View File

@ -10,10 +10,6 @@ use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\FormError;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Cadoles\CoreBundle\Entity\Group;
use Cadoles\CoreBundle\Entity\Usergroup;
@ -21,9 +17,7 @@ use Cadoles\CoreBundle\Entity\Usermodo;
use Cadoles\CoreBundle\Form\GroupType;
use Cadoles\PortalBundle\Entity\Calendar;
use Cadoles\PortalBundle\Entity\Blog;
use Cadoles\PortalBundle\Entity\Project;
use Cadoles\WebsocketBundle\Entity\Message;
use Symfony\Component\Security\Core\User\User;
class GroupController extends Controller
{
@ -31,7 +25,6 @@ class GroupController extends Controller
private $labelentity = 'CadolesCoreBundle:Group';
private $labeldata = 'group';
private $labeldatas = 'groups';
private $idpage;
public function listAction($access)
{
@ -82,9 +75,7 @@ class GroupController extends Controller
$qb=$em->createQueryBuilder();
$qb->select('COUNT(table)')
->from($this->labelentity,'table')
->leftJoin('CadolesCoreBundle:User', 'u', 'WITH', 'table.owner = u.id')
->where('table.label LIKE :value')
->orWhere('u.username LIKE :value')
->setParameter("value", "%".$search["value"]."%");
if($access=="user") {
$qb->from("CadolesCoreBundle:UserGroup","ug")
@ -109,48 +100,43 @@ class GroupController extends Controller
// Parcours des Enregistrement
$qb = $em->createQueryBuilder();
$qb ->select('table')
->from($this->labelentity,'table')
->leftJoin('CadolesCoreBundle:User', 'u', 'WITH', 'table.owner = u.id');
$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")
->leftJoin('CadolesCoreBundle:User', 'u', 'WITH', 'table.owner = u.id')
->setParameter("flag", true)
->setParameter("user", $this->getUser());
}
if($search["value"]!="") {
$qb ->andwhere('table.label LIKE :value')
->orWhere('u.username LIKE :value')
->setParameter("value", "%".$search["value"]."%");
}
switch($order[0]["column"]) {
case 2 :
case 1 :
$qb->orderBy('table.label',$order[0]["dir"]);
break;
case 3 :
case 2 :
$qb->orderBy('table.fgopen',$order[0]["dir"]);
break;
case 5 :
case 4 :
$qb->orderBy('table.fgcanshare',$order[0]["dir"]);
break;
case 6 :
case 5 :
$qb->orderBy('table.owner',$order[0]["dir"]);
break;
case 8 :
case 6 :
$qb->orderBy('table.fgcancreatepage',$order[0]["dir"]);
break;
case 9 :
case 7 :
$qb->orderBy('table.fgcancreatecalendar',$order[0]["dir"]);
break;
case 10 :
case 8 :
$qb->orderBy('table.fgcancreateblog',$order[0]["dir"]);
break;
case 11 :
$qb->orderBy('table.fgcancreateproject',$order[0]["dir"]);
break;
}
$datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult();
@ -174,36 +160,25 @@ class GroupController extends Controller
if($data->getId()>0&&!$data->getFgall()&&!$data->getFgTemplate()&&$this->isGranted('ROLE_ADMIN')) $action.="<a href='".$this->generateUrl('cadoles_core_config_group_delete', array('id'=>$data->getId()))."'><i class='fa fa-trash fa-fw fa-2x'></i></a>";
if(!$data->getFgall()) $action .="<a href='".$this->generateUrl('cadoles_core_config_group_users', array('id'=>$data->getId()))."'><i class='fa fa-users fa-2x fa-fw'></i></a>";
if($data->getFgcanshare())
$action.="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_statistic', array('id'=>$data->getId()))."'><i class='fa fa-chart-area fa-fw fa-2x'></i></a>";
}
else {
$fgcanupdate=($user==$data->getOwner());
$fgcanmanage=false;
$usergroup=$this->getDoctrine()->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$data]);
if($usergroup) $fgcanmanage=($usergroup->getRolegroup()>=90);
$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($fgcanupdate) {
if($fgproprio) {
$action .="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_update', array('id'=>$data->getId()))."'><i class='fa fa-file fa-2x fa-fw'></i></a>";
$action .="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_delete', array('id'=>$data->getId()))."'><i class='fa fa-trash fa-2x fa-fw'></i></a>";
}
// Gestion des utilisateurs du groupe uniquement pour le proprio ou les managers
if($fgcanupdate||$fgcanmanage) {
if($fgproprio||$fgmanager) {
$action .="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_users', array('id'=>$data->getId()))."'><i class='fa fa-users fa-2x fa-fw'></i></a>";
}
else {
// On ne peut se désinscrire que si le groupe est ouvert et qu'il n'est pas lié à un groupe ldap ou sso
$fgcanleave=true;
if($data->getFgtemplate() or $data->getFgall()) $fgcanleave=false;
elseif(!$data->getFgcanshare() && !$data->getFgopen()) $fgcanleave=false;
elseif($data->getFgcanshare() && !$this->get('session')->get('permunsubscribe') && !$data->getFgopen()) $fgcanleave=false;
if($fgcanleave) $action.="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_out', array('id'=>$data->getId()))."'><i class='fa fa-sign-out-alt fa-fw fa-2x'></i></a>";
$action.="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_out', array('id'=>$data->getId()))."' data-method='out'><i class='fa fa-sign-out fa-fw fa-2x'></i></a>";
}
if($data->getFgcanshare())
$action.="<a href='".$this->generateUrl('cadoles_core_'.$access.'_group_statistic', array('id'=>$data->getId()))."'><i class='fa fa-chart-area fa-fw fa-2x'></i></a>";
}
@ -211,38 +186,22 @@ class GroupController extends Controller
if($this->GetParameter("masteridentity")=="LDAP") $filtre=$data->getLdapfilter();
if($this->GetParameter("masteridentity")=="SSO") $filtre=$data->getAttributes();
if ($data->getIcon())
$groupinfo = "<img src='/".$this->container->getParameter('alias')."/".$data->getIcon()->getLabel()."' class='avatar' style='background-color:transparent'/>";
else
$groupinfo = "<img src='/".$this->container->getParameter('alias')."/uploads/icon/icon_pin.png' class='avatar' style='background-color:transparent'/>";
$userinfo="";
if($data->getOwner()) {
$userinfo.="<img style='cursor:pointer' onClick='seeUser(".$data->getOwner()->getId().")' src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getOwner()->getAvatar()."' class='avatar' style='margin:0px 5px 0px 0px;display:inline-block;'>";
$userinfo.="<br>".$data->getOwner()->getUsername();
$userinfo.="<img src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getOwner()->getAvatar()."' class='avatar' style='margin:0px 5px 0px 0px;display:inline-block;'>";
$userinfo.=$data->getOwner()->getUsername();
}
$visitecpt="";
$visitelast=null;
foreach($data->getUsers() as $usergroup) {
$visitecpt+=$usergroup->getVisitecpt();
$visitelast=($usergroup->getVisitedate()>$visitelast?$usergroup->getVisitedate():$visitelast);
}
array_push($output["data"],array(
$action,
$groupinfo,
$data->getLabel(),
($data->getFgopen()?"oui":"non"),
$filtre,
($data->getFgcanshare()?"oui":"non"),
$userinfo,
($visitelast?$visitelast->format("d/m/Y H:i")."<br>":"")."nb = ".$visitecpt,
($data->getFgcancreatepage()?"oui":"non"),
($data->getFgcancreatecalendar()?"oui":"non"),
($data->getFgcancreateblog()?"oui":"non"),
($data->getFgcancreateproject()?"oui":"non"),
)
);
}
@ -261,7 +220,6 @@ class GroupController extends Controller
$em = $this->getDoctrine()->getManager();
$group=$this->getData($id);
$this->canManager($group,$access);
$sub = $em->createQueryBuilder();
$sub->select("usergroup");
@ -370,10 +328,12 @@ class GroupController extends Controller
if($group->getLdapfilter()==""&&$group->getAttributes()=="")
$action.="<a style='cursor:pointer' onClick='addUsers(".$data->getId().")'><i class='fa fa-plus fa-fw'></i></a>";
// Avatar
$avatar="<img onClick='seeUser(".$data->getId().")' src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;cursor:pointer;'>";
$fgmanager="<input type='checkbox' class='switch' onChange='switchManager(".$data->getId().");'>";
array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),"",""));
// Avatar
$avatar="<img src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;'>";
array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$fgmanager));
}
// Retour
@ -389,7 +349,6 @@ class GroupController extends Controller
$em = $this->getDoctrine()->getManager();
$group=$this->getData($id);
$this->canManager($group,$access);
$sub = $em->createQueryBuilder();
$sub->select("usergroup");
@ -483,23 +442,15 @@ class GroupController extends Controller
$qb->setParameter("groupid",$id);
switch($order[0]["column"]) {
case 2 :
$qb->orderBy('user.username',$order[0]["dir"]);
$qb->orderBy('user.username',$order[0]["dir"]);
break;
case 3 :
$qb->orderBy('user.email',$order[0]["dir"]);
$qb->orderBy('user.email',$order[0]["dir"]);
break;
}
$datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult();
$user=$this->getUser();
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$fields=$config->getValue();
$fields=json_decode($fields,true);
if(!is_array($fields)) $fields=[];
if(!array_key_exists("visite",$fields)) $fields["visite"]["perm"]=0;
$fgviewvisite=($fields["visite"]["perm"]==1);
foreach($datas as $data) {
// Propriétaire
@ -512,35 +463,20 @@ class GroupController extends Controller
$action.="<a style='cursor:pointer' onClick='delUsers(".$data->getId().")'><i class='fa fa-minus fa-fw'></i></a>";
// Avatar
$avatar="<img onClick='seeUser(".$data->getId().")' src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;cursor:pointer'>";
$avatar="<img src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' style='width:30px;background-color:#337ab7;margin:auto;display:block;'>";
// Flag manager
$rolegroup="";
$fgmanager="";
if($fgcanshare) {
if($fgproprio) $rolegroup="Propriétaire du groupe";
elseif($user==$usergroup->getUser()) $rolegroup="Gestionnaire";
else {
$selectuser=($usergroup->getRolegroup()==0?"selected='selected'":"");
$selectwritter=($usergroup->getRolegroup()==50?"selected='selected'":"");
$selectmanager=($usergroup->getRolegroup()==90?"selected='selected'":"");
$rolegroup='<select id="roleuser-'.$data->getId().'" name="user[visible]" onChange="changeRole('.$data->getId().');"><option value="0" '.$selectuser.'>Utilisateur</option><option value="50" '.$selectwritter.'>Collaborateur</option><option value="90" '.$selectmanager.'>Gestionnaire</option></select>';
}
$checked=($usergroup->getFgmanager()?"checked":"");
$fgmanager="<input type='checkbox' class='switch' onChange='switchManager(".$data->getId().");' $checked>";
if($fgproprio) $fgmanager="Propriétaire du groupe";
}
// Visite
if($fgviewvisite) {
$visite="";
if($usergroup->getVisitedate()) {
$visite=$usergroup->getVisitedate()->format("d/m/Y H:i")."<br>nb = ".$usergroup->getVisitecpt();
}
}
if($fgviewvisite)
$tmp=array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$visite,$rolegroup);
else
$tmp=array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$rolegroup);
array_push($output["data"],$tmp);
array_push($output["data"],array("DT_RowId"=>"user".$data->getId(),$action,$avatar,$data->getUsername(),$data->getEmail(),$fgmanager));
}
// Retour
@ -561,24 +497,15 @@ class GroupController extends Controller
$groupid=$request->request->get('groupid');
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
$this->canManager($group,$access);
if($group->getFgAll()||$group->getFgtemplate())
throw $this->createNotFoundException('Permission denied');
$usergroup = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid));
if($usergroup) {
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
$key = Uuid::uuid4();
$usergroup=new UserGroup();
$usergroup=new Usergroup;
$user=$em->getRepository("CadolesCoreBundle:User")->find($userid);
$usergroup->setUser($user);
$usergroup->setGroup($group);
$usergroup->setKeyvalue($key);
$usergroup->setRolegroup(0);
$em->persist($usergroup);
$em->flush();
@ -588,20 +515,16 @@ class GroupController extends Controller
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$userid,$groupid,$message);
// Notification mail auprès de la personne inscrite
if($group->getFgcanshare()&&$this->get('session')->get('fgnotifgroup')) {
$idpage =$group->getPages()->first()->getId();
$url = $this->generateUrl('cadoles_core_redirect', ["route"=>"cadoles_core_home","id"=>$idpage], UrlGeneratorInterface::ABSOLUTE_URL);
$texthtml="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel()."<br>Suivez le lien suivant pour y accéder = <a href='$url'>$url</a>";
$text="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel()."<br>Suivez le lien suivant pour y accéder = $url";
if($group->getFgcanshare()) {
$text="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : Inscription au groupe de travail : ".$group->getLabel()."\n\n".$group->getDescription(),
"body_html"=>$texthtml,
"body_html"=>nl2br($text),
"body_text"=>$text
);
$to = $user->getEmail();
$from = $this->getParameter('noreply');
$from = $this->getParameter('noreply');;
$fromName = $this->get('session')->get('appname');
$message = $this->container->get('cadoles.core.service.mail');
$message->sendEmail($template, $mail_params, $to, $from, $fromName);
@ -627,7 +550,6 @@ class GroupController extends Controller
$groupid=$request->request->get('groupid');
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
$this->canManager($group,$access);
if($group->getFgAll()||$group->getFgTemplate())
throw $this->createNotFoundException('Permission denied');
@ -642,19 +564,18 @@ class GroupController extends Controller
$em->flush();
// Notification mail auprès des managers
if($group->getFgcanshare()&&$this->get('session')->get('fgnotifgroup')) {
$text=$user->getUsername()." a été désinscrit du groupe de travail : ".$group->getLabel();
if($group->getFgcanshare()) {
$text=$user->getUsername()." a été désinscrit dugroupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : ".$user->getUsername()." = Désinscription au groupe de travail ".$group->getLabel()."\n\n".$group->getDescription(),
"body_html"=>nl2br($text),
"body_text"=>$text
);
$usergroups=$em->getRepository("CadolesCoreBundle:Usergroup")->findBy(array("group"=>$groupid));
$managers=$em->getRepository("CadolesCoreBundle:Usergroup")->findBy(array("group"=>$groupid,"fgmanager"=>true));
$to=array();
foreach($usergroups as $usergroup) {
if($usergroup->getRolegroup()>=90)
array_push($to,$usergroup->getUser()->getEmail());
foreach($managers as $manager) {
array_push($to,$manager->getUser()->getEmail());
}
$from = $this->getParameter('noreply');;
@ -677,30 +598,27 @@ class GroupController extends Controller
// Notification message
$usergroup = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$this->getUser(),"group"=>$id));
if($usergroup) {
$user=$em->getRepository("CadolesCoreBundle:User")->find($this->getUser());
$message="Désinscription de l'utilisateur<br>".$user->getLastname()." ".$user->getFirstname()."<br>Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();;
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($usergroup->getKeyvalue(),$this->getUser()->getId(),$id,$message);
}
$user=$em->getRepository("CadolesCoreBundle:User")->find($this->getUser());
$message="Désinscription de l'utilisateur<br>".$user->getLastname()." ".$user->getFirstname()."<br>Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();;
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($usergroup->getKeyvalue(),$this->getUser()->getId(),$id,$message);
// Desinscription
$em->remove($usergroup);
$em->flush();
// Notification mail auprès des managers
if($group->getFgcanshare()&&$this->get('session')->get('fgnotifgroup')) {
$text=$user->getUsername()." a été désinscrit du groupe de travail : ".$group->getLabel();
if($group->getFgcanshare()) {
$text=$user->getUsername()." a été désinscrit dugroupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : ".$user->getUsername()." = Désinscription au groupe de travail ".$group->getLabel()."\n\n".$group->getDescription(),
"body_html"=>nl2br($text),
"body_text"=>$text
);
$usergroups=$em->getRepository("CadolesCoreBundle:Usergroup")->findBy(array("group"=>$group));
$managers=$em->getRepository("CadolesCoreBundle:Usergroup")->findBy(array("group"=>$group,"fgmanager"=>true));
$to=array();
foreach($usergroups as $usergroup) {
if($usergroup->getRolegroup()>=90)
array_push($to,$usergroup->getUser()->getEmail());
foreach($managers as $manager) {
array_push($to,$manager->getUser()->getEmail());
}
$from = $this->getParameter('noreply');;
@ -714,7 +632,7 @@ class GroupController extends Controller
return $this->redirect($this->generateUrl("cadoles_core_user_group"));
}
public function changeroleAction(Request $request,$access="config")
public function switchmanagerAction(Request $request,$access="config")
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
@ -726,13 +644,9 @@ class GroupController extends Controller
$output=array();
$userid=$request->request->get('user');
$groupid=$request->request->get('group');
$role=$request->request->get('role');
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
$this->canManager($group,$access);
$data = $em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(array("user"=>$userid,"group"=>$groupid));
if($data) $data->setRolegroup($role);
if($data) $data->setFgmanager(!$data->getFgmanager());
$em->persist($data);
$em->flush();
@ -747,11 +661,10 @@ class GroupController extends Controller
$em = $this->getDoctrine()->getManager();
// Permission
if($access=="user") {
$permgroup=$this->get('session')->get('permgroup');
$permgroup=$this->get('session')->get('permgroup');
if($access="user") {
if($permgroup=="NO_BODY") throw $this->createNotFoundException('Permission denied');
if($permgroup=="ROLE_ANIM" && $this->isGranted('ROLE_USER')) throw $this->createNotFoundException('Permission denied');
if($permgroup=="ROLE_MODO" && ($this->isGranted('ROLE_ANIM') || $this->isGranted('ROLE_USER'))) throw $this->createNotFoundException('Permission denied');
}
// Initialisation de l'enregistrement
@ -761,14 +674,7 @@ class GroupController extends Controller
$data->setFgcancreatepage(false);
$data->setFgcancreatecalendar(false);
$data->setFgcancreateblog(false);
$data->setFgcancreateproject(false);
if($access=="user") {
$data->setOwner($this->getUser());
if($this->getParameter("portal_activate")) {
$template=$em->getRepository("CadolesPortalBundle:Page")->findoneby(["parentfor"=>"group"]);
$data->setPagetemplate($template);
}
}
if($access=="user") $data->setOwner($this->getUser());
// Création du formulaire
$form = $this->createForm(GroupType::class,$data,array(
@ -785,7 +691,7 @@ class GroupController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm(null,$form,$request,$data,"submit",$access);
$this->getErrorForm(null,$form,$request,$data,"submit");
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -794,7 +700,6 @@ class GroupController extends Controller
$data->setFgtemplate(false);
if($data->getLdapfilter()!="") $data->setFgopen(false);
if($data->getAttributes()!="") $data->setFgopen(false);
if($access=="user") $data->setOwner($this->getUser());
// Icon
$idicon = $form->get('idicon')->getData();
@ -805,15 +710,24 @@ class GroupController extends Controller
$em->persist($data);
$em->flush();
// On s'assure que le propriétaire est bien membre du groupe
$this->ctrlOwner($data);
// 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,$access);
// Retour à la liste
return $this->redirectToRoute("cadoles_core_".$access."_group_users",["id"=>$data->getId(),"idreturn"=>$this->idpage]);
return $this->redirectToRoute("cadoles_core_".$access."_group_users",["id"=>$data->getId()]);
}
// Affichage du formulaire
@ -839,9 +753,6 @@ class GroupController extends Controller
// Récupération de l'enregistrement courant
$em = $this->getDoctrine()->getManager();
$data=$this->getData($id);
$oldowner=$data->getOwner();
$this->canOwner($data,$access);
// Création du formulaire
$form = $this->createForm(GroupType::class,$data,array(
@ -859,7 +770,7 @@ class GroupController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"update",$access);
$this->getErrorForm($id,$form,$request,$data,"update");
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -880,30 +791,10 @@ class GroupController extends Controller
$em->persist($data);
$em->flush();
// On s'assure que le propriétaire est bien membre du groupe
$this->ctrlOwner($data);
// On s'assure que le groupe de travail à bien page d'accueil / calendrier / blog associé
// Sinon on les génère
$this->ctrlFgcanshare($data,$access);
// Si le propriétaire change de main on prévient le nouveau propriétaire
if($data->getOwner()&&$data->getOwner()!=$oldowner&&$this->get('session')->get('fgnotifgroup')) {
// Email à destination de l'inscript pour le prévenir qu'un administrateur doit valider
$text="On vient de vous tranférer la propriété du groupe ".$data->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : Transfert de groupe",
"body_html"=>nl2br($text),
"body_text"=>$text
);
$to = $data->getOwner()->getEmail();
$from = $this->getParameter('noreply');
$fromName = $this->get('session')->get('appname');
$message = $this->container->get('cadoles.core.service.mail');
$message->sendEmail($template, $mail_params, $to, $from, $fromName);
}
// Retour à la liste
return $this->redirectToRoute("cadoles_core_".$access."_group");
}
@ -936,7 +827,6 @@ class GroupController extends Controller
// Récupération de l'enregistrement courant
$data=$this->getData($id);
$this->canOwner($data,$access);
// Vérifier que cet enregistrement est supprimable
if($data->getFgAll()||$data->getFgTemplate())
@ -955,49 +845,10 @@ class GroupController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"delete",$access);
$this->getErrorForm($id,$form,$request,$data,"delete");
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
// Si le groupe est un groupe de travail
if($data->getFgcanshare()) {
// Sur l'ensemble des pages liés
$pages=$data->getPages();
foreach($pages as $page) {
$groups=$page->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($groups->count()==1)
$em->remove($page);
}
// Sur l'ensemble des calendar liés
$calendars=$data->getCalendars();
foreach($calendars as $calendar) {
$groups=$calendar->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($groups->count()==1)
$em->remove($calendar);
}
// Sur l'ensemble des blog liés
$blogs=$data->getBlogs();
foreach($blogs as $blog) {
$groups=$blog->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($groups->count()==1)
$em->remove($blog);
}
// Sur l'ensemble des project liés
$projects=$data->getProjects();
foreach($projects as $project) {
$groups=$project->getGroups();
// si la page est lié qu'à un seul group on peut la supprimer
if($groups->count()==1)
$em->remove($project);
}
}
$em->remove($data);
$em->flush();
@ -1026,18 +877,6 @@ class GroupController extends Controller
{
// Récupération de l'enregistrement courant
$data=$this->getData($id);
$this->canManager($data,$access);
// idreturn ?
$idreturn=$request->get("idreturn");
$em = $this->getDoctrine()->getManager();
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$fields=$config->getValue();
$fields=json_decode($fields,true);
if(!is_array($fields)) $fields=[];
if(!array_key_exists("visite",$fields)) $fields["visite"]["perm"]=0;
$fgviewvisite=($fields["visite"]["perm"]==1);
// Affichage du formulaire
return $this->render($this->labelentity.':users.html.twig', [
@ -1045,272 +884,10 @@ class GroupController extends Controller
'usemenu' => false,
'usesidebar' => ($access=="config"),
'access' => $access,
$this->labeldata => $data,
'idreturn' => $idreturn,
'fgviewvisite' => $fgviewvisite,
$this->labeldata => $data
]);
}
public function groupexportAction(Request $request, $access="config")
{
$em = $this->getDoctrine()->getManager();
$dir = $this->get('kernel')->getRootDir() . '/../uploads/export/';
$file = "exportgroup.csv";
$fs = new Filesystem();
$fs->mkdir($dir);
$csvh = fopen($dir.$file, 'w');
$d = ';'; // this is the default but i like to be explicit
$e = '"'; // this is the default but i like to be explicit
// Entête de colonne
$data=["id","Label","Ouvert","Groupe de Travail","Propriétaire","Date Visite","Cpt Visite","Création Page","Création Calendriers","Création Blogs","Création Projets"];
fputcsv($csvh, $data, $d, $e);
// Liste des utilisateurs en fonction du role de l'utilisateur en cours
$groups=$em->getRepository("CadolesCoreBundle:Group")->findAll();
foreach($groups as $group) {
$data = [
"id"=>$group->getId(),
"label"=>$group->getLabel(),
"fgopen"=>($group->getFgopen()?"oui":"non"),
"fgcanshare"=>($group->getFgcanshare()?"oui":"non"),
"owner"=>($group->getOwner()?$group->getOwner()->getUsername():""),
"visitedate"=>"",
"visitecpt"=>"",
"fgcancreatepage"=>($group->getFgcancreatepage()?"oui":"non"),
"fgcancreatecalendar"=>($group->getFgcancreatecalendar()?"oui":"non"),
"fgcancreateblog"=>($group->getFgcancreateblog()?"oui":"non"),
"fgcancreateproject"=>($group->getFgcancreateproject()?"oui":"non"),
];
$visitecpt="";
$visitelast=null;
foreach($group->getUsers() as $usergroup) {
$visitecpt+=$usergroup->getVisitecpt();
$visitelast=($usergroup->getVisitedate()>$visitelast?$usergroup->getVisitedate():$visitelast);
}
$data["visitedate"]=($visitelast?$visitelast->format("d/m/Y H:i"):"");
$data["visitecpt"]=$visitecpt;
fputcsv($csvh, $data, $d, $e);
}
fclose($csvh);
$response = new BinaryFileResponse($dir.$file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
return $response;
}
public function usergroupexportAction($id,Request $request, $access="config")
{
// Récupération de l'enregistrement courant
$group=$this->getData($id);
$this->canManager($group,$access);
$em = $this->getDoctrine()->getManager();
$dir = $this->get('kernel')->getRootDir() . '/../uploads/export/';
$file = "export-".$id.".csv";
$fs = new Filesystem();
$fs->mkdir($dir);
$csvh = fopen($dir.$file, 'w');
$d = ';'; // this is the default but i like to be explicit
$e = '"'; // this is the default but i like to be explicit
// Entête de colonne
$data=["id","Login","Nom","Prénom","Email","Téléphone",$this->getParameter("labelniveau01"),$this->getParameter("labelniveau02"),"Métier","Fonction","Nom Usage","Autres Prénom","Sexe","Adresse","Date Naissance","Pays Naissance","Ville Naissance","Date Visite","Nb Visites"];
fputcsv($csvh, $data, $d, $e);
// Liste des utilisateurs en fonction du role de l'utilisateur en cours
$qb = $em->createQueryBuilder();
if($this->isGranted('ROLE_ADMIN')||$access=="user") {
$users = $qb->select('user')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:UserGroup','usergroup')
->where('usergroup.group=:group')
->andWhere('usergroup.user=user')
->setParameter("group", $id)
->getQuery()
->getResult();
}
elseif($this->isGranted('ROLE_MODO')) {
$users = $qb->select('user')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:UserGroup','usergroup')
->from('CadolesCoreBundle:Niveau01','niveau01')
->from('CadolesCoreBundle:UserModo', 'usermodo')
->where('usergroup.group=:group')
->andWhere('usergroup.user=user')
->andwhere('user.niveau01=niveau01.id')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("group", $id)
->setParameter("userid", $this->getUser()->getId())
->getQuery()
->getResult();
}
foreach($users as $user) {
$data = [
"id"=>$user->getId(),
"username"=>$user->getUsername(),
"name"=>$user->getLastname(),
"firstname"=>$user->getFirstname(),
"email"=>$user->getEmail(),
"phone"=>$user->getTelephonenumber(),
"niveau01"=>$user->getNiveau01()->getLabel(),
"niveau02"=>($user->getNiveau02()?$user->getNiveau02()->getLabel():""),
"job"=>$user->getJob(),
"position"=>$user->getPosition(),
"usualname"=>$user->getUsualname(),
"givensname"=>$user->getGivensname(),
"gender"=>$user->getGender(),
"postaladress"=>$user->getPostaladress(),
"birthdate"=>($user->getBirthdate()?$user->getBirthdate()->format("d/m/Y"):""),
"birthcountry"=>($user->getBirthcountry()?$user->getBirthcountry()->getLabel():""),
"birthplace"=>($user->getBirthplace()?$user->getBirthplace()->getLabel():""),
"visitedate"=>"",
"visitecpt"=>"",
];
$usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$user,"group"=>$group]);
if($usergroup) {
if($usergroup->getVisitedate()) {
$data["visitedate"]=$usergroup->getVisitedate()->format("d/m/Y H:i");
$data["visitecpt"]=$usergroup->getVisitecpt();
}
}
fputcsv($csvh, $data, $d, $e);
}
fclose($csvh);
$response = new BinaryFileResponse($dir.$file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
return $response;
}
public function statisticAction($id,$access) {
$group=$this->getData($id);
$em = $this->getDoctrine()->getManager();
if(!$group) throw $this->createNotFoundException('Permission denied');
if($access!="config") {
$usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$this->getUser(),"group"=>$group]);
if(!$usergroup) throw $this->createNotFoundException('Permission denied');
}
$groupcptvisite=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptvisite","group"=>$group]);
$groupcptmessage=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptmessage","group"=>$group]);
$groupcptblogarticle=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptblogarticle","group"=>$group]);
$groupcptprojecttask=$em->getRepository("CadolesCoreBundle:Statistic")->findOneBy(["keyvalue"=>"groupcptprojecttask","group"=>$group]);
return $this->render('CadolesCoreBundle:Group:statistic.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => ($access=="config"),
'access' => $access,
'group' => $group,
'groupcptvisite' => $groupcptvisite,
'groupcptmessage' => $groupcptmessage,
'groupcptblogarticle' => $groupcptblogarticle,
'groupcptprojecttask' => $groupcptprojecttask,
]);
}
public function invitationAction($id,Request $request, $access="config")
{
// Récupération de l'enregistrement courant
$em = $this->getDoctrine()->getManager();
$group=$this->getData($id);
$this->canManager($group,$access);
$invitations=$group->getInvitations();
if(!is_array($invitations)) $invitations=[];
foreach($invitations as $key => $mail) {
$user=$em->getRepository("CadolesCoreBundle:User")->findOneBy(["email"=>$mail]);
// Si l'utilisateur est inscript plus la peine de le suivre
if($user) {
$listinvitations[$key]=["email"=>$mail,"statut"=>"","relance"=>false];
$usergroup=$em->getRepository("CadolesCoreBundle:UserGroup")->findOneBy(["user"=>$user,"group"=>$group]);
if($usergroup)
$listinvitations[$key]["statut"]="Inscrit dans le groupe";
else
$listinvitations[$key]["statut"]="Inscrit sur ".$this->get('session')->get('appname')." mais pas dans le groupe";
}
else {
$listinvitations[$key]=["email"=>$mail,"statut"=>"Non inscrit sur ".$this->get('session')->get('appname'),"relance"=>true];
$user=$em->getRepository("CadolesCoreBundle:Registration")->findOneBy(["email"=>$mail]);
if($user) {
$listinvitations[$key]["statut"]=$user->getStatut()->getLabel();
$listinvitations[$key]["relance"]=false;
}
}
}
return $this->render('CadolesCoreBundle:Group:invitations.html.twig',[
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'id' => $id,
'invitations' => $listinvitations,
]);
}
protected function canManager($group,$access) {
if($access!="config") {
$em = $this->getDoctrine()->getManager();
$user=$em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$this->getUser()]);
if(!$user||$user->getRolegroup()<90)
throw $this->createNotFoundException('Permission denied');
}
}
protected function canOwner($group,$access) {
if($access!="config") {
$em = $this->getDoctrine()->getManager();
$isowner=($group->getOwner()==$this->getUser());
if(!$isowner)
throw $this->createNotFoundException('Permission denied');
}
}
protected function ctrlOwner($group) {
$em = $this->getDoctrine()->getManager();
// Le propriétaire passe manager
$usergroups=$em->getRepository("CadolesCoreBundle:Usergroup")->findBy(["group"=>$group,"rolegroup"=>"100"]);
foreach($usergroups as $usergroup) {
$usergroup->setRolegroup(90);
$em->persist($usergroup);
$em->flush();
}
// Le propriétaire prend son role dans le groupe
if($group->getOwner()) {
$usergroup=$em->getRepository("CadolesCoreBundle:Usergroup")->findOneBy(["group"=>$group,"user"=>$group->getOwner()]);
if(!$usergroup) {
$key = Uuid::uuid4();
$usergroup=new UserGroup();
$usergroup->setUser($group->getOwner());
$usergroup->setGroup($group);
$usergroup->setKeyvalue($key);
}
$usergroup->setRolegroup(100);
$em->persist($usergroup);
$em->flush();
}
}
protected function ctrlFgcanshare($group,$access) {
$em = $this->getDoctrine()->getManager();
@ -1325,19 +902,6 @@ class GroupController extends Controller
$em->persist($page);
$em->persist($group);
$em->flush();
}
$pages=$group->getPages();
$this->idpage=$pages[0]->getId();
if($pages[0]->getName()!=$group->getLabel()) {
$pages[0]->setName($group->getLabel());
$em->persist($pages[0]);
$em->flush();
}
foreach($pages as $page) {
$page->setUser($group->getOwner());
$em->persist($page);
$em->flush();
}
// On regarde s'il a au moins un calendrier
@ -1355,19 +919,6 @@ class GroupController extends Controller
$em->persist($calendar);
$em->flush();
}
else {
$calendars=$group->getCalendars();
if($calendars[0]->getName()!=$group->getLabel()) {
$calendars[0]->setName($group->getLabel());
$em->persist($calendars[0]);
$em->flush();
}
foreach($calendars as $calendar) {
$calendar->setUser($group->getOwner());
$em->persist($calendar);
$em->flush();
}
}
// On regarde s'il a au moins un blog
if($group->getBlogs()->isEmpty()) {
@ -1380,48 +931,9 @@ class GroupController extends Controller
$em->persist($blog);
$em->flush();
}
else {
$blogs=$group->getBlogs();
if($blogs[0]->getName()!=$group->getLabel()) {
$blogs[0]->setName($group->getLabel());
$em->persist($blogs[0]);
$em->flush();
}
foreach($blogs as $blog) {
$blog->setUser($group->getOwner());
$em->persist($blog);
$em->flush();
}
}
// On regarde s'il a au moins un project
if($group->getProjects()->isEmpty()) {
$project=new Project();
$project->setName($group->getLabel());
$project->addGroup($group);
if($access=="user")$project->setUser($this->getUser());
$em->persist($project);
$em->flush();
}
else {
$projects=$group->getProjects();
if($projects[0]->getName()!=$group->getLabel()) {
$projects[0]->setName($group->getLabel());
$em->persist($projects[0]);
$em->flush();
}
foreach($projects as $project) {
$project->setUser($group->getOwner());
$em->persist($project);
$em->flush();
}
}
}
}
protected function getDatas()
{
$em = $this->getDoctrine()->getManager();
@ -1454,7 +966,7 @@ class GroupController extends Controller
else return true;
}
protected function getErrorForm($id,$form,$request,$data,$mode,$access) {
protected function getErrorForm($id,$form,$request,$data,$mode) {
if ($form->get('submit')->isClicked()&&$mode=="delete") {
}
@ -1466,21 +978,10 @@ class GroupController extends Controller
$tmp=$this->getEntityBy("CadolesCoreBundle:Niveau02","label",$data->getLabel());
if($tmp) $form->addError(new FormError('Un niveau de rang 02 utilise déjà ce label'));
// On s'assure que le label ne contient pas des caractères speciaux
$string = preg_replace('~[^ éèêôöàïî\'@a-zA-Z0-9._-]~', '', $data->getLabel());
if($string!=$data->getLabel())
{
$form->addError(new FormError('Caractères interdit dans ce label'));
}
if($data->getFgcanshare()&&is_null($data->getPagetemplate()))
$form->addError(new FormError("Un groupe de travail doit avoir un modèle de page d'accueil"));
}
if ($form->get('submit')->isClicked() && $mode=="update" && $access=="user") {
if(!$data->getOwner()) $form->addError(new FormError('Le propriétaire du groupe est obligatoire'));
}
if ($form->get('submit')->isClicked() && !$form->isValid()) {
$this->get('session')->getFlashBag()->clear();
$validator = $this->get('validator');

View File

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

View File

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

View File

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

View File

@ -1,364 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\FormError;
use Cadoles\CoreBundle\Entity\PermModoProfil;
use Cadoles\CoreBundle\Entity\PermModo;
use Cadoles\CoreBundle\Form\PermmodoprofilType;
class PermmodoprofilController extends Controller
{
private $labelroute = 'cadoles_core_config_permmodoprofil';
private $labelentity = 'CadolesCoreBundle:PermModoProfil';
private $labeldata = 'permmodoprofil';
private $labeldatas = 'permmodoprofils';
public function listAction()
{
return $this->render('CadolesCoreBundle:Permmodoprofil:list.html.twig',[
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
]);
}
public function ajaxlistAction(Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$em = $this->getDoctrine()->getManager();
$start=$request->query->get('start');
$length= $request->query->get('length');
$search= $request->query->get('search');
$draw= $request->query->get('draw');
$order= $request->query->get('order');
// Nombre total d'enregistrement
$total = $em->createQueryBuilder()->select('COUNT(table)')->from($this->labelentity,'table')->getQuery()->getSingleScalarResult();
// Nombre d'enregistrement filtré
if($search["value"]=="")
$totalf = $total;
else {
$qb = $em->createQueryBuilder()
->select('COUNT(table)')
->from($this->labelentity,'table')
->where('table.name LIKE :value')
->setParameter("value", "%".$search["value"]."%");
$totalf = $qb->getQuery()->getSingleScalarResult();
}
// Construction du tableau de retour
$output = array(
'draw' => $draw,
'recordsFiltered' => $totalf,
'recordsTotal' => $total,
'data' => array(),
);
// Parcours des Enregistrement
$qb = $em->createQueryBuilder();
$qb->select('table')->from($this->labelentity,'table');
if($search["value"]!="") {
$qb ->andwhere('table.name LIKE :value')
->setParameter("value", "%".$search["value"]."%");
}
switch($order[0]["column"]) {
case 1 :
$qb->orderBy('table.name',$order[0]["dir"]);
break;
}
$datas=$qb->setFirstResult($start)->setMaxResults($length)->getQuery()->getResult();
foreach($datas as $data) {
$action ="<a href='".$this->generateUrl('cadoles_core_config_permmodoprofil_update', array('id'=>$data->getId()))."'><i class='fa fa-file fa-fw'></i></a>";
if($data->getId()>0) $action.="<a href='".$this->generateUrl('cadoles_core_config_permmodoprofil_delete', array('id'=>$data->getId()))."'><i class='fa fa-trash fa-fw'></i></a>";
$action.="<a href='".$this->generateUrl('cadoles_core_config_permmodoprofil_permmodo', array('id'=>$data->getId()))."'><i class='fas fa-check-square fa-fw'></i></a>";
array_push($output["data"],array($action,$data->getName()));
}
// Retour
return new Response(json_encode($output), 200);
}
public function submitAction(Request $request)
{
// Initialisation de l'enregistrement
$data = new PermModoProfil();
// Création du formulaire
$form = $this->createForm(PermmodoprofilType::class,$data,array(
"mode" => "submit",
));
// Récupération des data du formulaire
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm(null,$form,$request,$data,"submit");
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
$data = $form->getData();
$em = $this->getDoctrine()->getManager();
// Sauvegarde
$em->persist($data);
$em->flush();
// Init permission
$this->initPermModo($data);
// Retour à la liste
return $this->redirectToRoute($this->labelroute);
}
// Affichage du formulaire
return $this->render('CadolesCoreBundle:Permmodoprofil:edit.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
$this->labeldata => $data,
'mode' => 'submit',
'form' => $form->createView()
]);
}
public function updateAction($id,Request $request)
{
$em = $this->getDoctrine()->getManager();
// Récupération de l'enregistrement courant
$data=$this->getData($id);
// Création du formulaire
$form = $this->createForm(PermmodoprofilType::class,$data,array(
"mode" => "update"
));
// Récupération des data du formulaire
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"update");
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
$data = $form->getData();
// Sauvegarde
$em->persist($data);
$em->flush();
// Init permission
$this->initPermModo($data);
// Retour à la liste
return $this->redirectToRoute($this->labelroute);
}
// Affichage du formulaire
return $this->render('CadolesCoreBundle:Permmodoprofil:edit.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
$this->labeldata => $data,
'mode' => 'update',
'form' => $form->createView()
]);
}
public function deleteAction($id,Request $request)
{
// Récupération de l'enregistrement courant
$data=$this->getData($id);
// Création du formulaire
$form = $this->createForm(PermmodoprofilType::class,$data,array(
"mode" =>"delete",
));
// Récupération des data du formulaire
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"delete");
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->remove($data);
$em->flush();
return $this->redirectToRoute($this->labelroute);
}
// Affichage du formulaire
return $this->render('CadolesCoreBundle:Permmodoprofil:edit.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
$this->labeldata => $data,
'mode' => 'delete',
'form' => $form->createView()
]);
}
public function permmodoAction($id)
{
$em = $this->getDoctrine()->getManager();
$sidebars=$this->get('session')->get('sidebar');
$perms=[];
foreach($sidebars as $sidebar) {
foreach($sidebar["childs"] as $child) {
$permmod=$em->getRepository("CadolesCoreBundle:PermModo")->findOneBy(["route"=>$child["path"],"permmodoprofil"=>$id]);
if($permmod) {
array_push($perms,['id' => $permmod->getId(), 'label'=>$sidebar['label'].' >> '.$child['label'],'visible'=>$permmod->getVisible()]);
}
}
}
return $this->render('CadolesCoreBundle:Permmodoprofil:permmodo.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
'profil' => $this->getData($id),
'permmodos' => $perms
]);
}
public function permmodoupdateAction(Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) return new JsonResponse(array('message' => 'Interdit'), 400);
$output=array();
$id = $request->request->get('id');
$em = $this->getDoctrine()->getManager();
$permmodo = $this->getDoctrine()->getRepository("CadolesCoreBundle:PermModo")->find($id);
if (!$permmodo) throw $this->createNotFoundException('Unable to find entity.');
$permmodo->setVisible(!$permmodo->getVisible());
$em->persist($permmodo);
$em->flush();
$response = new Response(json_encode($output));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
protected function getDatas()
{
$em = $this->getDoctrine()->getManager();
$datas = $em->getRepository($this->labelentity)->findAll();
return $datas;
}
protected function getData($id)
{
$em = $this->getDoctrine()->getManager();
$data = $em->getRepository($this->labelentity)->find($id);
if (!$data) {
throw $this->createNotFoundException('Unable to find '.$this->labeldata);
}
return $data;
}
protected function getErrorForm($id,$form,$request,$data,$mode) {
if ($form->get('submit')->isClicked()&&$mode=="delete") {
// On s'assure que le profil n'est pas rattaché à des utilisateurs
if($data->getUsers()->count() > 0) {
$form->addError(new FormError('Un utilisateur utilise ce profil de modération : suppression impossible'));
}
}
if ($form->get('submit')->isClicked() && ($mode=="submit" || $mode=="update")) {
}
if ($form->get('submit')->isClicked() && !$form->isValid()) {
$this->get('session')->getFlashBag()->clear();
$validator = $this->get('validator');
$errors = $validator->validate($data);
foreach( $errors as $error ) {
$request->getSession()->getFlashBag()->add("error", $error->getMessage());
}
$errors = $form->getErrors();
foreach( $errors as $error ) {
$request->getSession()->getFlashBag()->add("error", $error->getMessage());
}
}
}
private function initPermModo($profil) {
$this->addModeration($profil,'cadoles_core_config_commun',0);
$this->addModeration($profil,'cadoles_core_config_theme',0);
$this->addModeration($profil,'cadoles_core_config_datauser',0);
$this->addModeration($profil,'cadoles_core_config_datausers',0);
$this->addModeration($profil,'cadoles_core_config_whitelist',0);
$this->addModeration($profil,'cadoles_core_config_niveau01',1);
$this->addModeration($profil,'cadoles_core_config_niveau02',1);
$this->addModeration($profil,'cadoles_core_config_group',1);
$this->addModeration($profil,'cadoles_core_config_registration',1);
$this->addModeration($profil,'cadoles_core_config_user',1);
$this->addModeration($profil,'cadoles_portal_config_pagetemplate',1);
$this->addModeration($profil,'cadoles_portal_config_page',1);
$this->addModeration($profil,'cadoles_portal_config_item',1);
$this->addModeration($profil,'cadoles_portal_config_alert',1);
$this->addModeration($profil,'cadoles_portal_config_calendar',1);
$this->addModeration($profil,'cadoles_portal_config_blog',1);
$this->addModeration($profil,'cadoles_portal_config_project',1);
$this->addModeration($profil,'cadoles_portal_config_flux',1);
$this->addModeration($profil,'cadoles_portal_config_notice',1);
$this->addModeration($profil,'cadoles_portal_config_icon',1);
$this->addModeration($profil,'cadoles_portal_config_syncbalado',0);
$this->addModeration($profil,'cadoles_portal_config_synccdt',0);
$this->addModeration($profil,'cadoles_portal_config_syncgepiannu',0);
$this->addModeration($profil,'cadoles_portal_config_syncgepisiecle',0);
$this->addModeration($profil,'cadoles_portal_config_synclimesurvey',0);
$this->addModeration($profil,'cadoles_portal_config_syncmoodle',0);
$this->addModeration($profil,'cadoles_portal_config_syncnextcloud',0);
$this->addModeration($profil,'cadoles_portal_config_syncsacoche',0);
$this->addModeration($profil,'cadoles_portal_config_syncpiwik',0);
$this->addModeration($profil,'cadoles_portal_config_syncwordpress',0);
$this->addModeration($profil,'cadoles_core_config_statistic',1);
$this->addModeration($profil,'cadoles_core_config_mailing',1);
$this->addModeration($profil,'cadoles_core_config_importuser',0);
$this->addModeration($profil,'cadoles_cron_config',0);
$this->addModeration($profil,'cadoles_cron_config_log',0);
}
private function addModeration($profil,$route,$visible) {
$em = $this->getDoctrine()->getManager();
$entity=$em->getRepository('CadolesCoreBundle:PermModo')->findOneBy(["route"=>$route,"permmodoprofil"=>$profil]);
if(!$entity) {
$entity=new PermModo();
$entity->setRoute($route);
$entity->setVisible($visible);
$entity->setPermmodoprofil($profil);
$em->persist($entity);
$em->flush();
}
}
}

View File

@ -13,7 +13,6 @@ use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\CoreBundle\Entity\Usergroup;
use Cadoles\CoreBundle\Entity\Registration;
use Cadoles\CoreBundle\Form\RegistrationType;
use Cadoles\CoreBundle\Form\UserType;
@ -159,7 +158,7 @@ class RegistrationController extends Controller
$action,
$data->getUsername(),
$data->getEmail(),
$data->getNiveau01()->getLabel()."<br>".$data->getNiveau01other(),
$data->getNiveau01()->getLabel(),
$data->getStatut()->getLabel(),
(is_null($data->getKeyexpire())?"":$data->getKeyexpire()->format('d/m/Y H:i:s'))
));
@ -177,8 +176,6 @@ class RegistrationController extends Controller
$moderegistration = $this->getParameter('moderegistration');
$masteridentity = $this->getParameter('masteridentity');
$groupid = $request->query->get('group');
if($moderegistration=="none"||$masteridentity!="SQL")
throw $this->createNotFoundException('Permission denied');
@ -195,31 +192,14 @@ class RegistrationController extends Controller
// Récupération des data du formulaire
$form->handleRequest($request);
// si mode de registration byuser
if($moderegistration=="byuser") {
$idstatut=2;
}
else {
// On recherche le domaine du mail dans la liste blanche
$email=explode("@",$data->getEmail());
$domaine=end($email);
$whitelist = $em->getRepository("CadolesCoreBundle:Whitelist")->findBy(["label"=>$domaine]);
$idstatut=(!$whitelist?1:2);
}
$statut = $em->getRepository("CadolesCoreBundle:Statut")->find($idstatut);
$data->setStatut($statut);
// Sur erreur
$this->getErrorForm(null,$form,$request,$data,"submit",$idstatut);
$this->getErrorForm(null,$form,$request,$data,"submit");
// Sur validation
// Sur validation(z)
if ($form->get('submit')->isClicked() && $form->isValid()) {
$data = $form->getData();
// On enregistre l'invitation à un groupe dans l'inscription
$data->setGroupid($groupid);
$appname = $this->get('session')->get('appname');
$noreply = $this->getParameter('noreply');
$keyterm = $this->getParameter('keyterm');
@ -234,6 +214,21 @@ class RegistrationController extends Controller
$data->setPassword($password);
*/
// si mode de registration byuser
if($moderegistration=="byuser") {
$idstatut=2;
}
else {
// On recherche le domaine du mail dans la liste blanche
$email=explode("@",$data->getEmail());
$domaine=end($email);
$whitelist = $em->getRepository("CadolesCoreBundle:Whitelist")->findBy(["label"=>$domaine]);
$idstatut=(!$whitelist?1:2);
}
$statut = $em->getRepository("CadolesCoreBundle:Statut")->find($idstatut);
$data->setStatut($statut);
// si non : validation par administrateur
if($idstatut==1) {
// Email à destination de l'inscript pour le prévenir qu'un administrateur doit valider
@ -285,18 +280,11 @@ class RegistrationController extends Controller
array_push($to,$emailmodo["email"]);
}
$url = $this->generateUrl('cadoles_core_config_registration', [], UrlGeneratorInterface::ABSOLUTE_URL);
$motivation = "Login = ".$data->getUsername()."\n";
$motivation.= "Nom = ".$data->getLastname()."\n";
$motivation.= "Prénom = ".$data->getFirstname()."\n";
$motivation.= "Mail = ".$data->getEmail()."\n";
$motivation.= $this->getParameter("labelniveau01")." = ".$data->getNiveau01()->getLabel()." ".$data->getNiveau01other()."\n\n";
$motivation.= $data->getMotivation();
$text="Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.";
$mail_params=array(
"subject" => $appname." : Inscription à valider",
"body_html"=>"Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.<br><br>Veuillez vérifier cette inscription à cette adresse:<br><a href='$url'>$url</a><br><br>".nl2br($motivation),
"body_text"=>"Un utilisateur dont le mail nest pas en liste blanche souhaite sinscrire au ".$appname.".\nMerci dapprouver son inscription pour finaliser celle-ci.\n\nVeuillez vérifier cette inscription à cette adresse:\n$url\n\n".$motivation
"subject" => $appname." : Inscription à valider",
"body_html"=>nl2br($text),
"body_text"=>$text
);
$message = $this->container->get('cadoles.core.service.mail');
@ -342,8 +330,6 @@ class RegistrationController extends Controller
// A voir retour sur un écran d'info indiquant si validation par admion ou s'il doit matter ses email
$this->get('session')->set('registrationinfo', $info);
$this->get('session')->set('registrationmode', "info");
$this->get('session')->set('registrationredirectto', null);
return $this->redirectToRoute('cadoles_core_registration_info');
}
else {
@ -362,16 +348,12 @@ class RegistrationController extends Controller
{
$info = $this->get('session')->get('registrationinfo');
$mode = $this->get('session')->get('registrationmode');
$redirectto = $this->get('session')->get('registrationredirectto');
return $this->render($this->labelentity.':info.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => false,
'info' => $info,
'mode' => $mode,
'redirectto' => $redirectto,
'mode' => $mode
]);
}
@ -398,19 +380,7 @@ class RegistrationController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"send",null);
// Sur validation
if ($form->get('save')->isClicked() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$data = $form->getData();
// Sauvegarde
$em->persist($data);
$em->flush();
return $this->redirectToRoute('cadoles_core_config_registration');
}
$this->getErrorForm($id,$form,$request,$data,"send");
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -473,7 +443,6 @@ class RegistrationController extends Controller
{
$moderegistration = $this->getParameter('moderegistration');
$masteridentity = $this->getParameter('masteridentity');
if($moderegistration=="none"||$masteridentity!="SQL")
throw $this->createNotFoundException('Permission denied');
@ -496,7 +465,6 @@ class RegistrationController extends Controller
$this->get('session')->set('registrationinfo', $info);
$this->get('session')->set('registrationmode', $mode);
$this->get('session')->set('registrationredirectto', null);
}
else {
$url=$this->getUrlLogin();
@ -516,12 +484,9 @@ class RegistrationController extends Controller
$user->setSalt($data[0]->getSalt());
$user->setPasswordDirect($data[0]->getPassword());
$user->setVisible($data[0]->getVisible());
$user->setMotivation($data[0]->getMotivation());
$user->setNote($data[0]->getNote());
$user->setNiveau01($data[0]->getNiveau01());
$user->setSiren($data[0]->getNiveau01()->getSiren());
$user->setNiveau01other($data[0]->getNiveau01other());
$user->setNiveau02($data[0]->getNiveau02());
if($data[0]->getNiveau02()!==null) $user->setSiret($data[0]->getNiveau02()->getSiret());
@ -541,39 +506,11 @@ class RegistrationController extends Controller
$user->setAuthlevel("simple");
$user->setBelongingpopulation("agent");
// Sauvegarde
$em->persist($user);
$em->flush();
// Si invitation à un groupe : on le rattache directement à ce groupe
$groupid=$data[0]->getGroupid();
$userid=$user->getId();
if($groupid) {
$group=$em->getRepository("CadolesCoreBundle:Group")->find($groupid);
if($group) {
$idpage =$group->getPages()->first()->getId();
$url = $this->generateUrl('cadoles_core_redirect', ["route"=>"cadoles_core_home","id"=>$idpage], UrlGeneratorInterface::ABSOLUTE_URL);
$info="<p>Votre compte est à présent activé</p><p>Vous allez être redirigé vers la mire de connexion puis vers votre groupe de travail</p><p><a href='".$url."'>Connexion</a>";
$this->get('session')->set('registrationinfo', $info);
$this->get('session')->set('registrationredirectto', $url);
$key = Uuid::uuid4();
$usergroup=new UserGroup();
$user=$em->getRepository("CadolesCoreBundle:User")->find($userid);
$usergroup->setUser($user);
$usergroup->setGroup($group);
$usergroup->setKeyvalue($key);
$usergroup->setRolegroup(0);
$em->persist($usergroup);
$em->flush();
// Notification message
$message="Inscription de l'utilisateur<br>".$user->getLastname()." ".$user->getFirstname()."<br>Inscription via invitation";
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$userid,$groupid,$message);
}
}
$em->remove($data[0]);
$em->flush();
}
@ -606,7 +543,7 @@ class RegistrationController extends Controller
$form->handleRequest($request);
// Sur erreur
$this->getErrorForm($id,$form,$request,$data,"delete",null);
$this->getErrorForm($id,$form,$request,$data,"delete");
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
@ -631,7 +568,7 @@ class RegistrationController extends Controller
{
$moderegistration = $this->getParameter('moderegistration');
$masteridentity = $this->getParameter('masteridentity');
if($masteridentity!="SQL")
if($moderegistration=="none"||$masteridentity!="SQL")
throw $this->createNotFoundException('Permission denied');
// Création du formulaire
@ -703,7 +640,6 @@ class RegistrationController extends Controller
$mode="info";
$this->get('session')->set('registrationinfo', $info);
$this->get('session')->set('registrationmode', $mode);
$this->get('session')->set('registrationredirectto', null);
return $this->redirectToRoute('cadoles_core_registration_info');
}
@ -718,8 +654,9 @@ class RegistrationController extends Controller
public function resetpwd02Action($key,Request $request)
{
$moderegistration = $this->getParameter('moderegistration');
$masteridentity = $this->getParameter('masteridentity');
if($masteridentity!="SQL")
if($moderegistration=="none"||$masteridentity!="SQL")
throw $this->createNotFoundException('Permission denied');
$now=new \DateTime();
@ -740,7 +677,6 @@ class RegistrationController extends Controller
$mode="danger";
$this->get('session')->set('registrationinfo', $info);
$this->get('session')->set('registrationmode', $mode);
$this->get('session')->set('registrationredirectto', null);
return $this->redirectToRoute('cadoles_core_registration_info');
}
else {
@ -755,17 +691,17 @@ class RegistrationController extends Controller
$password=$data["password"];
$message="";
if(!empty($password)) {
if (strlen($password) < $this->getParameter("minpassword")) {
$message = "Votre mot de passe doit contenir au minimum ".$this->getParameter("minpassword")." caractères, constitué de chiffres, de lettres et caractères spéciaux";
if (strlen($password) < '8') {
$message = "Votre mot de passe doit contenir au minimum 8 caractères, constitué de chiffres, de lettres et caractères spéciaux";
}
elseif(!preg_match("#[0-9]+#",$password)) {
$message = "Votre mot de passe doit contenir au minimum ".$this->getParameter("minpassword")." caractères, constitué de chiffres, de lettres et caractères spéciaux";
$message = "Votre mot de passe doit contenir au minimum 8 caractères, constitué de chiffres, de lettres et caractères spéciaux";
}
elseif(!preg_match("#[a-zA-Z]+#",$password)) {
$message = "Votre mot de passe doit contenir au minimum ".$this->getParameter("minpassword")." caractères, constitué de chiffres, de lettres et caractères spéciaux";
$message = "Votre mot de passe doit contenir au minimum 8 caractères, constitué de chiffres, de lettres et caractères spéciaux";
}
elseif(!preg_match("/[|!@#$%&*\/=?,;.:\-_+~^\\\]/",$password)) {
$message = "Votre mot de passe doit contenir au minimum ".$this->getParameter("minpassword")." caractères, constitué de chiffres, de lettres et caractères spéciaux";
$message = "Votre mot de passe doit contenir au minimum 8 caractères, constitué de chiffres, de lettres et caractères spéciaux";
}
}
@ -800,7 +736,6 @@ class RegistrationController extends Controller
$mode="success";
$this->get('session')->set('registrationinfo', $info);
$this->get('session')->set('registrationmode', $mode);
$this->get('session')->set('registrationredirectto', null);
return $this->redirectToRoute('cadoles_core_registration_info');
}
@ -865,7 +800,7 @@ class RegistrationController extends Controller
}
protected function getErrorForm($id,$form,$request,$data,$mode,$idstatut) {
protected function getErrorForm($id,$form,$request,$data,$mode) {
if ($form->get('submit')->isClicked()&&$mode=="delete") {
}
@ -886,25 +821,6 @@ class RegistrationController extends Controller
if($this->getUserBy("username",$data->getUsername())||$this->getUserBy("email",$data->getEmail())) {
$form->addError(new FormError('Un utilisateur utilise déjà ce login ou cet email'));
}
// Si niveau01 commence par autre = niveau01other obligatoire
$niveau01=strtolower($data->getNiveau01()->getLabel());
if(stripos($niveau01,"autre")===0) {
if(!$data->getNiveau01other()) {
$form->addError(new FormError("Merci de compléter le champ 'Autre ".$this->getParameter("labelniveau01")."'"));
}
}
// Si validation par administrateur demander une motivation
$moderegistration = $this->getParameter('moderegistration');
if(is_null($data->getMotivation())&&$moderegistration=="byadmin") {
// On recherche le domaine du mail dans la liste blanche
$email=explode("@",$data->getEmail());
$domaine=end($email);
$whitelist = $this->getDoctrine()->getManager()->getRepository("CadolesCoreBundle:Whitelist")->findBy(["label"=>$domaine]);
if(!$whitelist)
$form->addError(new FormError("Attention, le suffixe de votre adresse mail nest pas dans la liste des administrations autorisées, merci de bien vouloir privilégier votre adresse professionnelle si vous en avez une.<br>Si ce nest pas le cas, il faut que vous renseigniez la case motivation de votre demande"));
}
}
if ($form->get('submit')->isClicked() && !$form->isValid()) {

View File

@ -3,47 +3,35 @@
namespace Cadoles\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\FormError;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Output\OutputInterface;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\CoreBundle\Entity\UserGroup;
use Cadoles\CoreBundle\Entity\UserModo;
use Cadoles\CoreBundle\Entity\Niveau01;
use Cadoles\CoreBundle\Entity\Niveau02;
use Cadoles\WebsocketBundle\Entity\Message;
use Cadoles\CoreBundle\Form\UserType;
use Cadoles\PortalBundle\Entity\Bookmark;
class RestController extends Controller
{
// rest/login
// Permet de tester l'accès à ninegate
// key = parametre obligatoire
// key = clé d'accès de l'api
public function loginAction(Request $request)
public function userAction($key, $login, Request $request)
{
$key=$request->get('key');
$output=[];
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
return new Response(json_encode($output), 200);
}
// rest/user/{login}
// Récupération des informations utilisateurs issus du masteridentity
// key = parametre obligatoire
// key = clé d'accès de l'api
// only = paramétre optionnel
// only = liste des informations désirés = user, items, bookmarks, groups, alerts, calendars
// ssoitems = paramétre optionnel
// ssoitems = liste des items issu du ssoitems
public function userAction($login, Request $request)
{
$key=$request->get('key');
$only=($request->get('only')?explode(",",$request->get('only')):"");
$ssoitems=($request->get('ssoitems')?explode(",",$request->get('ssoitems')):[]);
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
@ -62,386 +50,74 @@ class RestController extends Controller
}
// Format de sortie
if($only==""||in_array("user",$only)) $output["user"] = [];
if($only==""||in_array("bookmarks",$only)) $output["bookmarks"] = [];
if($only==""||in_array("items",$only)) $output["items"] = [];
if($only==""||in_array("items",$only)) $output["itemcategorys"] = [];
if($only==""||in_array("groups",$only)) $output["groups"] = [];
if($only==""||in_array("alerts",$only)) $output["alerts"] = [];
if($only==""||in_array("alerts",$only)) $output["alertcategorys"] = [];
if($only==""||in_array("calendars",$only)) $output["calendars"] = [];
if($only==""||in_array("calendars",$only)) $output["calendarevents"] = [];
$output["user"] = [];
$output["bookmarks"] = [];
$output["items"] = [];
$output["itemcategorys"] = [];
$bookmarks=null;
$items=null;
$itemcategorys=null;
$weburl="https://".$this->getParameter("weburl")."/".$this->getParameter("alias")."/";
$em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,$ssoitems,4);
//$this->getDoctrine()->getRepository("CadolesPortalBundle:Page")->getPagesUser($user,null,$entity,$pagesuser,$pagesadmin,$groupsshared);
$em->getRepository("CadolesPortalBundle:Item")->getUserItems($user,$bookmarks,$items,$itemcategorys,null,3);
// Construction de la réponse
if($only==""||in_array("user",$only)) {
$output["user"]["firstname"] = $user->getFirstname();
$output["user"]["lastname"] = $user->getLastname();
$output["user"]["email"] = $user->getEmail();
$output["user"]["avatar"] = $weburl."uploads/avatar/".$user->getAvatar();
$output["user"]["niveau01"] = $user->getNiveau01()->getLabel();
$output["user"]["niveau02"] = ($user->getNiveau02()?$user->getNiveau02()->getLabel():null);
$output["user"]["role"] = $user->getRole();
}
$output["user"]["firstname"] = $user->getFirstname();
$output["user"]["lasttname"] = $user->getLastname();
$output["user"]["email"] = $user->getEmail();
$output["user"]["avatar"] = $weburl."uploads/avatar/".$user->getAvatar();
$output["user"]["niveau01"] = $user->getNiveau01()->getLabel();
$output["user"]["niveau02"] = ($user->getNiveau02()?$user->getNiveau02()->getLabel():null);
if($only==""||in_array("bookmarks",$only)) {
if($bookmarks) {
foreach($bookmarks as $bookmark) {
$tmp=[];
$tmp["id"] = $bookmark->getId();
$tmp["title"] = $bookmark->getTitle();
$tmp["url"] = $bookmark->getUrl();
$tmp["target"] = $bookmark->getTarget();
$tmp["item"] = ($bookmark->getItem()?$bookmark->getItem()->getId():null);
$tmp["order"] = 0;
$tmp["color"] = "#".($bookmark->getColor()?$bookmark->getColor():$this->get('session')->get('color')["main"]);
$tmp["icon"] = $weburl.($bookmark->getIcon()?$bookmark->getIcon()->getLabel():"uploads/icon/icon_pin.png");
array_push($output["bookmarks"],$tmp);
}
}
}
if($only==""||in_array("items",$only)) {
if($items) {
foreach($items as $item) {
$tmp=[];
$tmp["id"] = $item->getId();
$tmp["title"] = $item->getTitle();
$tmp["url"] = $item->getUrl();
$tmp["target"] = $item->getTarget();
$tmp["order"] = $item->getRoworder();
$tmp["color"] = "#".($item->getColor()?$item->getColor():$this->get('session')->get('color')["main"]);
$tmp["icon"] = $weburl.($item->getIcon()?$item->getIcon()->getLabel():"uploads/icon/icon_pin.png");
$tmp["essential"] = $item->getEssential();
$tmp["category"] = $item->getItemcategory()->getId();
array_push($output["items"],$tmp);
}
}
if($itemcategorys) {
foreach($itemcategorys as $itemcategory) {
$tmp=[];
$tmp["id"] = $itemcategory->getId();
$tmp["title"] = $itemcategory->getLabel();
$tmp["order"] = $itemcategory->getRoworder();
$tmp["color"] = "#".($itemcategory->getColor()?$itemcategory->getColor():$this->get('session')->get('color')["main"]);
array_push($output["itemcategorys"],$tmp);
}
}
}
if($only==""||in_array("groups",$only)) {
foreach($user->getGroups() as $usergroup) {
if($bookmarks) {
foreach($bookmarks as $bookmark) {
$tmp=[];
$tmp["id"] = $usergroup->getGroup()->getId();
$tmp["title"] = $usergroup->getGroup()->getLabel();
$tmp["id"] = $bookmark->getId();
$tmp["title"] = $bookmark->getTitle();
$tmp["url"] = $bookmark->getUrl();
$tmp["target"] = $bookmark->getTarget();
$tmp["order"] = 0;
$tmp["color"] = ($bookmark->getColor()?$bookmark->getColor():$this->get('session')->get('color')["main"]);
$tmp["icon"] = $weburl.($bookmark->getIcon()?$bookmark->getIcon()->getLabel():"uploads/icon/icon_pin.png");
array_push($output["groups"],$tmp);
array_push($output["bookmarks"],$tmp);
}
}
if($only==""||in_array("alerts",$only)) {
$alerts=$em->getRepository("CadolesPortalBundle:Alert")->getUserAlerts($user,null,null,$ssoitems);
foreach($alerts as $alert) {
if($items) {
foreach($items as $item) {
$tmp=[];
$tmp["id"] = $alert->getId();
$tmp["title"] = $alert->getTitle();
$tmp["order"] = $alert->getRoworder();
$tmp["category"] = $alert->getAlertcategory()->getId();
$tmp["description"] = $alert->getContent();
$tmp["fghideable"] = $alert->getFghideable();
$tmp["id"] = $item->getId();
$tmp["title"] = $item->getTitle();
$tmp["url"] = $item->getUrl();
$tmp["target"] = $item->getTarget();
$tmp["order"] = $item->getRoworder();
$tmp["color"] = ($item->getColor()?$item->getColor():$this->get('session')->get('color')["main"]);
$tmp["icon"] = $weburl.($item->getIcon()?$item->getIcon()->getLabel():"uploads/icon/icon_pin.png");
$tmp["essential"] = $item->getEssential();
$tmp["category"] = $item->getItemcategory()->getId();
array_push($output["alerts"],$tmp);
}
$alertcategorys=$em->getRepository("CadolesPortalBundle:Alertcategory")->findAll();
foreach($alertcategorys as $alertcategory) {
$tmp=[];
$tmp["id"] = $alertcategory->getId();
$tmp["title"] = $alertcategory->getLabel();
$tmp["color"] = "#".($alertcategory->getColor()?$alertcategory->getColor():$this->get('session')->get('color')["main"]);
$tmp["icon"] = $weburl.($alertcategory->getIcon()?$alertcategory->getIcon()->getLabel():"uploads/icon/icon_pin.png");
array_push($output["alertcategorys"],$tmp);
array_push($output["items"],$tmp);
}
}
if($only==""||in_array("calendars",$only)) {
$events=$em->getRepository("CadolesPortalBundle:Calendarevent")->getUserCalendarevents($user,$this->get('session')->get('color')["main"],null,null,$firstcalendar);
foreach($events as $event) {
if($itemcategorys) {
foreach($itemcategorys as $itemcategory) {
$tmp=[];
$tmp["id"] = $event["id"];
$tmp["title"] = $event["title"];
$tmp["description"] = $event["description"];
$tmp['start'] = $event["start"];
$tmp['end'] = $event["end"];
$tmp['allday'] = $event["allDay"];
$tmp['calendar'] = $event["calendar"];
$tmp["id"] = $itemcategory->getId();
$tmp["title"] = $itemcategory->getLabel();
$tmp["order"] = $itemcategory->getRoworder();
$tmp["color"] = ($itemcategory->getColor()?$itemcategory->getColor():$this->get('session')->get('color')["main"]);
array_push($output["calendarevents"],$tmp);
$tmp=[];
$tmp["id"] = $event["calendar"];
$tmp["title"] = $event["name"];
$tmp["color"] = $event["color"];
if(!in_array($tmp,$output["calendars"]))
array_push($output["calendars"],$tmp);
array_push($output["itemcategorys"],$tmp);
}
}
// Retour
return new Response(json_encode($output), 200);
}
// rest/users
// Liste l'ensemble des utilisateurs de ninegate et retourne ses attributs
// key = parametre obligatoire
// key = clé d'accès de l'api
public function usersAction(Request $request)
{
$key=$request->get('key');
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
$weburl="https://".$this->getParameter("weburl")."/".$this->getParameter("alias")."/";
$em = $this->getDoctrine()->getManager();
$output = [];
$users=$em->getRepository('CadolesCoreBundle:User')->findAll();
foreach($users as $user) {
// Construction de la réponse
$output[$user->getId()]["id"] = $user->getId();
$output[$user->getId()]["username"] = $user->getUsername();
$output[$user->getId()]["firstname"] = $user->getFirstname();
$output[$user->getId()]["lastname"] = $user->getLastname();
$output[$user->getId()]["email"] = $user->getEmail();
$output[$user->getId()]["avatar"] = $weburl."uploads/avatar/".$user->getAvatar();
$output[$user->getId()]["role"] = $user->getRole();
}
// Retour
return new Response(json_encode($output), 200);
}
// rest/groups
// Liste l'ensemble des groupes de ninegate et retourne ses attributs ainsi que les membres des groupes en question
// key = parametre obligatoire
// key = clé d'accès de l'api
public function groupsAction(Request $request)
{
$key=$request->get('key');
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
$em = $this->getDoctrine()->getManager();
$output = [];
$groups=$em->getRepository('CadolesCoreBundle:Group')->findAll();
foreach($groups as $group) {
// Construction de la réponse
$output[$group->getId()]["id"] = $group->getId();
$output[$group->getId()]["name"] = $group->getLabel();
$output[$group->getId()]["users"] = [];
$usergroups=$group->getUsers();
foreach($usergroups as $usergroup) {
$user=$usergroup->getUser();
$output[$group->getId()]["users"][$user->getId()]["id"]=$user->getId();
$output[$group->getId()]["users"][$user->getId()]["username"]=$user->getUsername();
}
}
// Retour
return new Response(json_encode($output), 200);
}
// rest/bookmark/add
// Ajout d'un item ninegate existant comme bookmark d'un utilisateur
// key = parametre obligatoire
// key = clé d'accès de l'api
// login = parametre obligatoire
// login = uid de l'utilisateur sur lequel on souhaite ajouter un bookmark
// iditem = parametre obligatoire
// iditem = id de l'item ninegate qui doit etre ajouté en tant que bookmark
public function bookmarkaddAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$key=$request->get('key');
$login=$request->get('login');
$iditem=$request->get('iditem');
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
// Tester présence des parametres
if(is_null($login)||is_null($iditem)) {
$output["error"]="missing parameter : login - iditem";
return new Response(json_encode($output), 400);
}
// Tester l'existance du login
$user=$em->getRepository('CadolesCoreBundle:User')->findOneBy(["username"=>$login]);
if(!$user) {
$output["error"]="user not exist";
return new Response(json_encode($output), 400);
}
// Tester l'existance de l'item
$item=$em->getRepository('CadolesPortalBundle:Item')->find($iditem);
if(!$item) {
$output["error"]="item not exist";
return new Response(json_encode($output), 400);
}
$bookmark = $em->getRepository('CadolesPortalBundle:Bookmark')->findOneBy(["user"=>$user,"item"=>$item]);
if(!$bookmark) {
$bookmark = new Bookmark();
$bookmark->setTitle($item->getTitle());
$bookmark->setSubtitle($item->getSubtitle());
$bookmark->setUrl($item->getUrl());
$bookmark->setIcon($item->getIcon());
$bookmark->setColor($item->getColor());
$bookmark->setTarget($item->getTarget());
$bookmark->setItem($item);
$bookmark->setUser($user);
$em->persist($bookmark);
$em->flush();
}
$output=$bookmark->getId();
return new Response(json_encode($output), 200);
}
// rest/bookmark/del
// Suppression d'un bookmark
// key = parametre obligatoire
// key = clé d'accès de l'api
// idbookmark = parametre obligatoire
// idbookmark = id du bookmark à supprimer
public function bookmarkdelAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$key=$request->get('key');
$idbookmark=$request->get('idbookmark');
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
// Tester présence des parametres
if(is_null($idbookmark)) {
$output["error"]="missing parameter : idbookmark";
return new Response(json_encode($output), 400);
}
// Tester l'existance du bookmark
$bookmark=$em->getRepository('CadolesPortalBundle:Bookmark')->find($idbookmark);
if(!$bookmark) {
$output["error"]="bookmark not exist";
return new Response(json_encode($output), 400);
}
$em->remove($bookmark);
$em->flush();
$output=[];
return new Response(json_encode($output), 200);
}
// rest/alert/hide
// Cache une alert à un utilisateur
// key = parametre obligatoire
// key = clé d'accès de l'api
// login = parametre obligatoire
// login = uid de l'utilisateur sur lequel on souhaite ajouter un bookmark
// idalert = parametre obligatoire
// idalert = id de l'alert à chacher
public function alerthideAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$key=$request->get('key');
$login=$request->get('login');
$idalert=$request->get('idalert');
// Vérification de la clé
$realkey = $this->getParameter("apikeyninegate");
if($key!=$realkey) {
$output["error"]="error key";
return new Response(json_encode($output), 400);
}
// Tester présence des parametres
if(is_null($login)||is_null($idalert)) {
$output["error"]="missing parameter : login - idalert";
return new Response(json_encode($output), 400);
}
// Tester l'existance du login
$user=$em->getRepository('CadolesCoreBundle:User')->findOneBy(["username"=>$login]);
if(!$user) {
$output["error"]="user not exist";
return new Response(json_encode($output), 400);
}
// Tester l'existance de l'alert
$alert=$em->getRepository('CadolesPortalBundle:Alert')->find($idalert);
if(!$alert) {
$output["error"]="alert not exist";
return new Response(json_encode($output), 400);
}
// Tester que l'alert est masquable
if(!$alert->getFghideable()) {
$output["error"]="alert not hideable";
return new Response(json_encode($output), 400);
}
// Masquer l'alert
if(!$alert->getReaders()->contains($user)) {
$alert->addReader($user);
$em->persist($alert);
$em->flush();
}
$output=[];
return new Response(json_encode($output), 200);
}
}

View File

@ -170,7 +170,7 @@ class SecurityController extends Controller
case "CAS":
// Init Client CAS
\phpCAS::setDebug(false);
@\phpCAS::client(CAS_VERSION_2_0, $this->container->getParameter('cas_host'), $this->container->getParameter('cas_port'), is_null($this->container->getParameter('cas_path')) ? '' : $this->container->getParameter('cas_path'), false);
\phpCAS::client(CAS_VERSION_2_0, $this->container->getParameter('cas_host'), $this->container->getParameter('cas_port'), is_null($this->container->getParameter('cas_path')) ? '' : $this->container->getParameter('cas_path'), false);
\phpCAS::setNoCasServerValidation();
if(\phpCAS::checkAuthentication()) {
@ -192,11 +192,4 @@ class SecurityController extends Controller
return new Response();
}
public function redirectAction($route,$id,Request $request) {
if($route=="cadoles_core_home")
return $this->redirectToRoute($route,["id"=>$id]);
else
return $this->redirectToRoute("cadoles_core_home",["gotoroute"=>$route,"gotoid"=>$id]);
}
}

View File

@ -1,75 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\HttpFoundation\Session\Session;
class SondeController extends Controller
{
public function sondeAction()
{
// Debug sonde
$fgdebug = true;
// Calcul du login
$user=$this->getUser();
if($user) $loginsonde=crypt($user->getUsername(),"dkywqZPYNHtWDnSxACjXVcIsFuaiQT");
else $loginsonde="";
// Calcul du profil
$profilsonde="visiteur";
if($user) {
$profilsonde="utilisateur";
$attributes=$this->get('session')->get('attributes');
if(isset($attributes["ENTPersonProfils"])) $profilsonde=$attributes["ENTPersonProfils"];
}
// Calcul de la provenance
$e = explode('.', $_SERVER["REMOTE_ADDR"]);
$s = sizeof($e);
if(($e[0]=="172"&&$e[1]=="30")||($e[0]=="172"&&$e[1]=="16")||($e[0]=="10"&&($e[1]=="77"||$e[1]=="93"||$e[1]=="94")))
$provenancesonde='interne';
else
$provenancesonde='externe';
// Calcul du service associé à la page
$request = $this->get('request_stack')->getMasterRequest();
$usage=$request->query->get('usage');
$route = $request->attributes->get('_route');
if($route=="cadoles_core_user_file_list"||$route=="cadoles_core_home")
$usagesonde="nosonde";
elseif($route=="cadoles_portal_user_page_view") {
if($usage=="group") $usagesonde="collaboratif";
elseif($usage=="user") $usagesonde="collaboratif";
elseif($usage=="accueil") $usagesonde="accueil";
else $usagesonde="portail";
}
elseif(stripos($route,"cadoles_portal_user_calendar")!==false)
$usagesonde="calendrier";
elseif(stripos($route,"cadoles_portal_user_project")!==false)
$usagesonde="calendrier";
elseif(stripos($route,"cadoles_portal_user_blog")!==false)
$usagesonde="collaboratif";
elseif(stripos($route,"cadoles_core_user_file")!==false)
$usagesonde="fichier";
else
$usagesonde="portail";
$urlsonde="";
if($usagesonde!="nosonde") {
$url=$this->getParameter("widsonde_url");
$app=$this->getParameter("alias");
$urlsonde = $url."?appli=$app&profil=$profilsonde&login=$loginsonde&provenance=$provenancesonde&usage=$usagesonde&route=$route&fgdebug=$fgdebug";
}
return $this->render('CadolesCoreBundle:Sonde:sonde.html.twig',['urlsonde' => $urlsonde]);
}
}

View File

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

View File

@ -68,6 +68,9 @@ class ThemeController extends Controller
$logo=$request->query->get('logo');
if(!empty($logo)) $session->set('logo',"bundles/cadolescore/themes/$themename/".$logo);
$fgheader=$request->query->get('fgheader');
if(!empty($fgheader)) $session->set('fgheader',boolval($fgheader));
$header=$request->query->get('header');
if(!empty($header)) $session->set('header',"bundles/cadolescore/themes/$themename/".$header);

View File

@ -16,9 +16,6 @@ use Symfony\Component\Console\Output\OutputInterface;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Cadoles\CoreBundle\Entity\User;
use Cadoles\CoreBundle\Entity\UserGroup;
@ -28,7 +25,6 @@ use Cadoles\CoreBundle\Entity\Niveau02;
use Cadoles\WebsocketBundle\Entity\Message;
use Cadoles\CoreBundle\Form\UserType;
use Cadoles\CoreBundle\Form\MailingType;
class UserController extends Controller
@ -40,14 +36,6 @@ class UserController extends Controller
public function listAction($access)
{
// Permission
if($access=="user") {
$permannu=$this->get('session')->get('permannu');
if($permannu=="NO_BODY") throw $this->createNotFoundException('Permission denied');
if($permannu=="ROLE_ANIM" && $this->isGranted('ROLE_USER')) throw $this->createNotFoundException('Permission denied');
if($permannu=="ROLE_MODO" && ($this->isGranted('ROLE_ANIM') || $this->isGranted('ROLE_USER'))) throw $this->createNotFoundException('Permission denied');
}
$em = $this->getDoctrine()->getManager();
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$fields=$config->getValue();
@ -77,92 +65,71 @@ class UserController extends Controller
$draw= $request->query->get('draw');
$order= $request->query->get('order');
$viewniveau02=$this->getParameter('viewniveau02');
$fields=$this->getDefaultDatauser();
$fgusevisible=!($fields["visible"]["perm"]==0);
// Nombre total d'enregistrement
if($access=="config") {
if($this->isGranted('ROLE_ADMIN')) {
$total = $em->createQueryBuilder()->select('COUNT(user)')->from($this->labelentity,'user')->getQuery()->getSingleScalarResult();
}
elseif($this->isGranted('ROLE_MODO')) {
$usermodo=$this->get('security.token_storage')->getToken()->getUser()->getId();
$total = $em->createQueryBuilder()
->select('COUNT(user)')
->from($this->labelentity,'user')
->from("CadolesCoreBundle:UserModo",'usermodo')
->where("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo)
->getQuery()->getSingleScalarResult();
}
if($this->isGranted('ROLE_ADMIN')||$access=="user")
$total = $em->createQueryBuilder()->select('COUNT(user)')->from($this->labelentity,'user')->getQuery()->getSingleScalarResult();
elseif($this->isGranted('ROLE_MODO')) {
$usermodo=$this->get('security.token_storage')->getToken()->getUser()->getId();
$total = $em->createQueryBuilder()
->select('COUNT(user)')
->from($this->labelentity,'user')
->from("CadolesCoreBundle:UserModo",'usermodo')
->where("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo)
->getQuery()->getSingleScalarResult();
}
else {
if($fgusevisible) {
$total = $em->createQueryBuilder()->select('COUNT(user)')->from($this->labelentity,'user')->where('user.visible=true')->getQuery()->getSingleScalarResult();
}
else {
$total = $em->createQueryBuilder()->select('COUNT(user)')->from($this->labelentity,'user')->getQuery()->getSingleScalarResult();
}
elseif($this->isGranted('ROLE_ANIM')||$this->isGranted('ROLE_USER')) {
$niveau01=$this->get('security.token_storage')->getToken()->getUser()->getNiveau01();
$total = $em->createQueryBuilder()
->select('COUNT(user)')
->from($this->labelentity,'user')
->where("user.niveau01 = :niveau01")
->setParameter("niveau01", $niveau01)
->getQuery()->getSingleScalarResult();
}
// Nombre d'enregistrement filtré
if($search["value"]=="")
$totalf = $total;
else {
if($access=="config") {
if($this->isGranted('ROLE_ADMIN')) {
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
elseif($this->isGranted('ROLE_MODO')) {
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->from('CadolesCoreBundle:UserModo', 'usermodo')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo)
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
}
else {
if($fgusevisible) {
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.visible=true')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
else {
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
}
if($this->isGranted('ROLE_ADMIN')||$access=="user")
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
elseif($this->isGranted('ROLE_MODO'))
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->from('CadolesCoreBundle:UserModo', 'usermodo')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo)
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
elseif($this->isGranted('ROLE_ANIM')||$this->isGranted('ROLE_USER'))
$totalf= $em->createQueryBuilder()
->select('COUNT(user)')
->from('CadolesCoreBundle:User','user')
->from('CadolesCoreBundle:Niveau01', 'niveau01')
->where('user.niveau01=niveau01.id')
->andWhere('user.username LIKE :value OR user.firstname LIKE :value OR user.lastname LIKE :value OR user.email LIKE :value OR user.role LIKE :value OR niveau01.label LIKE :value')
->andWhere("user.niveau01 = :niveau01")
->setParameter("niveau01", $niveau01)
->setParameter("value", "%".$search["value"]."%")
->getQuery()
->getSingleScalarResult();
}
// Construction du tableau de retour
@ -175,23 +142,22 @@ class UserController extends Controller
// Parcours des Enregistrement
$qb = $em->createQueryBuilder();
if($access=="config") {
if($this->isGranted('ROLE_ADMIN')) {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01');
$qb->where('user.niveau01=niveau01.id');
}
elseif($this->isGranted('ROLE_MODO')) {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01')->from('CadolesCoreBundle:UserModo', 'usermodo');
$qb->where('user.niveau01=niveau01.id')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo);
}
}
else {
if($this->isGranted('ROLE_ADMIN')||$access=="user") {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01');
$qb->where('user.niveau01=niveau01.id');
if($fgusevisible) $qb->andWhere('user.visible=true');
}
elseif($this->isGranted('ROLE_MODO')) {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01')->from('CadolesCoreBundle:UserModo', 'usermodo');
$qb->where('user.niveau01=niveau01.id')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $usermodo);
}
elseif($this->isGranted('ROLE_ANIM')||$this->isGranted('ROLE_USER')) {
$qb->select('user')->from($this->labelentity,'user')->from('CadolesCoreBundle:Niveau01','niveau01');
$qb->where('user.niveau01=niveau01.id')
->andwhere("user.niveau01 = :niveau01")
->setParameter("niveau01", $niveau01);
}
if($search["value"]!="") {
@ -218,26 +184,10 @@ class UserController extends Controller
break;
case 6 :
$qb->orderBy('user.telephonenumber',$order[0]["dir"]);
break;
case 7 :
$qb->orderBy('niveau01.label',$order[0]["dir"]);
break;
case 10 :
$qb->orderBy('user.job',$order[0]["dir"]);
break;
case 11 :
$qb->orderBy('user.position',$order[0]["dir"]);
break;
case 12 :
$qb->orderBy('user.visitedate',$order[0]["dir"]);
break;
case 13 :
case 9 :
$qb->orderBy('user.role',$order[0]["dir"]);
break;
}
@ -261,26 +211,10 @@ class UserController extends Controller
break;
case 5 :
$qb->orderBy('user.telephonenumber',$order[0]["dir"]);
break;
case 6 :
$qb->orderBy('niveau01.label',$order[0]["dir"]);
break;
case 8 :
$qb->orderBy('user.job',$order[0]["dir"]);
break;
case 9 :
$qb->orderBy('user.position',$order[0]["dir"]);
break;
case 10 :
$qb->orderBy('user.visitedate',$order[0]["dir"]);
break;
case 11 :
case 7 :
$qb->orderBy('user.role',$order[0]["dir"]);
break;
}
@ -306,18 +240,14 @@ class UserController extends Controller
$tmp=array();
if($access=="config") array_push($tmp,$action);
array_push($tmp,"<img style='cursor:pointer' onClick='seeUser(".$data->getId().")' src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' class='avatar' style='margin:auto;display:block;'>");
array_push($tmp,"<img src='/".$this->container->getParameter('alias')."/uploads/avatar/".$data->getAvatar()."' class='avatar' style='margin:auto;display:block;'>");
array_push($tmp,$data->getUsername());
array_push($tmp,$data->getLastname());
array_push($tmp,$data->getFirstname());
array_push($tmp,"<a href='mailto:".$data->getEmail()."'>".$data->getEmail()."</a>");
array_push($tmp,$data->getTelephonenumber());
array_push($tmp,$data->getNiveau01()->getLabel()."<br>".$data->getNiveau01other());
array_push($tmp,$data->getNiveau01()->getLabel());
if($viewniveau02) array_push($tmp,($data->getNiveau02()!==null?$data->getNiveau02()->getLabel():""));
array_push($tmp,$groups);
array_push($tmp,$data->getJob());
array_push($tmp,$data->getPosition());
array_push($tmp,($data->getVisitedate()?$data->getVisitedate()->format("d/m/Y H:i")."<br>nb = ".$data->getVisitecpt():""));
array_push($tmp,$data->getRole());
array_push($output["data"],$tmp);
@ -366,8 +296,8 @@ class UserController extends Controller
// Initialisation de l'enregistrement
$data = new User();
$data->setVisible(true);
$data->setBelongingpopulation("authlevel");
$data->setAuthlevel("simple");
$data->setBelongingpopulation("agent");
$fields=$this->getDefaultDatauser();
// Création du formulaire
@ -397,9 +327,6 @@ class UserController extends Controller
$lstgroups=array_filter(explode(",",$form->get("linkgroups")->getData()));
$lstmodos=array_filter(explode(",",$form->get("linkmodos")->getData()));
// Si non modérateur vider le profil de modération
if($data->getRole()!="ROLE_MODO") $data->setPermmodoprofil(null);
// Sauvegarde
$em->persist($data);
$em->flush();
@ -411,34 +338,27 @@ class UserController extends Controller
foreach($lstgroups as $idgroup) {
$group=$em->getRepository("CadolesCoreBundle:Group")->find($idgroup);
$usergroup=$em->getRepository('CadolesCoreBundle:UserGroup')->findBy(["user"=>$data,"group"=>$group]);
if(!$usergroup) {
$key = Uuid::uuid4();
$usergroup= new UserGroup();
$usergroup->setUser($data);
$datagroup = $group;
$usergroup->setGroup($datagroup);
$usergroup->setKeyvalue($key);
$usergroup->setRolegroup(0);
$em->persist($usergroup);
$em->flush();
}
$key = Uuid::uuid4();
$usergroup= new UserGroup();
$usergroup->setUser($data);
$datagroup = $group;
$usergroup->setGroup($datagroup);
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
// Notification message
$message="Inscription de l'utilisateur<br>".$data->getLastname()." ".$data->getFirstname()."<br>Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$iduser,$idgroup,$message);
// Notification mail auprès de la personne inscrite
if($group->getFgcanshare()&&$this->get('session')->get('fgnotifgroup')) {
$idpage =$group->getPages()->first()->getId();
$url = $this->generateUrl('cadoles_core_redirect', ["route"=>"cadoles_core_home","id"=>$idpage], UrlGeneratorInterface::ABSOLUTE_URL);
$texthtml="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel()."<br>Suivez le lien suivant pour y accéder = <a href='$url'>$url</a>";
$text="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel()."<br>Suivez le lien suivant pour y accéder = $url";
if($group->getFgcanshare()) {
$text="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : Inscription au groupe de travail : ".$group->getLabel()."\n\n".$group->getDescription(),
"body_html"=>$texthtml,
"body_html"=>nl2br($text),
"body_text"=>$text
);
$to = $data->getEmail();
@ -489,7 +409,6 @@ class UserController extends Controller
$oldpassword=$data->getPassword();
$fields=$this->getDefaultDatauser();
// Si un acces modo via console d'admin on s'assure qu'il a les droit dessus sinon retour à la liste
if($this->isGranted('ROLE_MODO')&&$access=="config") {
$niveau01=$data->getNiveau01();
@ -544,9 +463,6 @@ class UserController extends Controller
$data->setPassword($data->getPassword());
}
// Si non modérateur vider le profil de modération
if($data->getRole()!="ROLE_MODO") $data->setPermmodoprofil(null);
// Sauvegarde
$em->persist($data);
$em->flush();
@ -562,35 +478,27 @@ class UserController extends Controller
foreach($addgroups as $idgroup) {
$group=$em->getRepository("CadolesCoreBundle:Group")->find($idgroup);
$usergroup=$em->getRepository('CadolesCoreBundle:UserGroup')->findBy(["user"=>$data,"group"=>$group]);
if(!$usergroup) {
$key = Uuid::uuid4();
$key = Uuid::uuid4();
$usergroup= new UserGroup();
$usergroup->setUser($data);
$datagroup = $group;
$usergroup->setGroup($datagroup);
$usergroup->setKeyvalue($key);
$usergroup->setRolegroup(0);
$em->persist($usergroup);
$em->flush();
}
$usergroup= new UserGroup();
$usergroup->setUser($data);
$datagroup = $group;
$usergroup->setGroup($datagroup);
$usergroup->setKeyvalue($key);
$em->persist($usergroup);
$em->flush();
// notification message
$message="Inscription de l'utilisateur<br>".$data->getLastname()." ".$data->getFirstname()."<br>Par ".$this->getUser()->getLastname()." ".$this->getUser()->getFirstname();
$websocket = $this->container->get('cadoles.websocket.pushmessage')->send($key->toString(),$id,$idgroup,$message);
// Notification mail auprès de la personne inscrite
if($group->getFgcanshare()&&$this->get('session')->get('fgnotifgroup')) {
$idpage =$group->getPages()->first()->getId();
$url = $this->generateUrl('cadoles_core_redirect', ["route"=>"cadoles_core_home","id"=>$idpage], UrlGeneratorInterface::ABSOLUTE_URL);
$texthtml="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel()."<br>Suivez le lien suivant pour y accéder = <a href='$url'>$url</a>";
$text="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel()."<br>Suivez le lien suivant pour y accéder = $url";
if($group->getFgcanshare()) {
$text="Vous venez d'être inscrit dans le groupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : Inscription au groupe de travail : ".$group->getLabel()."\n\n".$group->getDescription(),
"body_html"=>$texthtml,
"body_html"=>nl2br($text),
"body_text"=>$text
);
$to = $data->getEmail();
@ -624,22 +532,20 @@ class UserController extends Controller
$em->flush();
// Notification mail auprès des managers
if($group->getFgcanshare()&&$this->get('session')->get('fgnotifgroup')) {
$text=$data->getUsername()." a été désinscrit du groupe de travail : ".$group->getLabel();
if($group->getFgcanshare()) {
$text=$data->getUsername()." a été désinscrit dugroupe de travail : ".$group->getLabel();
$template="template";
$mail_params=array(
"subject" => $this->get('session')->get('appname')." : ".$data->getUsername()." = Désinscription au groupe de travail ".$group->getLabel()."\n\n".$group->getDescription(),
"body_html"=>nl2br($text),
"body_text"=>$text
);
$usergroups=$em->getRepository("CadolesCoreBundle:Usergroup")->findBy(array("group"=>$group));
$managers=$em->getRepository("CadolesCoreBundle:Usergroup")->findBy(array("group"=>$group,"fgmanager"=>true));
$to=array();
foreach($usergroups as $usergroup) {
if($usergroup->getRolegroup()>=90)
array_push($to,$usergroup->getUser()->getEmail());
foreach($managers as $manager) {
array_push($to,$manager->getUser()->getEmail());
}
$from = $this->getParameter('noreply');;
$fromName = $this->get('session')->get('appname');
$message = $this->container->get('cadoles.core.service.mail');
@ -717,7 +623,7 @@ class UserController extends Controller
$fields=$this->getDefaultDatauser();
// Si un acces modo via console d'admin on s'assure qu'il a les droit dessus sinon retour à la liste
if($this->isGranted('ROLE_MODO')) {
if($this->isGranted('ROLE_MODO')&&$access=="config") {
$niveau01=$data->getNiveau01();
$modos=$this->get('security.token_storage')->getToken()->getUser()->getmodos();
$fgperm=false;
@ -729,17 +635,7 @@ class UserController extends Controller
// Vérifier que cet enregistrement est supprimable
if($this->GetParameter("masteridentity")=="LDAP")
throw $this->createNotFoundException('Permission denied');
// Alerte si utilisateur propriétaire de groupe
if(!$data->getOwnergroups()->isEmpty()) {
$message ="ATTENTION CET UTILSATEUR EST PROPRIETAIRE DES GROUPES DE TRAVAIL SUIVANT<br>";
foreach($data->getOwnergroups() as $group) {
$message.=" - <a href='".$this->generateUrl('cadoles_core_config_group_update', array('id'=>$group->getId()))."' target='_blank'>".$group->getLabel()."</a><br>";
}
$message.="<br>En le supprimant les groupes en question n'auront plus de propriétaire";
$request->getSession()->getFlashBag()->add("notice", $message);
}
throw $this->createNotFoundException('Permission denied');
// Création du formulaire
$form = $this->createForm(UserType::class,$data,array(
@ -759,37 +655,6 @@ class UserController extends Controller
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
// Avant de supprimer l'utilisateur on passe à vide l'ensemble des groupes propriétaire à vide
foreach($data->getOwnergroups() as $group) {
$pages=$group->getPages();
foreach($pages as $page) {
$page->setUser(null);
$em->persist($page);
$em->flush();
}
$blogs=$group->getBlogs();
foreach($blogs as $blog) {
$blog->setUser(null);
$em->persist($blog);
$em->flush();
}
$calendars=$group->getCalendars();
foreach($calendars as $calendar) {
$calendar->setUser(null);
$em->persist($calendar);
$em->flush();
}
$projects=$group->getProjects();
foreach($projects as $project) {
$project->setUser(null);
$em->persist($project);
$em->flush();
}
}
$em->remove($data);
$em->flush();
@ -839,169 +704,7 @@ class UserController extends Controller
return $this->updateAction($user->getId(),"user",$request);
}
public function viewAction($id, Request $request)
{
$user=$this->getData($id);
$fields=$this->getDefaultDatausers();
return $this->render('CadolesCoreBundle:User:view.html.twig', [
'useheader' => false,
'usemenu' => false,
'usesidebar' => false,
'user' => $user,
'fields' => $fields,
]);
}
public function mailingAction(Request $request) {
$form = $this->createForm(MailingType::class,$this->getUser(),array(
"perm"=>$this->isGranted('ROLE_ADMIN'),
"userid"=>$this->get('security.token_storage')->getToken()->getUser()->getId(),
));
// Récupération des data du formulaire
$form->handleRequest($request);
// Error si pas de message
if ($form->get('submit')->isClicked()) {
if(!$form->get('message')->getData()) {
$form->addError(new FormError("Merci de renseigner un message à votre mail"));
$errors = $form->getErrors();
foreach( $errors as $error ) {
$request->getSession()->getFlashBag()->add("error", $error->getMessage());
}
}
}
// Sur validation
if ($form->get('submit')->isClicked() && $form->isValid()) {
$users=[];
if($this->isGranted('ROLE_ADMIN')) {
$groups=$form->get('groups')->getData();
foreach($groups as $group) {
foreach($group->getUsers() as $usergroup) {
if(!in_array($usergroup->getUser()->getEmail(),$users)) {
array_push($users,$usergroup->getUser()->getEmail());
}
}
}
}
$niveau01s=$form->get('niveau01')->getData();
foreach($niveau01s as $niveau01) {
foreach($niveau01->getUsers() as $user) {
if(!in_array($user->getEmail(),$users)) {
array_push($users,$user->getEmail());
}
}
}
$text=$form->get("message")->getData();
$subject=$form->get("subject")->getData();
$template="template";
$mail_params=array(
"subject" => $subject,
"body_html"=>nl2br($text),
"body_text"=>$text
);
$from = $this->getParameter('noreply');
$fromName = $this->getUser()->getFirstname()." ".$this->getUser()->getLastname();
$message = $this->container->get('cadoles.core.service.mail');
foreach($users as $to) {
$message->sendEmail($template, $mail_params, $to, $from, $fromName);
}
return $this->redirectToRoute("cadoles_core_config");
}
return $this->render('CadolesCoreBundle:Mail:mailing.html.twig', [
'useheader' => true,
'usemenu' => false,
'usesidebar' => true,
'form' => $form->createView()
]);
}
public function exportuserAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$dir = $this->get('kernel')->getRootDir() . '/../uploads/export/';
$file = "exportuser.csv";
$fs = new Filesystem();
$fs->mkdir($dir);
$csvh = fopen($dir.$file, 'w');
$d = ';'; // this is the default but i like to be explicit
$e = '"'; // this is the default but i like to be explicit
// Entête de colonne
$data=["id","Login","Nom","Prénom","Email","Téléphone",$this->getParameter("labelniveau01"),$this->getParameter("labelniveau02"),"Métier","Fonction","Nom Usage","Autres Prénom","Sexe","Adresse","Date Naissance","Pays Naissance","Ville Naissance","Date Visite","Cpt Visite","Groupes"];
fputcsv($csvh, $data, $d, $e);
// Liste des utilisateurs en fonction du role de l'utilisateur en cours
if($this->isGranted('ROLE_ADMIN')) {
$users=$em->getRepository($this->labelentity)->findAll();
}
elseif($this->isGranted('ROLE_MODO')) {
$qb = $em->createQueryBuilder();
$users = $qb->select('user')
->from($this->labelentity,'user')
->from('CadolesCoreBundle:Niveau01','niveau01')
->from('CadolesCoreBundle:UserModo', 'usermodo')
->where('user.niveau01=niveau01.id')
->andwhere("usermodo.niveau01 = user.niveau01")
->andWhere("usermodo.user = :userid")
->setParameter("userid", $this->getUser()->getId())
->getQuery()
->getResult();
}
foreach($users as $user) {
$groups="";
$fgfirst=true;
foreach($user->getGroups() as $key => $usergroup) {
if(!$fgfirst) $groups.=" - ";
$groups.=$usergroup->getGroup()->getLabel();
if($fgfirst) $fgfirst=false;
}
$visite = ($user->getVisitedate()?$user->getVisitedate()->format("d/m/Y H:i"):"");
$cptvisite = ($user->getVisitedate()?$user->getVisitecpt():"");
$data = [
"id"=>$user->getId(),
"username"=>$user->getUsername(),
"name"=>$user->getLastname(),
"firstname"=>$user->getFirstname(),
"email"=>$user->getEmail(),
"phone"=>$user->getTelephonenumber(),
"niveau01"=>$user->getNiveau01()->getLabel(),
"niveau02"=>($user->getNiveau02()?$user->getNiveau02()->getLabel():""),
"job"=>$user->getJob(),
"position"=>$user->getPosition(),
"usualname"=>$user->getUsualname(),
"givensname"=>$user->getGivensname(),
"gender"=>$user->getGender(),
"postaladress"=>$user->getPostaladress(),
"birthdate"=>($user->getBirthdate()?$user->getBirthdate()->format("d/m/Y"):""),
"birthcountry"=>($user->getBirthcountry()?$user->getBirthcountry()->getLabel():""),
"birthplace"=>($user->getBirthplace()?$user->getBirthplace()->getLabel():""),
"visite"=>$visite,
"cptvisite"=>$cptvisite,
"groups"=>$groups,
];
fputcsv($csvh, $data, $d, $e);
}
fclose($csvh);
$response = new BinaryFileResponse($dir.$file);
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
return $response;
}
public function importuserAction(Request $request) {
if($this->GetParameter("masteridentity")!="SQL")
@ -1059,14 +762,7 @@ class UserController extends Controller
$error.="<p>Utilisateur = ".$user["login"]." existe déjà</p>";
}
// On s'assure que le login n'est pas trop court
if(strlen($user["login"])<5)
$error.="<p>Utilisateur = ".$user["login"]." login trop court doit être >= 5</p>";
// On s'assure que le username ne contient pas des caractères speciaux
$string = preg_replace('~[^@a-zA-Z0-9._-]~', '', $user["login"]);
if($string!=$user["login"])
$error.="<p>Utilisateur = ".$user["login"]." login avec caractères invalide</p>";
if(strlen($user["login"])<5) $error.="<p>Utilisateur = ".$user["login"]." login trop court doit être >= 5</p>";
// On regarde si le email n'est pas déjà existant
$userbdd=$em->getRepository('CadolesCoreBundle:User')->findOneBy(["email"=>$user["email"]]);
@ -1225,91 +921,6 @@ class UserController extends Controller
return $response;
}
public function viewcalendarAction (Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$user=$this->getUser();
if($user) {
$em = $this->getDoctrine()->getManager();
$view=$request->request->get('view');
$idview=1;
if($view=="month") $idview=1;
if($view=="agendaWeek") $idview=2;
if($view=="agendaDay") $idview=3;
$user->setViewcalendar($idview);
$em->persist($user);
$em->flush();
}
return new Response();
}
public function preferenceAction(Request $request) {
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$key=$request->request->get('key');
$id=$request->request->get('id');
$value=$request->request->get('value');
// Récupérer les préférences de l'utilisateur
$preference=$this->getUser()->getPreference();
// Cas particulier de page bookmark, on vide la préférence si on reset la meme valeur
if($key=="pagebookmark") {
if(is_array($preference)&&array_key_exists("pagebookmark",$preference)) {
$oldid=$preference["pagebookmark"][0];
if($oldid==$value) {
unset($preference["pagebookmark"]);
$em = $this->getDoctrine()->getManager();
$this->getUser()->setPreference($preference);
$this->get('session')->set("pagebookmark", "");
$em->persist($this->getUser());
$em->flush();
return new Response();
}
}
}
// Mise à jour de la préférence
$toupdate=false;
if(!is_array($preference)) {
$toupdate=true;
$preference=[];
}
if(!array_key_exists($key,$preference)) {
$toupdate=true;
$preference[$key]=[];
}
if((!array_key_exists($id,$preference[$key]))) {
$toupdate=true;
$preference[$key][$id]=$value;
}
if($preference[$key][$id]!=$value) {
$toupdate=true;
$preference[$key][$id]=$value;
}
// Mise à jour des préferences
if($toupdate) {
$em = $this->getDoctrine()->getManager();
$this->getUser()->setPreference($preference);
$em->persist($this->getUser());
$em->flush();
}
return new Response();
}
protected function getDatas()
{
$em = $this->getDoctrine()->getManager();
@ -1375,157 +986,55 @@ class UserController extends Controller
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datauser");
$fields=$config->getValue();
$fields=json_decode($fields,true);
if(!is_array($fields)) $fields=[];
// Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
if(!array_key_exists("firstname",$fields)) {
if($fields=="") {
// Valeur par défaut 0=caché / 1=falcultatif / 2=obligatoire
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prénom";
}
if(!array_key_exists("visible",$fields)) {
$fields["visible"]["perm"]=2;
$fields["visible"]["label"]="Visible";
}
if(!array_key_exists("authlevel",$fields)) {
$fields["authlevel"]["perm"]=2;
$fields["authlevel"]["label"]="Niveau d'authentification";
}
if(!array_key_exists("belongingpopulation",$fields)) {
$fields["belongingpopulation"]["perm"]=2;
$fields["belongingpopulation"]["label"]="Population d'appartenance";
}
if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
}
if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
}
if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]="Niveau 02";
}
if(!array_key_exists("usualname",$fields)) {
$fields["usualname"]["perm"]=1;
$fields["usualname"]["label"]="Nom d'Usage";
}
if(!array_key_exists("gender",$fields)) {
$fields["gender"]["perm"]=1;
$fields["gender"]["label"]="Sexe";
}
if(!array_key_exists("givensname",$fields)) {
$fields["givensname"]["perm"]=1;
$fields["givensname"]["label"]="Autre Prénom";
}
if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
}
if(!array_key_exists("postaladress",$fields)) {
$fields["postaladress"]["perm"]=1;
$fields["postaladress"]["label"]="Adresse";
}
if(!array_key_exists("birthdate",$fields)) {
$fields["birthdate"]["perm"]=1;
$fields["birthdate"]["label"]="Date de Naissance";
}
if(!array_key_exists("birthcountry",$fields)) {
$fields["birthcountry"]["perm"]=1;
$fields["birthcountry"]["label"]="Pays de Naissance";
}
if(!array_key_exists("birthplace",$fields)) {
$fields["birthplace"]["perm"]=1;
$fields["birthplace"]["label"]="Ville de Naissance";
}
if(!array_key_exists("visite",$fields)) {
$fields["visite"]["perm"]=1;
$fields["visite"]["label"]="Visite";
}
return $fields;
}
protected function getDefaultDatausers()
{
$em = $this->getDoctrine()->getManager();
$session=$this->get('session');
$config=$em->getRepository('CadolesCoreBundle:Config')->find("datausers");
$fields=$config->getValue();
$fields=json_decode($fields, true);
if(!is_array($fields)) $fields=[];
// Valeur par défaut 0=caché / 3=visible
if(!array_key_exists("avatar",$fields)) {
$fields["avatar"]["perm"]=1;
$fields["avatar"]["label"]="Avatar";
}
if(!array_key_exists("login",$fields)) {
$fields["login"]["perm"]=1;
$fields["login"]["label"]="Login";
}
if(!array_key_exists("lastname",$fields)) {
$fields["lastname"]["perm"]=1;
$fields["lastname"]["label"]="Nom";
}
if(!array_key_exists("firstname",$fields)) {
$fields["firstname"]["perm"]=1;
$fields["firstname"]["label"]="Prenom";
}
if(!array_key_exists("email",$fields)) {
$fields["email"]["perm"]=1;
$fields["email"]["label"]="Email";
}
if(!array_key_exists("niveau01",$fields)) {
$fields["niveau01"]["perm"]=1;
$fields["niveau01"]["label"]=$session->get('labelniveau01');
}
if(!array_key_exists("niveau02",$fields)) {
$fields["niveau02"]["perm"]=1;
$fields["niveau02"]["label"]=$session->get('labelniveau02');
}
if(!array_key_exists("group",$fields)) $fields["group"]["perm"]=1;
$fields["group"]["label"]="Groupes (caché uniquement pour le rôle Utilisateur) ";
if(!array_key_exists("job",$fields)) {
$fields["job"]["perm"]=1;
$fields["job"]["label"]="Métier";
}
if(!array_key_exists("position",$fields)) {
$fields["position"]["perm"]=1;
$fields["position"]["label"]="Fonction";
}
if(!array_key_exists("role",$fields)) {
$fields["role"]["perm"]=1;
$fields["role"]["label"]="Rôles";
}
if(!array_key_exists("telephonenumber",$fields)) {
$fields["telephonenumber"]["perm"]=1;
$fields["telephonenumber"]["label"]="Téléphone";
}
if(!array_key_exists("visitedate",$fields)) $fields["visitedate"]["perm"]=1;
$fields["visitedate"]["label"]="Visite (caché uniquement pour les rôles Animateur et Utilisateur) ";
if(!$session->get('viewniveau02'))
unset($fields["niveau02"]);
return $fields;
}
@ -1550,19 +1059,6 @@ class UserController extends Controller
if($this->getRegistrationBy("username",$data->getUsername())||$this->getRegistrationBy("email",$data->getEmail())) {
$form->addError(new FormError('Une inscription utilise déjà ce login ou cet email'));
}
// On s'assure que les modérateurs aient un profil de modération
if($data->getRole()=="ROLE_MODO"&&!$data->getPermmodoprofil()) {
$form->addError(new FormError('Vous devez préciser un profil de modération'));
}
// Si niveau01 commence par autre = niveau01other obligatoire
$niveau01=strtolower($data->getNiveau01()->getLabel());
if(stripos($niveau01,"autre")===0) {
if(!$data->getNiveau01other()) {
$form->addError(new FormError("Merci de compléter le champ 'Autre ".$this->getParameter("labelniveau01")."'"));
}
}
}

View File

@ -207,25 +207,6 @@ class WhitelistController extends Controller
]);
}
public function ajaxiswhitelistAction(Request $request)
{
// S'assurer que c'est un appel ajax
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('message' => 'Interdit'), 400);
}
$email=$request->request->get('email');
$email=explode("@",$email);
$domaine=end($email);
// Rechercher le mail dans la liste blanche
$em = $this->getDoctrine()->getManager();
$whitelist=$em->getRepository($this->labelentity)->findOneBy(["label"=>$domaine]);
if($whitelist)
return new Response("OK", 200);
else
return new Response("KO", 200);
}
protected function getDatas()
{
$em = $this->getDoctrine()->getManager();

View File

@ -43,11 +43,6 @@ class Group
*/
private $color;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $email;
/**
* @ORM\Column(type="boolean", options={"default" : false})
*/
@ -59,25 +54,20 @@ class Group
private $fgcanshare;
/**
* @ORM\Column(type="boolean", options={"default" : false})
* @ORM\Column(type="boolean", options={"default" : true})
*/
private $fgcancreatepage;
/**
* @ORM\Column(type="boolean", options={"default" : false})
* @ORM\Column(type="boolean", options={"default" : true})
*/
private $fgcancreateblog;
/**
* @ORM\Column(type="boolean", options={"default" : false})
* @ORM\Column(type="boolean", options={"default" : true})
*/
private $fgcancreatecalendar;
/**
* @ORM\Column(type="boolean", options={"default" : false})
*/
private $fgcancreateproject;
/**
* @ORM\Column(type="boolean", options={"default" : false})
*/
@ -98,16 +88,6 @@ class Group
*/
private $attributes;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $idonlyoffice;
/**
* @ORM\Column(name="invitations", type="array", nullable=true)
*/
private $invitations;
/**
* @ORM\ManyToOne(targetEntity="Cadoles\PortalBundle\Entity\Icon", inversedBy="groups")
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
@ -173,10 +153,6 @@ class Group
*/
protected $blogs;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Project", mappedBy="groups")
*/
protected $projects;
/**
* @var ArrayCollection $message
@ -186,25 +162,6 @@ class Group
*/
protected $messages;
/**
* @ORM\OneToMany(targetEntity="Statistic", mappedBy="group", cascade={"persist"}, orphanRemoval=true)
*/
private $statistics;
// Champs temporaire
protected $nosynconly;
public function getNosynconly()
{
return $this->nosynconly;
}
public function setNosynconly($nosynconly)
{
$this->nosynconly = $nosynconly;
return $this;
}
// ATTENTION NE SURTOUT PAS REGEN TOTALEMENT LES SETTER
// Methode custom sur les Addxxx et Removexxx
@ -221,7 +178,6 @@ class Group
$this->notices = new \Doctrine\Common\Collections\ArrayCollection();
$this->calendars = new \Doctrine\Common\Collections\ArrayCollection();
$this->blogs = new \Doctrine\Common\Collections\ArrayCollection();
$this->projects = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
@ -474,30 +430,6 @@ class Group
return $this->attributes;
}
/**
* Set idonlyoffice
*
* @param string $idonlyoffice
*
* @return Group
*/
public function setIdonlyoffice($idonlyoffice)
{
$this->idonlyoffice = $idonlyoffice;
return $this;
}
/**
* Get idonlyoffice
*
* @return string
*/
public function getIdonlyoffice()
{
return $this->idonlyoffice;
}
/**
* Add user
*
@ -971,147 +903,4 @@ class Group
{
return $this->calendarevents;
}
/**
* Add project
*
* @param \Cadoles\PortalBundle\Entity\Project $project
*
* @return Group
*/
public function addProject(\Cadoles\PortalBundle\Entity\Project $project)
{
$project->addGroup($this);
$this->projects[] = $project;
return $this;
}
/**
* Remove project
*
* @param \Cadoles\PortalBundle\Entity\Project $project
*/
public function removeProject(\Cadoles\PortalBundle\Entity\Project $project)
{
$project->removeGroup($this);
$this->projects->removeElement($project);
}
/**
* Get projects
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjects()
{
return $this->projects;
}
/**
* Set fgcancreateproject
*
* @param boolean $fgcancreateproject
*
* @return Group
*/
public function setFgcancreateproject($fgcancreateproject)
{
$this->fgcancreateproject = $fgcancreateproject;
return $this;
}
/**
* Get fgcancreateproject
*
* @return boolean
*/
public function getFgcancreateproject()
{
return $this->fgcancreateproject;
}
/**
* Add statistic
*
* @param \Cadoles\CoreBundle\Entity\Statistic $statistic
*
* @return Group
*/
public function addStatistic(\Cadoles\CoreBundle\Entity\Statistic $statistic)
{
$this->statistics[] = $statistic;
return $this;
}
/**
* Remove statistic
*
* @param \Cadoles\CoreBundle\Entity\Statistic $statistic
*/
public function removeStatistic(\Cadoles\CoreBundle\Entity\Statistic $statistic)
{
$this->statistics->removeElement($statistic);
}
/**
* Get statistics
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getStatistics()
{
return $this->statistics;
}
/**
* Set email.
*
* @param string|null $email
*
* @return Group
*/
public function setEmail($email = null)
{
$this->email = $email;
return $this;
}
/**
* Get email.
*
* @return string|null
*/
public function getEmail()
{
return $this->email;
}
/**
* Set invitations
*
* @param array $invitations
*
* @return Group
*/
public function setInvitations($invitations)
{
$this->invitations = $invitations;
return $this;
}
/**
* Get invitations
*
* @return array
*/
public function getInvitations()
{
return $this->invitations;
}
}

View File

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

View File

@ -23,7 +23,7 @@ class PermModo
private $id;
/**
* @ORM\Column(type="string", length=50)
* @ORM\Column(type="string", length=50, unique=true)
*/
private $route;
@ -32,11 +32,6 @@ class PermModo
*/
private $visible;
/**
* @ORM\ManyToOne(targetEntity="PermModoProfil", inversedBy="permmodos")
* @ORM\JoinColumn(nullable=true)
*/
private $permmodoprofil;
/**
* Get id
@ -95,29 +90,4 @@ class PermModo
{
return $this->visible;
}
/**
* Set permmodoprofil
*
* @param \Cadoles\CoreBundle\Entity\PermModoProfil $permmodoprofil
*
* @return PermModo
*/
public function setPermmodoprofil(\Cadoles\CoreBundle\Entity\PermModoProfil $permmodoprofil = null)
{
$this->permmodoprofil = $permmodoprofil;
return $this;
}
/**
* Get permmodoprofil
*
* @return \Cadoles\CoreBundle\Entity\PermModoProfil
*/
public function getPermmodoprofil()
{
return $this->permmodoprofil;
}
}

View File

@ -1,164 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="permmodoprofil")
*
*/
class PermModoProfil
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=50, unique=true)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity="PermModo", mappedBy="permmodoprofil", cascade={"persist"}, orphanRemoval=true)
*/
private $permmodos;
/**
* @ORM\OneToMany(targetEntity="User", mappedBy="permmodoprofil")
*/
private $users;
/**
* Constructor
*/
public function __construct()
{
$this->permmodos = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set id.
*
* @param string $id
*
* @return PermModoProfil
*/
public function setId($id)
{
$this->id = $id;
return $this;
}
/**
* Set name.
*
* @param string $name
*
* @return PermModoProfil
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Add permmodo.
*
* @param \Cadoles\CoreBundle\Entity\PermModo $permmodo
*
* @return PermModoProfil
*/
public function addPermmodo(\Cadoles\CoreBundle\Entity\PermModo $permmodo)
{
$this->permmodos[] = $permmodo;
return $this;
}
/**
* Remove permmodo.
*
* @param \Cadoles\CoreBundle\Entity\PermModo $permmodo
*
* @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
*/
public function removePermmodo(\Cadoles\CoreBundle\Entity\PermModo $permmodo)
{
return $this->permmodos->removeElement($permmodo);
}
/**
* Get permmodos.
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getPermmodos()
{
return $this->permmodos;
}
/**
* Add user
*
* @param \Cadoles\CoreBundle\Entity\User $user
*
* @return PermModoProfil
*/
public function addUser(\Cadoles\CoreBundle\Entity\User $user)
{
$this->users[] = $user;
return $this;
}
/**
* Remove user
*
* @param \Cadoles\CoreBundle\Entity\User $user
*/
public function removeUser(\Cadoles\CoreBundle\Entity\User $user)
{
$this->users->removeElement($user);
}
/**
* Get users
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getUsers()
{
return $this->users;
}
}

View File

@ -6,8 +6,8 @@ use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Cadoles\CoreBundle\Validator as CadolesCoreAssert;
use Symfony\Component\Validator\Constraints as Assert;
use Cadoles\CoreBundle\Validator\Password;
/**
* @ORM\Entity
@ -27,10 +27,10 @@ class Registration implements UserInterface, \Serializable
private $id;
/**
* @ORM\Column(type="string", length=128, unique=true)
* @ORM\Column(type="string", length=25, unique=true)
* @Assert\Length(
* min = "5",
* max = "128",
* max = "25",
* minMessage = "Votre nom doit faire au moins {{ limit }} caractères",
* maxMessage = "Votre nom ne peut pas être plus long que {{ limit }} caractères"
* )
@ -52,23 +52,13 @@ class Registration implements UserInterface, \Serializable
*/
private $password;
/**
* @CadolesCoreAssert\Password()
*/
private $passwordplain;
/**
* @ORM\Column(type="string", length=250)
*/
private $salt;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $passwordad;
/**
* @ORM\Column(type="string", length=128, unique=true)
* @ORM\Column(type="string", length=60, unique=true)
*/
private $email;
@ -133,26 +123,6 @@ class Registration implements UserInterface, \Serializable
*/
private $position;
/**
* @ORM\Column(type="string", length=150, nullable=true)
*/
private $niveau01other;
/**
* @ORM\Column(name="motivation", type="text", nullable=true)
*/
private $motivation;
/**
* @ORM\Column(name="note", type="text", nullable=true)
*/
private $note;
/**
* @ORM\Column(type="integer", length=60, nullable=true)
*/
private $groupid;
/**
* @ORM\ManyToOne(targetEntity="Country", inversedBy="registrations")
* @ORM\JoinColumn(nullable=true)
@ -195,23 +165,13 @@ class Registration implements UserInterface, \Serializable
public function setPassword($password)
{
if($password!=$this->password&&$password!=""){
// Placer le password non encodé dans une variable tempo sur laquel on va appliquer la contraite
$this->passwordplain = $password;
$this->tempopassword=$password;
// Password encrypté format openldap
mt_srand((double)microtime()*1000000);
$this->salt = pack("CCCC", mt_rand(), mt_rand(), mt_rand(), mt_rand());
$hash = "{SSHA}" . base64_encode(pack("H*", sha1($password . $this->salt)) . $this->salt);
$this->password = $hash;
// Password encrypté AD
$newPassword = "\"" . $password . "\"";
$len = strlen($newPassword);
$newPassw = "";
for($i=0;$i<$len;$i++) {
$newPassw .= "{$newPassword{$i}}\000";
}
$this->passwordad = $newPassw;
$this->password = $hash;
}
return $this;
@ -749,124 +709,4 @@ class Registration implements UserInterface, \Serializable
{
return $this->niveau02;
}
/**
* Set groupid
*
* @param integer $groupid
*
* @return Registration
*/
public function setGroupid($groupid)
{
$this->groupid = $groupid;
return $this;
}
/**
* Get groupid
*
* @return integer
*/
public function getGroupid()
{
return $this->groupid;
}
/**
* Set niveau01other
*
* @param string $niveau01other
*
* @return Registration
*/
public function setNiveau01other($niveau01other)
{
$this->niveau01other = $niveau01other;
return $this;
}
/**
* Get niveau01other
*
* @return string
*/
public function getNiveau01other()
{
return $this->niveau01other;
}
/**
* Set motivation
*
* @param string $motivation
*
* @return Registration
*/
public function setMotivation($motivation)
{
$this->motivation = $motivation;
return $this;
}
/**
* Get motivation
*
* @return string
*/
public function getMotivation()
{
return $this->motivation;
}
/**
* Set passwordad.
*
* @param string|null $passwordad
*
* @return Registration
*/
public function setPasswordad($passwordad = null)
{
$this->passwordad = $passwordad;
return $this;
}
/**
* Get passwordad.
*
* @return string|null
*/
public function getPasswordad()
{
return $this->passwordad;
}
/**
* Set note
*
* @param string $note
*
* @return Registration
*/
public function setNote($note)
{
$this->note = $note;
return $this;
}
/**
* Get note
*
* @return string
*/
public function getNote()
{
return $this->note;
}
}

View File

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

View File

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

View File

@ -6,10 +6,8 @@ use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Cadoles\CoreBundle\Validator as CadolesCoreAssert;
use Symfony\Component\Validator\Constraints as Assert;
use Cadoles\CoreBundle\Validator\Password;
/**
@ -30,13 +28,7 @@ class User implements UserInterface, \Serializable
private $id;
/**
* @ORM\Column(type="string", length=128, unique=true)
* @Assert\Length(
* min = "5",
* max = "128",
* minMessage = "Votre nom doit faire au moins {{ limit }} caractères",
* maxMessage = "Votre nom ne peut pas être plus long que {{ limit }} caractères"
* )
* @ORM\Column(type="string", length=50, unique=true)
*/
private $username;
@ -55,23 +47,18 @@ class User implements UserInterface, \Serializable
*/
private $password;
/**
* @CadolesCoreAssert\Password()
*/
private $passwordplain;
/**
* @ORM\Column(type="string", length=250)
*/
private $salt;
/**
* @ORM\Column(type="string", length=250, nullable=true)
* @Password()
*/
private $passwordad;
private $tempopassword;
/**
* @ORM\Column(type="string", length=128, unique=true)
* @ORM\Column(type="string", length=60, unique=true)
*/
private $email;
@ -96,7 +83,7 @@ class User implements UserInterface, \Serializable
private $authlevel;
/**
* @ORM\Column(type="string", length=9, nullable=true)
* @ORM\Column(type="string", length=9)
*/
private $siren;
@ -105,17 +92,6 @@ class User implements UserInterface, \Serializable
*/
private $siret;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $labelniveau01;
/**
* @ORM\Column(type="string", length=250, nullable=true)
*/
private $labelniveau02;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
@ -171,47 +147,6 @@ class User implements UserInterface, \Serializable
*/
private $belongingpopulation;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $viewcalendar;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $visitedate;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $visitecpt;
/**
* @ORM\Column(type="string", length=150, nullable=true)
*/
private $niveau01other;
/**
* @ORM\Column(name="motivation", type="text", nullable=true)
*/
private $motivation;
/**
* @ORM\Column(name="note", type="text", nullable=true)
*/
private $note;
/**
* @ORM\Column(name="preference", type="array", nullable=true)
*/
private $preference;
/**
* @ORM\ManyToOne(targetEntity="PermModoProfil", inversedBy="users")
* @ORM\JoinColumn(nullable=true)
*/
private $permmodoprofil;
/**
* @ORM\ManyToOne(targetEntity="Country", inversedBy="users")
* @ORM\JoinColumn(nullable=true)
@ -310,51 +245,6 @@ class User implements UserInterface, \Serializable
*/
private $blogarticles;
/**
* @var ArrayCollection $blogcomment
* @var Blogcomment
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Blogcomment", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*/
private $blogcomments;
/**
* @var ArrayCollection $project
* @var Project
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Project", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*/
private $projects;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Project", mappedBy="writers")
*/
private $projectwriters;
/**
* @var ArrayCollection $projecttask
* @var Projecttask
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Projecttask", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*/
private $projecttasks;
/**
* @var ArrayCollection $projecttask
* @var Projecttask
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Projecttask", mappedBy="owner", cascade={"persist"}, orphanRemoval=true)
*/
private $projectownertasks;
/**
* @var ArrayCollection $projectcomment
* @var Projectcomment
*
* @ORM\OneToMany(targetEntity="Cadoles\PortalBundle\Entity\Projectcomment", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
*/
private $projectcomments;
/**
* @var ArrayCollection $icon
* @var Icon
@ -381,12 +271,6 @@ class User implements UserInterface, \Serializable
*/
protected $messagesees;
/**
* @ORM\ManyToMany(targetEntity="Cadoles\PortalBundle\Entity\Alert", mappedBy="readers")
*/
protected $alertreaders;
//== CODE A NE PAS REGENERER
/**
* @ORM\PostLoad
@ -410,23 +294,12 @@ class User implements UserInterface, \Serializable
public function setPassword($password)
{
if($password!=$this->password&&$password!=""){
// Placer le password non encodé dans une variable tempo sur laquel on va appliquer la contraite
$this->passwordplain = $password;
$this->tempopassword=$password;
// Password encrypté format openldap
mt_srand((double)microtime()*1000000);
$this->salt = pack("CCCC", mt_rand(), mt_rand(), mt_rand(), mt_rand());
$this->salt = uniqid(mt_rand(), true);
$hash = "{SSHA}" . base64_encode(pack("H*", sha1($password . $this->salt)) . $this->salt);
$this->password = $hash;
// Password encrypté AD
$newPassword = "\"" . $password . "\"";
$len = strlen($newPassword);
$newPassw = "";
for($i=0;$i<$len;$i++) {
$newPassw .= "{$newPassword{$i}}\000";
}
$this->passwordad = $newPassw;
$this->password = $hash;
}
return $this;
@ -434,8 +307,8 @@ class User implements UserInterface, \Serializable
public function setPasswordDirect($password)
{
// Permet de setter le password généré lors de l'inscription
$this->password = $password;
return $this;
}
@ -751,54 +624,6 @@ class User implements UserInterface, \Serializable
return $this->siret;
}
/**
* Set labelniveau01
*
* @param string $labelniveau01
*
* @return User
*/
public function setLabelniveau01($labelniveau01)
{
$this->labelniveau01 = $labelniveau01;
return $this;
}
/**
* Get labelniveau01
*
* @return string
*/
public function getLabelniveau01()
{
return $this->labelniveau01;
}
/**
* Set labelniveau02
*
* @param string $labelniveau02
*
* @return User
*/
public function setLabelniveau02($labelniveau02)
{
$this->labelniveau02 = $labelniveau02;
return $this;
}
/**
* Get labelniveau02
*
* @return string
*/
public function getLabelniveau02()
{
return $this->labelniveau02;
}
/**
* Set usualname
*
@ -1063,30 +888,6 @@ class User implements UserInterface, \Serializable
return $this->belongingpopulation;
}
/**
* Set viewcalendar
*
* @param integer $viewcalendar
*
* @return User
*/
public function setViewcalendar($viewcalendar)
{
$this->viewcalendar = $viewcalendar;
return $this;
}
/**
* Get viewcalendar
*
* @return integer
*/
public function getViewcalendar()
{
return $this->viewcalendar;
}
/**
* Set birthcountry
*
@ -1658,434 +1459,4 @@ class User implements UserInterface, \Serializable
{
return $this->messagesees;
}
/**
* Add blogcomment
*
* @param \Cadoles\PortalBundle\Entity\Blogcomment $blogcomment
*
* @return User
*/
public function addBlogcomment(\Cadoles\PortalBundle\Entity\Blogcomment $blogcomment)
{
$this->blogcomments[] = $blogcomment;
return $this;
}
/**
* Remove blogcomment
*
* @param \Cadoles\PortalBundle\Entity\Blogcomment $blogcomment
*/
public function removeBlogcomment(\Cadoles\PortalBundle\Entity\Blogcomment $blogcomment)
{
$this->blogcomments->removeElement($blogcomment);
}
/**
* Get blogcomments
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getBlogcomments()
{
return $this->blogcomments;
}
/**
* Add project
*
* @param \Cadoles\PortalBundle\Entity\Project $project
*
* @return User
*/
public function addProject(\Cadoles\PortalBundle\Entity\Project $project)
{
$this->projects[] = $project;
return $this;
}
/**
* Remove project
*
* @param \Cadoles\PortalBundle\Entity\Project $project
*/
public function removeProject(\Cadoles\PortalBundle\Entity\Project $project)
{
$this->projects->removeElement($project);
}
/**
* Get projects
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjects()
{
return $this->projects;
}
/**
* Add projectwriter
*
* @param \Cadoles\PortalBundle\Entity\Project $projectwriter
*
* @return User
*/
public function addProjectwriter(\Cadoles\PortalBundle\Entity\Project $projectwriter)
{
$this->projectwriters[] = $projectwriter;
return $this;
}
/**
* Remove projectwriter
*
* @param \Cadoles\PortalBundle\Entity\Project $projectwriter
*/
public function removeProjectwriter(\Cadoles\PortalBundle\Entity\Project $projectwriter)
{
$this->projectwriters->removeElement($projectwriter);
}
/**
* Get projectwriters
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjectwriters()
{
return $this->projectwriters;
}
/**
* Add projecttask
*
* @param \Cadoles\PortalBundle\Entity\Projecttask $projecttask
*
* @return User
*/
public function addProjecttask(\Cadoles\PortalBundle\Entity\Projecttask $projecttask)
{
$this->projecttasks[] = $projecttask;
return $this;
}
/**
* Remove projecttask
*
* @param \Cadoles\PortalBundle\Entity\Projecttask $projecttask
*/
public function removeProjecttask(\Cadoles\PortalBundle\Entity\Projecttask $projecttask)
{
$this->projecttasks->removeElement($projecttask);
}
/**
* Get projecttasks
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjecttasks()
{
return $this->projecttasks;
}
/**
* Add projectownertask
*
* @param \Cadoles\PortalBundle\Entity\Projecttask $projectownertask
*
* @return User
*/
public function addProjectownertask(\Cadoles\PortalBundle\Entity\Projecttask $projectownertask)
{
$this->projectownertasks[] = $projectownertask;
return $this;
}
/**
* Remove projectownertask
*
* @param \Cadoles\PortalBundle\Entity\Projecttask $projectownertask
*/
public function removeProjectownertask(\Cadoles\PortalBundle\Entity\Projecttask $projectownertask)
{
$this->projectownertasks->removeElement($projectownertask);
}
/**
* Get projectownertasks
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjectownertasks()
{
return $this->projectownertasks;
}
/**
* Add projectcomment
*
* @param \Cadoles\PortalBundle\Entity\Projectcomment $projectcomment
*
* @return User
*/
public function addProjectcomment(\Cadoles\PortalBundle\Entity\Projectcomment $projectcomment)
{
$this->projectcomments[] = $projectcomment;
return $this;
}
/**
* Remove projectcomment
*
* @param \Cadoles\PortalBundle\Entity\Projectcomment $projectcomment
*/
public function removeProjectcomment(\Cadoles\PortalBundle\Entity\Projectcomment $projectcomment)
{
$this->projectcomments->removeElement($projectcomment);
}
/**
* Get projectcomments
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProjectcomments()
{
return $this->projectcomments;
}
/**
* Set visitedate
*
* @param \DateTime $visitedate
*
* @return User
*/
public function setVisitedate($visitedate)
{
$this->visitedate = $visitedate;
return $this;
}
/**
* Get visitedate
*
* @return \DateTime
*/
public function getVisitedate()
{
return $this->visitedate;
}
/**
* Set visitecpt
*
* @param integer $visitecpt
*
* @return User
*/
public function setVisitecpt($visitecpt)
{
$this->visitecpt = $visitecpt;
return $this;
}
/**
* Get visitecpt
*
* @return integer
*/
public function getVisitecpt()
{
return $this->visitecpt;
}
/**
* Set niveau01other
*
* @param string $niveau01other
*
* @return User
*/
public function setNiveau01other($niveau01other)
{
$this->niveau01other = $niveau01other;
return $this;
}
/**
* Get niveau01other
*
* @return string
*/
public function getNiveau01other()
{
return $this->niveau01other;
}
/**
* Add alertreader
*
* @param \Cadoles\PortalBundle\Entity\Alert $alertreader
*
* @return User
*/
public function addAlertreader(\Cadoles\PortalBundle\Entity\Alert $alertreader)
{
$this->alertreaders[] = $alertreader;
return $this;
}
/**
* Remove alertreader
*
* @param \Cadoles\PortalBundle\Entity\Alert $alertreader
*/
public function removeAlertreader(\Cadoles\PortalBundle\Entity\Alert $alertreader)
{
$this->alertreaders->removeElement($alertreader);
}
/**
* Get alertreaders
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAlertreaders()
{
return $this->alertreaders;
}
/**
* Set motivation
*
* @param string $motivation
*
* @return User
*/
public function setMotivation($motivation)
{
$this->motivation = $motivation;
return $this;
}
/**
* Get motivation
*
* @return string
*/
public function getMotivation()
{
return $this->motivation;
}
/**
* Set preference
*
* @param array $preference
*
* @return User
*/
public function setPreference($preference)
{
$this->preference = $preference;
return $this;
}
/**
* Get preference
*
* @return array
*/
public function getPreference()
{
return $this->preference;
}
/**
* Set permmodoprofil
*
* @param \Cadoles\CoreBundle\Entity\PermModoProfil $permmodoprofil
*
* @return User
*/
public function setPermmodoprofil(\Cadoles\CoreBundle\Entity\PermModoProfil $permmodoprofil = null)
{
$this->permmodoprofil = $permmodoprofil;
return $this;
}
/**
* Get permmodoprofil
*
* @return \Cadoles\CoreBundle\Entity\PermModoProfil
*/
public function getPermmodoprofil()
{
return $this->permmodoprofil;
}
/**
* Set passwordad.
*
* @param string|null $passwordad
*
* @return User
*/
public function setPasswordad($passwordad = null)
{
$this->passwordad = $passwordad;
return $this;
}
/**
* Get passwordad.
*
* @return string|null
*/
public function getPasswordad()
{
return $this->passwordad;
}
/**
* Set note
*
* @param string $note
*
* @return User
*/
public function setNote($note)
{
$this->note = $note;
return $this;
}
/**
* Get note
*
* @return string
*/
public function getNote()
{
return $this->note;
}
}

View File

@ -9,7 +9,7 @@ use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="usergroupe",uniqueConstraints={@ORM\UniqueConstraint(columns={"user_id", "group_id"})})
* @ORM\Table(name="usergroupe")
* @ORM\HasLifecycleCallbacks()
*
* @UniqueEntity(fields={"user", "group"}, message="Cette liaison existe déjà !")
@ -37,30 +37,14 @@ class UserGroup
/**
* @ORM\Column(type="boolean", options={"default" : false})
* CE CHAMP N'EST PLUS UTILSE
*/
private $fgmanager = false;
/**
* @ORM\Column(type="integer", length=60, nullable=true)
*/
private $rolegroup;
/**
* @ORM\Column(type="string", length=60, nullable=true)
*/
private $keyvalue;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $visitedate;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $visitecpt;
/**
* Get id
*
@ -166,76 +150,4 @@ class UserGroup
{
return $this->keyvalue;
}
/**
* Set visitedate
*
* @param \DateTime $visitedate
*
* @return UserGroup
*/
public function setVisitedate($visitedate)
{
$this->visitedate = $visitedate;
return $this;
}
/**
* Get visitedate
*
* @return \DateTime
*/
public function getVisitedate()
{
return $this->visitedate;
}
/**
* Set visitecpt
*
* @param integer $visitecpt
*
* @return UserGroup
*/
public function setVisitecpt($visitecpt)
{
$this->visitecpt = $visitecpt;
return $this;
}
/**
* Get visitecpt
*
* @return integer
*/
public function getVisitecpt()
{
return $this->visitecpt;
}
/**
* Set rolegroup
*
* @param integer $rolegroup
*
* @return UserGroup
*/
public function setRolegroup($rolegroup)
{
$this->rolegroup = $rolegroup;
return $this;
}
/**
* Get rolegroup
*
* @return integer
*/
public function getRolegroup()
{
return $this->rolegroup;
}
}

View File

@ -13,18 +13,15 @@
class sessionListener {
protected $container;
protected $em;
protected $token_storage;
protected $session;
public function __construct($container, EntityManager $em, TokenStorageInterface $token_storage,Session $session)
public function __construct($container, EntityManager $em, TokenStorageInterface $token_storage)
{
$this->container = $container;
$this->em = $em;
$this->token_storage = $token_storage;
$this->session = $session;
}
public function haveRole($curentuser,$roles,$tohave,$route) {
public function haveRole($roles,$tohave,$route) {
$haverole=false;
if($roles=="") {
if(empty($tohave)) $haverole=true;
@ -38,7 +35,7 @@
if($route!=null) {
if($haverole&&in_array("ROLE_MODO",$roles)) {
$permmodo=$this->em->getRepository("CadolesCoreBundle:PermModo")->findOneBy(["route"=>$route,"visible"=>true,"permmodoprofil"=>$curentuser->getPermmodoprofil()]);
$permmodo=$this->em->getRepository("CadolesCoreBundle:PermModo")->findOneBy(["route"=>$route,"visible"=>true]);
if(!$permmodo) $haverole=false;
}
}
@ -47,7 +44,9 @@
}
public function onDomainParse(Event $event) {
$session = $this->session;
$session = new Session();
$configs = $this->em->getRepository("CadolesCoreBundle:Config")->findAll();
foreach($configs as $config) {
@ -55,6 +54,11 @@
$session->set($config->getId(), strval($config->getValue()));
}
// Calcul des couleurs
$color = $this->container->get('cadoles.core.service.color');
$color->setColor();
// Utilisateur en cours
$curentuserid=0;
$token = $this->token_storage->getToken();
@ -75,45 +79,35 @@
// App activate
$app=[];
$app["importuser_activate"] =($masteridentity=="SQL");
$app["portal_activate"] =$this->container->getParameter('portal_activate');
$app["cron_activate"] =$this->container->getParameter('cron_activate');
$app["module_activate"] =$this->container->getParameter('module_activate');
$app["page_activate"] =$this->container->getParameter('page_activate');
$app["item_activate"] =$this->container->getParameter('item_activate');
$app["alert_activate"] =$this->container->getParameter('alert_activate');
$app["calendar_activate"] =$this->container->getParameter('calendar_activate');
$app["blog_activate"] =$this->container->getParameter('blog_activate');
$app["flux_activate"] =$this->container->getParameter('flux_activate');
$app["notice_activate"] =$this->container->getParameter('notice_activate');
$app["syncenvole_activate"] =$this->container->getParameter('syncenvole_activate');
$app["activate_widlimesurvey"] =$this->container->getParameter('activate_widlimesurvey');
$app["activate_widmoodle"] =$this->container->getParameter('activate_widmoodle');
$app["activate_widpiwik"] =$this->container->getParameter('activate_widpiwik');
$app["activate_widwordpress"] =$this->container->getParameter('activate_widwordpress');
$app["widbalado_activate_syncenvole"] =$this->container->getParameter('widbalado_activate_syncenvole');
$app["widcdt_activate_syncenvole"] =$this->container->getParameter('widcdt_activate_syncenvole');
$app["widgepi_activate_syncenvole"] =$this->container->getParameter('widgepi_activate_syncenvole');
$app["widnextcloud_activate_syncenvole"] =$this->container->getParameter('widnextcloud_activate_syncenvole');
$app["widpiwik_activate_syncenvole"] =$this->container->getParameter('widpiwik_activate_syncenvole');
$app["widsacoche_activate_syncenvole"] =$this->container->getParameter('widsacoche_activate_syncenvole');
$app["importuser_activate"] =($masteridentity=="SQL");
$app["portal_activate"] =$this->container->getParameter('portal_activate');
$app["cron_activate"] =$this->container->getParameter('cron_activate');
$app["module_activate"] =$this->container->getParameter('module_activate');
$app["page_activate"] =$this->container->getParameter('page_activate');
$app["item_activate"] =$this->container->getParameter('item_activate');
$app["alert_activate"] =$this->container->getParameter('alert_activate');
$app["calendar_activate"] =$this->container->getParameter('calendar_activate');
$app["blog_activate"] =$this->container->getParameter('blog_activate');
$app["flux_activate"] =$this->container->getParameter('flux_activate');
$app["notice_activate"] =$this->container->getParameter('notice_activate');
$app["syncenvole_activate"] =$this->container->getParameter('syncenvole_activate');
$app["activate_widlimesurvey"] =$this->container->getParameter('activate_widlimesurvey');
$app["activate_widmoodle"] =$this->container->getParameter('activate_widmoodle');
$app["activate_widpiwik"] =$this->container->getParameter('activate_widpiwik');
$app["activate_widwordpress"] =$this->container->getParameter('activate_widwordpress');
// Chargement de la sidebar
$iconniveau01 = "fa ".$this->container->getParameter('iconniveau01');
$labelsniveau01 = $this->container->getParameter('labelsniveau01');
$labelniveau01 = $this->container->getParameter('labelniveau01');
$iconniveau01 =$this->container->getParameter('iconniveau01');
$labelsniveau01 =$this->container->getParameter('labelsniveau01');
$labelniveau01 =$this->container->getParameter('labelsniveau01');
$session->set('labelniveau01',$labelniveau01);
$session->set('labelsniveau01',$labelsniveau01);
$viewniveau02 = $this->container->getParameter('viewniveau02');
$iconniveau02 = "fa ".$this->container->getParameter('iconniveau02');
$labelsniveau02 = $this->container->getParameter('labelsniveau02');
$labelniveau02 = $this->container->getParameter('labelniveau02');
$viewniveau02 =$this->container->getParameter('viewniveau02');
$iconniveau02 =$this->container->getParameter('iconniveau02');
$labelsniveau02 =$this->container->getParameter('labelsniveau02');
$labelniveau02 =$this->container->getParameter('labelniveau02');
$session->set('viewniveau02',$viewniveau02);
$session->set('labelniveau02',$labelniveau02);
$session->set('labelsniveau02',$labelsniveau02);
$moderegistration =$this->container->getParameter('moderegistration');
if($masteridentity!="SQL") $moderegistration="none";
@ -122,9 +116,7 @@
if(in_array("ROLE_MODO",$roles)) {
$request = $event->getRequest();
$route = $request->attributes->get('_route');
if($route!="cadoles_core_config"&&stripos($route,"_config")!==false&&stripos($route,"cadoles_core_config_file")===false) {
$permmodoprofil=$curentuser->getPermmodoprofil();
if($route!="cadoles_core_config"&&stripos($route,"_config")!==false) {
if(stripos($route,"cadoles_core_config_logo")!==false) $route="cadoles_portal_config_page";
if(stripos($route,"cadoles_core_config_header")!==false) $route="cadoles_portal_config_page";
@ -137,9 +129,6 @@
if(stripos($route,"cadoles_portal_config_itemcategory")!==false) $route="cadoles_portal_config_item";
if(stripos($route,"cadoles_portal_config_alertcategory")!==false) $route="cadoles_portal_config_alert";
if(stripos($route,"cadoles_portal_config_calendarevent")!==false) $route="cadoles_portal_config_calendar";
if(stripos($route,"cadoles_portal_config_blogarticle")!==false) $route="cadoles_portal_config_blog";
if(stripos($route,"cadoles_portal_config_blogcomment")!==false) $route="cadoles_portal_config_blog";
if(stripos($route,"cadoles_portal_config_projecttask")!==false) $route="cadoles_portal_config_project";
if(stripos($route,"cadoles_cron_config")!==false) $route="cadoles_cron_config";
$tbroute=explode("_",$route);
@ -148,7 +137,7 @@
$route.=(isset($tbroute[2])?"_".$tbroute[2]:"");
$route.=(isset($tbroute[3])?"_".$tbroute[3]:"");
$permmodo = $this->em->getRepository("CadolesCoreBundle:PermModo")->findOneBy(['permmodoprofil'=>$permmodoprofil,'route'=> $route, "visible"=>true]);
$permmodo = $this->em->getRepository("CadolesCoreBundle:PermModo")->findOneBy(['route'=> $route, "visible"=>true]);
if(!$permmodo) die('Permission denied');
}
}
@ -156,7 +145,7 @@
$sidebar=array();
$nvs1 = $this->em->getRepository("CadolesCoreBundle:Sidebar")->findBy(array('parent'=> NULL), array('roworder' => 'ASC'));
foreach($nvs1 as $nv1) {
if($this->haveRole($curentuser,$roles,$nv1->getPermission(),$nv1->getPath())) {
if($this->haveRole($roles,$nv1->getPermission(),$nv1->getPath())) {
$sidebar[$nv1->getRoworder()] = array(
"fonticon" => $nv1->getFonticon(),
"label" => $nv1->getLabel(),
@ -187,7 +176,7 @@
foreach($nv1->getChilds() as $nv2) {
if($this->haveRole($curentuser,$roles,$nv2->getPermission(),$nv2->getPath())) {
if($this->haveRole($roles,$nv2->getPermission(),$nv2->getPath())) {
$sidebar[$nv1->getRoworder()]["childs"][$nv2->getRoworder()] = array (
"fonticon" => $nv2->getFonticon(),
"label" => $nv2->getLabel(),
@ -222,7 +211,7 @@
}
foreach($nv2->getChilds() as $nv3) {
if($this->haveRole($curentuser,$roles,$nv3->getPermission(),$nv3->getPath())) {
if($this->haveRole($roles,$nv3->getPermission(),$nv3->getPath())) {
$sidebar[$nv1->getRoworder()]["childs"][$nv2->getRoworder()]["childs"][$nv3->getRoworder()] = array (
"fonticon" => $nv3->getFonticon(),
"label" => $nv3->getLabel(),
@ -265,7 +254,6 @@
$session->set('cancreatepage',false);
$session->set('cancreatecalendar',false);
$session->set('cancreateblog',false);
$session->set('cancreateproject',false);
$session->remove("sublogo");
if($curentuser!="anon.") {
@ -275,7 +263,6 @@
if($group->getFgcancreatepage()) $session->set('cancreatepage',true);
if($group->getFgcancreatecalendar()) $session->set('cancreatecalendar',true);
if($group->getFgcancreateblog()) $session->set('cancreateblog',true);
if($group->getFgcancreateproject()) $session->set('cancreateproject',true);
}
$niveau01=$curentuser->getNiveau01();
@ -285,66 +272,6 @@
if(!is_null($niveau01->getLogo()))
$session->set("sublogo", $niveau01->getLogo());
if(!is_null($niveau01->getHeader()))
$session->set("header", $niveau01->getHeader());
if(!is_null($niveau01->getColormain()))
$session->set("colormain", $niveau01->getColormain());
if(!is_null($niveau01->getFontcolorhover()))
$session->set("fontcolorhover", $niveau01->getFontcolorhover());
if(!is_null($niveau01->getColorbody()))
$session->set("colorbody", $niveau01->getColorbody());
if(!is_null($niveau01->getFontfacebody()))
$session->set("fontfacebody", $niveau01->getFontfacebody());
if(!is_null($niveau01->getFontfacetitle()))
$session->set("fontfacetitle", $niveau01->getFontfacetitle());
}
}
// Calcul des couleurs
$color = $this->container->get('cadoles.core.service.color');
$color->setColor();
if($curentuser!="anon.") {
// Préférence
$preference=$curentuser->getPreference();
if(is_array($preference)) {
// Préférence header
if(array_key_exists("fgheader",$preference)) {
$fgheader=($preference["fgheader"][0]=="true");
$session->set("fgheader", $fgheader);
}
// Préférence header
if(array_key_exists("pagebookmark",$preference)) {
$pagebookmark=$preference["pagebookmark"][0];
$session->set("pagebookmark", $pagebookmark);
}
}
// Visite
$now=new \DateTime();
if(!$curentuser->getVisitedate()) {
$curentuser->setVisitedate($now);
$curentuser->setVisitecpt($curentuser->getVisitecpt()+1);
$this->em->persist($curentuser);
$this->em->flush();
}
else {
$visitedate=clone $curentuser->getVisitedate();
$visitedate->add(new \DateInterval("PT1H"));
if($visitedate<$now) {
$curentuser->setVisitedate($now);
$curentuser->setVisitecpt($curentuser->getVisitecpt()+1);
$this->em->persist($curentuser);
$this->em->flush();
}
}
}
}

View File

@ -39,11 +39,7 @@ class syncGroup implements EventSubscriber
if(!($entity instanceof Group)) return;
// Synchronisation uniquement si changement de valeur
$this->shouldSync = $args->hasChangedField('label') ||
$args->hasChangedField('description') ||
$args->hasChangedField('owner') ||
$args->hasChangedField('email') ||
$args->hasChangedField('fgcanshare');
$this->shouldSync = $args->hasChangedField('label');
if($args->hasChangedField('label')) $this->oldid=$args->getOldValue('label');
}
@ -78,7 +74,6 @@ class syncGroup implements EventSubscriber
}
public function removeGroup($group) {
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche dans l'annuaire
@ -90,18 +85,12 @@ class syncGroup implements EventSubscriber
$ldap->deleteGroup($group);
}
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->delGroup($group);
}
}
public function upsertGroup($group, $force = false)
{
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche dans l'annuaire
if(isset($this->oldid))
@ -121,12 +110,6 @@ class syncGroup implements EventSubscriber
$ldap->addGroup($group);
}
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->syncGroup($group,$this->oldid);
}
}
public function getBaseGroup() {

View File

@ -20,7 +20,6 @@ class syncNiveau01 implements EventSubscriber
$this->em = $em;
$this->shouldSync = true;
$this->changeSiren = true;
$this->changeLabel = true;
}
public function getSubscribedEvents()
@ -42,7 +41,6 @@ class syncNiveau01 implements EventSubscriber
// Synchronisation uniquement si changement de valeur
$this->shouldSync = $args->hasChangedField('label')||$args->hasChangedField('siren');
$this->changeSiren = $args->hasChangedField('siren');
$this->changeLabel = $args->hasChangedField('label');
if($args->hasChangedField('label')) $this->oldid=$args->getOldValue('label');
@ -59,18 +57,19 @@ class syncNiveau01 implements EventSubscriber
}
if ($entity instanceof Niveau01 && ($this->changeSiren||$this->changeLabel)) {
// On change le SIRET de l'ensemble des utlisateurs associés à ce Niveau01
// Pas de déclencheur bdd car trop long
// La synchronisation journalière mettra à jour l'annuaire de l'utilisateur
if ($entity instanceof Niveau01 && $this->changeSiren) {
// On change le SIRET de l'ensemble des utlisateurs associés à cet établissement
$qb = $this->em->createQueryBuilder();
$q = $qb->update('CadolesCoreBundle:User','user')
->set('user.labelniveau01', $qb->expr()->literal($entity->getLabel()))
->set('user.siren', $qb->expr()->literal($entity->getSiren()))
->where('user.niveau01 = :niveau01')
->setParameter("niveau01", $entity->getId())
->getQuery();
$q->execute();
$datas= $qb ->select('table')->from('CadolesCoreBundle:User','table')
->where('table.niveau01 = :id')
->setParameter("id", $entity->getId())
->getQuery()
->getResult();
foreach($datas as $data) {
$data->setSiren($entity->getSiren());
$this->em->persist($data);
$this->em->flush();
}
}
}

View File

@ -22,7 +22,6 @@ class syncNiveau02 implements EventSubscriber
$this->em = $em;
$this->shouldSync = true;
$this->changeSiret = true;
$this->changeLabel = true;
}
public function getSubscribedEvents()
@ -44,7 +43,6 @@ class syncNiveau02 implements EventSubscriber
// Synchronisation uniquement si changement de valeur
$this->shouldSync = $args->hasChangedField('label')||$args->hasChangedField('siret')||$args->hasChangedField('postaladress');
$this->changeSiret = $args->hasChangedField('siret');
$this->changeLabel = $args->hasChangedField('label');
if($args->hasChangedField('label')) $this->oldid=$args->getOldValue('label');
}
@ -58,18 +56,19 @@ class syncNiveau02 implements EventSubscriber
$this->upsertNiveau02($entity);
}
if ($entity instanceof Niveau02 && ($this->changeSiret||$this->changeLabel)) {
// On change le SIREN de l'ensemble des utlisateurs associés à ce Niveau02
// Pas de déclencheur bdd car trop long
// La synchronisation journalière mettra à jour l'annuaire de l'utilisateur
if ($entity instanceof Niveau02 && $this->changeSiret) {
// On change le SIRET de l'ensemble des utlisateurs associés à cet établissement
$qb = $this->em->createQueryBuilder();
$q = $qb->update('CadolesCoreBundle:User','user')
->set('user.labelniveau02', $qb->expr()->literal($entity->getSiret()))
->set('user.siret', $qb->expr()->literal($entity->getSiren()))
->where('user.niveau02 = :niveau02')
->setParameter("niveau02", $entity->getId())
->getQuery();
$q->execute();
$datas= $qb ->select('table')->from('CadolesCoreBundle:User','table')
->where('table.niveau02 = :id')
->setParameter("id", $entity->getId())
->getQuery()
->getResult();
foreach($datas as $data) {
$data->setSiret($entity->getSiret());
$this->em->persist($data);
$this->em->flush();
}
}
}

View File

@ -17,16 +17,12 @@ class syncUser implements EventSubscriber
{
protected $container;
protected $shouldSync;
protected $shouldSyncpwd;
protected $baseUser;
protected $ldap_username;
public function __construct($container, EntityManager $em, $ldap_username) {
public function __construct($container, EntityManager $em) {
$this->container = $container;
$this->em = $em;
$this->shouldSync = true;
$this->shouldSyncpwd = true;
$this->ldap_username = $ldap_username;
}
public function getSubscribedEvents()
@ -51,13 +47,12 @@ class syncUser implements EventSubscriber
$args->hasChangedField('lastname') ||
$args->hasChangedField('email') ||
$args->hasChangedField('role') ||
$args->hasChangedField('password') ||
$args->hasChangedField('avatar') ||
$args->hasChangedField('niveau01') ||
$args->hasChangedField('niveau02') ||
$args->hasChangedField('siren') ||
$args->hasChangedField('siret') ||
$args->hasChangedField('labelniveau01') ||
$args->hasChangedField('labelniveau02') ||
$args->hasChangedField('authlevel') ||
$args->hasChangedField('usualname') ||
$args->hasChangedField('telephonenumber') ||
@ -72,18 +67,11 @@ class syncUser implements EventSubscriber
$args->hasChangedField('birthplace')
;
$this->shouldSyncpwd = $args->hasChangedField('password');
$entity->setSiren($entity->getNiveau01()->getSiren());
$entity->setLabelniveau01($entity->getNiveau01()->getLabel());
if($entity->getNiveau02()!==null) {
if($entity->getNiveau02()!==null)
$entity->setSiret($entity->getNiveau02()->getSiret());
$entity->setLabelniveau02($entity->getNiveau02()->getLabel());
}
else {
else
$entity->setSiret(null);
$entity->setLabelniveau02(null);
}
}
public function postUpdate(LifecycleEventArgs $args)
@ -95,11 +83,6 @@ class syncUser implements EventSubscriber
if ($entity instanceof User && $this->shouldSync) {
$this->upsertUser($entity);
}
// On met à jour/créé le password de l'utilisateur dans l'annuaire
if ($entity instanceof User && $this->shouldSyncpwd) {
$this->upsertUserpwd($entity);
}
}
public function postPersist(LifecycleEventArgs $args)
@ -109,7 +92,6 @@ class syncUser implements EventSubscriber
// On créait une fiche pour l'usager dans l'annuaire
if ($entity instanceof User) {
$this->upsertUser($entity);
$this->upsertUserpwd($entity);
}
}
@ -123,35 +105,28 @@ class syncUser implements EventSubscriber
}
public function removeUser($user) {
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche l'utilisateur dans l'annuaire
$criteria = '('.$this->ldap_username.'='.$user->getUsername().')';
$criteria = '(uid='.$user->getUsername().')';
$subbranch=$this->baseUser;
$results = $ldap->search($criteria, array($this->ldap_username), $subbranch);
$results = $ldap->search($criteria, array('uid'), $subbranch);
if(count($results)) {
$ldap->deleteUser($user);
}
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->delUser($user);
}
}
public function upsertUser($user, $force = false)
{
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche l'utilisateur dans l'annuaire
$criteria = '('.$this->ldap_username.'='.$user->getUsername().')';
$criteria = '(uid='.$user->getUsername().')';
$subbranch=$this->baseUser;
$results = $ldap->search($criteria, array($this->ldap_username), $subbranch);
$results = $ldap->search($criteria, array('uid'), $subbranch);
// Mise à jour si elle existe
if(count($results) > 0) {
@ -165,12 +140,6 @@ class syncUser implements EventSubscriber
$ldap->addGroupUser($user);
}
// Synchronisation Onlyoffice
$only = $this->container->get('cadoles.core.service.only');
if($only->isEnabled()) {
$only->syncUser($user);
}
// On ajoute l'utilisateur au groupe 'Tout le Monde' quoi qu'il arrive
$fgall=$this->em->getRepository('CadolesCoreBundle:Group')->findBy(array('fgall'=>true));
if($fgall) {
@ -181,30 +150,12 @@ class syncUser implements EventSubscriber
$data->setUser($user);
$data->setGroup($fgall[0]);
$data->setKeyvalue($key);
$data->setRolegroup(0);
$this->em->persist($data);
$this->em->flush();
}
}
}
public function upsertUserpwd($user, $force = false)
{
// Synchonisation LDAP
$ldap = $this->container->get('cadoles.core.service.ldap');
if($ldap->isEnabled()) {
// On recherche l'utilisateur dans l'annuaire
$criteria = '('.$this->ldap_username.'='.$user->getUsername().')';
$subbranch=$this->baseUser;
$results = $ldap->search($criteria, array($this->ldap_username), $subbranch);
// Mise à jour si elle existe
if(count($results) > 0) {
$ldap->modifyUserpwd($user);
}
}
}
public function getBaseUser() {
return $this->baseUser;
}

View File

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

View File

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

View File

@ -76,37 +76,32 @@ class ConfigType extends AbstractType
case "font":
$choices=array(
"ABeeZee-Regular" => "ABeeZee-Regular",
"Helvetica" => "Helvetica",
"Peacesans" => "Peacesans",
"Acme-Regular" => "Acme-Regular",
"Redressed" => "Redressed",
"Roboto-Regular" => "Roboto-Regular",
"Justanotherhand-Regular" => "Justanotherhand-Regular",
"Lato-Regular" => "Lato-Regular",
"ABeeZee-Regular" => "ABeeZee-Regular",
"AlfaSlabOne-Regular" => "AlfaSlabOne-Regular",
"Anton-Regular" => "Anton-Regular",
"FredokaOne-Regular" => "FredokaOne-Regular",
"Overpass-Black" => "Overpass-Black",
"Righteous-Regular" => "Righteous-Regular",
"Signika-Regular" => "Signika-Regular",
"Teko-Bold" => "Teko-Bold",
"LuckiestGuy-Regular" => "LuckiestGuy-Regular",
"Baloo-Regular" => "Baloo-Regular",
"CarterOne-Regular" => "CarterOne-Regular",
"Chewy-Regular" => "Chewy-Regular",
"Courgette-Regular" => "Courgette-Regular",
"FredokaOne-Regular" => "FredokaOne-Regular",
"Gothic-Bold" => "Gothic-Bold",
"Gothic-Regular" => "Gothic-Regular",
"Grandstander" => "Grandstander",
"Helvetica" => "Helvetica",
"Justanotherhand-Regular" => "Justanotherhand-Regular",
"Lato-Regular" => "Lato-Regular",
"LexendDeca-Regular" => "LexendDeca-Regular",
"LuckiestGuy-Regular" => "LuckiestGuy-Regular",
"Marianne-Bold" => "Marianne-Bold",
"Marianne-Regular" => "Marianne-Regular",
"Overpass-Black" => "Overpass-Black",
"PassionOne" => "PassionOne",
"Peacesans" => "Peacesans",
"Redressed" => "Redressed",
"Righteous-Regular" => "Righteous-Regular",
"Roboto-Regular" => "Roboto-Regular",
"RubikMonoOne-Regular" => "RubikMonoOne-Regular",
"SigmarOne-Regular" => "SigmarOne-Regular",
"Signika-Regular" => "Signika-Regular",
"Teko-Bold" => "Teko-Bold",
"Viga-Regular" => "Viga-Regular",
);
$builder->add("value", ChoiceType::class,
@ -156,7 +151,6 @@ class ConfigType extends AbstractType
"NO_BODY" => "NO_BODY",
"ROLE_USER" => "ROLE_USER",
"ROLE_ANIM" => "ROLE_ANIM",
"ROLE_MODO" => "ROLE_MODO",
);
$builder->add("value", ChoiceType::class,

View File

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

View File

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

View File

@ -1,116 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Tetranz\Select2EntityBundle\Form\Type\Select2EntityType;
use Ivory\CKEditorBundle\Form\Type\CKEditorType;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr\Join;
class MailingType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$session = new Session();
$builder->add('submit',
SubmitType::class, array(
"label" => "Envoyer",
"attr" => array("class" => "btn btn-success")
)
);
$perm=$options["perm"];
$userid=$options["userid"];
$builder
->add('niveau01',EntityType::class,[
"mapped" => false,
"required" => false,
"class" => "CadolesCoreBundle:Niveau01",
'multiple' => true,
"label" => $session->get('labelsniveau01'),
'placeholder' => '== Choisir '.$session->get('labelsniveau01').' ==',
"choice_label" => "label",
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"),
"query_builder"=> function (EntityRepository $er) use($perm,$userid) {
if($perm)
return $er->createQueryBuilder('niveau01');
else {
$result=$er->createQueryBuilder("table")->innerJoin("CadolesCoreBundle:UserModo", "usermodo", Join::WITH, "table.id = usermodo.niveau01");
$result->andWhere("usermodo.user = :userid");
$result->setParameter('userid', $userid);
return $result;
}
}
]);
if($perm) {
$builder
->add('groups', Select2EntityType::class, [
'mapped' => false,
'label' => 'Groupes',
'class' => 'CadolesCoreBundle:Group',
'text_property' => 'label',
'multiple' => true,
'remote_route' => 'cadoles_core_ajax_group_list',
'primary_key' => 'id',
'text_property' => 'label',
'minimum_input_length' => 0,
'page_limit' => 100,
'allow_clear' => true,
'delay' => 250,
'cache' => false,
'cache_timeout' => 60000,
'language' => 'fr',
'placeholder' => 'Selectionner des groupes',
]);
}
$builder
->add('subject', TextType::class, [
"label" =>"Sujet",
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"),
"mapped" => false
]);
$builder
->add("message",CKEditorType::class,[
'config_name' => 'small_config',
'label' => "Message",
'mapped'=> false,
'required' => true,
'attr' => array("class" => "form-control", "style" => "margin-bottom:15px"),
'config' => ["height" => "400px"]
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Cadoles\CoreBundle\Entity\User',
'perm' => "boolean",
'userid' => "integer",
));
}
}

View File

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

View File

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

View File

@ -1,52 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\EntityManager;
class PermmodoprofilType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('submit',
SubmitType::class, array(
"label" => ($options["mode"]=="delete"?"Confirmer la Suppression":"Valider"),
"attr" => ($options["mode"]=="delete"?array("class" => "btn btn-danger"):array("class" => "btn btn-success"))
)
);
$builder->add('name',
TextType::class, array(
"label" =>"Label",
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Cadoles\CoreBundle\Entity\PermModoProfil',
'mode' => "string",
'labelsiren' => "string",
'masteridentity' => "string"
));
}
}

View File

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

View File

@ -45,8 +45,7 @@ class ResetpwdType extends AbstractType
"required" => ($options["mode"]=="submit"?true:false),
"options" => array("always_empty" => true),
"first_options" => array("label" => "Votre nouveau Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px")),
"second_options" => array('label' => 'Confirmer votre nouveau Mot de Passe',"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")),
"invalid_message" => "Mot de passe non valide"
"second_options" => array('label' => 'Confirmer votre nouveau Mot de Passe',"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"))
)
);
}

View File

@ -1,95 +0,0 @@
<?php
namespace Cadoles\CoreBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver;
class IconChoiceType extends AbstractType
{
/**
* Cache for multiple icon fields or sub-requests.
*
* @var array
*/
private $choices;
private $fontawesomeIconsFile;
public function __construct($fontawesomeIconsFile)
{
// Liste des icones FontAwesome au format JSON
// Récupéré depuis le dépôt officiel via la commande "make fetch-fontawesome-icons"
// Voir service.yml
$this->fontawesomeIconsFile = $fontawesomeIconsFile;
}
public function buildView(FormView $view, FormInterface $form, array $options)
{
// Pass this flag is necessary to render the label as raw.
// See below the twig field template for more details.
$view->vars['raw_label'] = true;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'attr' => [
// It's the key of the solution and can be done in many ways.
// Now, the rendered <select> element will have a new font.
'style' => "font-family: 'FontAwesome';",
'class' => 'select2-icon',
],
'choices' => $this->getFontAwesomeIconChoices(),
]);
}
public function getParent()
{
return ChoiceType::class;
}
protected function getFontAwesomeIconChoices()
{
if (null !== $this->choices) {
return $this->choices;
}
$fileContent = file_get_contents($this->fontawesomeIconsFile);
if (!$fileContent) {
throw new \Error('Could not load fontawesome icons file');
}
$icons = json_decode($fileContent, true);
foreach ($icons as $iconName => $iconMetadata) {
foreach ($iconMetadata['free'] as $iconStyle) {
if ('brands' === $iconStyle) {
// On ne propose pas les icônes de marques déposées.
continue;
}
$iconClass = '';
switch ($iconStyle) {
case 'solid':
$iconClass .= ' fas';
break;
case 'regular':
$iconClass .= ' far';
break;
case 'brands':
default:
$iconClass .= ' fa';
break;
}
$iconClass .= ' fa-' . $iconName;
$this->choices[$iconMetadata['label'] . ' (' . $iconStyle . ')'] = trim($iconClass);
}
}
return $this->choices;
}
}

View File

@ -16,8 +16,6 @@ use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Tetranz\Select2EntityBundle\Form\Type\Select2EntityType;
@ -44,7 +42,7 @@ class UserType extends AbstractType
TextType::class, array(
"label" =>"Login",
"disabled" => ($options["mode"]=="submit"?false:true),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px", "autocomplete" => "new-password")
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
@ -75,26 +73,6 @@ class UserType extends AbstractType
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px;$readonly","onfocus" => $onfocus, "onchange" => $onchange),
"required" => true,
"choices" => $choices));
$builder->add('permmodoprofil',
EntityType::class,[
"class" => "CadolesCoreBundle:PermModoProfil",
"label" => "Profil de Modération",
"choice_label" => "name",
'disabled' => ($options["mode"]=="delete"?true:false),
"required" => false,
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px;$readonly","onfocus" => $onfocus, "onchange" => $onchange),
]
);
$builder->add('note',
TextareaType::class, array(
"label" => "Notes Administrateur",
"required" => false,
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px; height: 130px")
)
);
}
$perm=$options["perm"];
@ -104,45 +82,33 @@ class UserType extends AbstractType
EntityType::class,
array("class" => "CadolesCoreBundle:Niveau01",
"label" => $session->get('labelniveau01'),
'placeholder' => '== Choisir '.$session->get('labelniveau01').' ==',
"choice_label" => "label",
"query_builder"=> function (EntityRepository $er) use($access,$perm,$userid) {
if($access=="config") {
if($perm)
return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label','ASC');
return $er->createQueryBuilder('niveau01');
else {
$result=$er->createQueryBuilder("table")->innerJoin("CadolesCoreBundle:UserModo", "usermodo", Join::WITH, "table.id = usermodo.niveau01")->orderBy('table.label','ASC');
$result=$er->createQueryBuilder("table")->innerJoin("CadolesCoreBundle:UserModo", "usermodo", Join::WITH, "table.id = usermodo.niveau01");
$result->andWhere("usermodo.user = :userid");
$result->setParameter('userid', $userid);
return $result;
}
}
else {
return $er->createQueryBuilder('niveau01')->orderBy('niveau01.label','ASC');
return $er->createQueryBuilder('niveau01');
}
},
"disabled" => ($options["mode"]=="delete"||$options["masteridentity"]!="SQL"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px","readonly" => ($options["mode"]=="delete"?true:false))));
$builder->add('niveau01other',
TextType::class, array(
"label" =>"Autre ".$session->get('labelniveau01'),
"disabled" => ($options["mode"]=="delete"?true:false),
"required" => false,
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")
)
);
if($options["mode"]!="delete"&&$options["masteridentity"]=="SQL") {
$builder->add('password',
RepeatedType::class, array(
"type" => PasswordType::class,
"required" => ($options["mode"]=="submit"?true:false),
"options" => array("always_empty" => true),
"first_options" => array("label" => "Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px", "autocomplete" => "new-password")),
"second_options" => array('label' => 'Confirmer Mot de Passe',"attr" => array("class" => "form-control", "style" => "margin-bottom:15px")),
"invalid_message" => "Mot de passe non valide"
"first_options" => array("label" => "Mot de Passe","attr" => array("class" => "form-control", "style" => "margin-bottom:15px")),
"second_options" => array('label' => 'Confirmer Mot de Passe',"attr" => array("class" => "form-control", "style" => "margin-bottom:15px"))
)
);
}
@ -394,31 +360,6 @@ class UserType extends AbstractType
}
}
if(!array_key_exists("visite",$fields)) $fields["visite"]["perm"]==2;
if($fields["visite"]["perm"]!=0) {
$builder->add('visitedate', DateTimeType::class, [
"label" => 'Date de dernière visite',
"disabled" => true,
"required" => ($fields["visite"]["perm"]==2),
"widget" => 'single_text',
]);
$builder->add('visitecpt', IntegerType::class, [
"label" => 'Nombre de visites',
"required" => ($fields["visite"]["perm"]==2),
"disabled" => true,
]);
}
$builder->add('motivation',
TextareaType::class, array(
"label" => "Motivation",
"required" => false,
"disabled" => ($options["mode"]=="delete"?true:false),
"attr" => array("class" => "form-control", "style" => "margin-bottom:15px; height: 90px")
)
);
# Avatar
$builder->add('avatar',HiddenType::class, array("empty_data" => "noavatar.png"));

View File

@ -21,15 +21,15 @@ class GroupRepository extends \Doctrine\ORM\EntityRepository
foreach($attgroup as $key => $value) {
if(array_key_exists($key,$attruser)) {
if(is_array($attruser[$key])) {
foreach($attruser[$key] as $val) {
if($value=="*")
if(is_array($value)) {
foreach($value as $val) {
if($val=="*")
$retgroups->add($group);
elseif($val==$value)
elseif($val==$attruser[$key])
$retgroups->add($group);
}
}
else {
elseif(array_key_exists($key,$attruser)) {
if($value=="*")
$retgroups->add($group);
elseif($value==$attruser[$key])
@ -63,7 +63,6 @@ class GroupRepository extends \Doctrine\ORM\EntityRepository
$usergroup->setUser($user);
$usergroup->setGroup($retgroup);
$usergroup->setKeyvalue($key);
$usergroup->setRolegroup(0);
$this->_em->persist($usergroup);
$this->_em->flush();

View File

@ -15,15 +15,15 @@ class Niveau01Repository extends \Doctrine\ORM\EntityRepository
foreach($attniveau as $key => $value) {
if(array_key_exists($key,$attruser)) {
if(is_array($attruser[$key])) {
foreach($attruser[$key] as $val) {
if($value=="*")
if(is_array($value)) {
foreach($value as $val) {
if($val=="*")
return $niveau01;
elseif($val==$value)
elseif($val==$attruser[$key])
return $niveau01;
}
}
else {
else if(array_key_exists($key,$attruser)) {
if($value=="*")
return $niveau01;
elseif($value==$attruser[$key])

View File

@ -41,14 +41,6 @@ cadoles_core_ldap_login:
path: /ldaplogin
defaults: { _controller: CadolesCoreBundle:Security:login }
cadoles_core_redirect:
path: /user/redirect/{route}/{id}
defaults: { _controller: CadolesCoreBundle:Security:redirect }
#== Sonde ================================================================================================================
cadoles_core_sonde:
path: /sonde
defaults: { _controller: CadolesCoreBundle:Sonde:sonde }
#== Crop Image ===========================================================================================================
cadoles_core_crop01:
@ -62,42 +54,14 @@ cadoles_core_crop02:
#== File =================================================================================================================
#-- Access config
cadoles_core_config_file_list:
path: /config/file/list/{directory}
defaults: { _controller: CadolesCoreBundle:File:list, access: config }
cadoles_core_config_file_upload:
path: /config/file/upload/{id}/{type}
defaults: { _controller: CadolesCoreBundle:File:upload, access: config }
cadoles_core_config_file_subdirectory:
path: /config/file/subdirectory/{id}/{type}
defaults: { _controller: CadolesCoreBundle:File:subdirectory, access: config }
cadoles_core_config_file_rename:
path: /config/file/rename/{id}/{oldname}
defaults: { _controller: CadolesCoreBundle:File:rename, access: config }
cadoles_core_config_file_trash:
path: /config/file/trash/
defaults: { _controller: CadolesCoreBundle:File:trash, access: config }
cadoles_core_config_file_restaure:
path: /config/file/restaure/
defaults: { _controller: CadolesCoreBundle:File:restaure, access: config }
cadoles_core_config_file_purgetrash:
path: /config/file/purgetrash/{directory}
defaults: { _controller: CadolesCoreBundle:File:purgetrash, access: config }
cadoles_core_config_file_delete:
path: /config/file/delete/
defaults: { _controller: CadolesCoreBundle:File:delete, access: config }
cadoles_core_config_file_move:
path: /config/file/move/
defaults: { _controller: CadolesCoreBundle:File:move, access: config }
cadoles_core_config_file_view:
path: /config/file/view/{directory}/{filename}
defaults: { _controller: CadolesCoreBundle:File:view, access: config }
@ -111,56 +75,27 @@ cadoles_core_config_file_download:
defaults: { _controller: CadolesCoreBundle:File:download, access: config }
#-- Access user
cadoles_core_user_file_list:
path: /user/file/list/{directory}
defaults: { _controller: CadolesCoreBundle:File:list, access: user }
cadoles_core_user_file_upload:
path: /user/file/upload/{id}/{type}
path: /user/config/file/upload/{id}/{type}
defaults: { _controller: CadolesCoreBundle:File:upload, access: user }
cadoles_core_user_file_subdirectory:
path: /user/file/subdirectory/{id}/{type}
defaults: { _controller: CadolesCoreBundle:File:subdirectory, access: user }
cadoles_core_user_file_rename:
path: /user/file/rename/{id}/{oldname}
defaults: { _controller: CadolesCoreBundle:File:rename, access: user }
cadoles_core_user_file_trash:
path: /user/file/trash/
defaults: { _controller: CadolesCoreBundle:File:trash, access: user }
cadoles_core_user_file_restaure:
path: /user/file/restaure/
defaults: { _controller: CadolesCoreBundle:File:restaure, access: user }
cadoles_core_user_file_purgetrash:
path: /user/file/purgetrash/{directory}
defaults: { _controller: CadolesCoreBundle:File:purgetrash, access: user }
cadoles_core_user_file_delete:
path: /user/file/delete
defaults: { _controller: CadolesCoreBundle:File:delete, access: user }
cadoles_core_user_file_move:
path: /user/file/move/
defaults: { _controller: CadolesCoreBundle:File:move, access: user }
cadoles_core_user_file_view:
path: /user/file/view/{directory}/{filename}
path: file/view/{directory}/{filename}
defaults: { _controller: CadolesCoreBundle:File:view, access: user }
cadoles_core_user_file_download:
path: /user/file/download/{directory}/{filename}
path: file/download/{directory}/{filename}
defaults: { _controller: CadolesCoreBundle:File:download, access: user }
cadoles_core_user_file_show:
path: /user/file/show/{directory}/{filename}
path: file/show/{directory}/{filename}
defaults: { _controller: CadolesCoreBundle:File:show, access: user }
#== Ajax =================================================================================================================
cadoles_core_ajax_country_list:
path: /ajax/country/list
@ -190,13 +125,6 @@ cadoles_core_ajax_group_read:
path: /ajax/group/read
defaults: { _controller: CadolesCoreBundle:Ajax:groupread }
cadoles_core_ajax_item_list:
path: /ajax/item/list
defaults: { _controller: CadolesCoreBundle:Ajax:itemlist }
cadoles_core_ajax_iswhitelist:
path: /ajax/iswhitelist
defaults: { _controller: CadolesCoreBundle:Whitelist:ajaxiswhitelist }
#== Home Config ==========================================================================================================
cadoles_core_config:
@ -204,12 +132,6 @@ cadoles_core_config:
defaults: { _controller: CadolesCoreBundle:Config:home }
#== Mail =================================================================================================================
cadoles_core_mail_invitationgroup:
path: /user/mail/invitationgroup/{id}
defaults: { _controller: CadolesCoreBundle:Mail:invitationgroup }
#== Commun Config Commun =================================================================================================
cadoles_core_config_commun:
path: /config/commun
@ -231,22 +153,22 @@ cadoles_core_config_header:
path: /config/commun/header
defaults: { _controller: CadolesCoreBundle:Config:header }
cadoles_core_config_permmodo:
path: /config/commun/permmodo
defaults: { _controller: CadolesCoreBundle:Config:permmodo }
cadoles_core_config_permmodo_update:
path: /config/commun/permmodo/update
defaults: { _controller: CadolesCoreBundle:Config:permmodoupdate }
cadoles_core_config_datauser:
path: /config/commun/datauser
defaults: { _controller: CadolesCoreBundle:Config:datauser }
cadoles_core_config_datauserdefault:
path: /config/commun/datauserdefault
defaults: { _controller: CadolesCoreBundle:Config:datauserdefault }
cadoles_core_config_datausers:
path: /config/commun/datausers
defaults: { _controller: CadolesCoreBundle:Config:datausers }
cadoles_core_config_datausersdefault:
path: /config/commun/datausersdefault
defaults: { _controller: CadolesCoreBundle:Config:datausersdefault }
#== Registration =========================================================================================================
#-- Access config
@ -318,10 +240,6 @@ cadoles_core_config_user_ajax_selectlist:
path: /config/user/ajax/selectlist
defaults: { _controller: CadolesCoreBundle:User:selectlist, access: config }
cadoles_core_config_mailing:
path: /config/mailing
defaults: { _controller: CadolesCoreBundle:User:mailing }
cadoles_core_config_importuser:
path: /config/importuser
defaults: { _controller: CadolesCoreBundle:User:importuser }
@ -334,10 +252,6 @@ cadoles_core_config_importuser_filectrl:
path: /config/importuserfilectrl
defaults: { _controller: CadolesCoreBundle:User:importuserfilectrl }
cadoles_core_config_user_export:
path: /config/exportuser
defaults: { _controller: CadolesCoreBundle:User:exportuser }
#-- Access user
cadoles_core_user:
path: /user
@ -347,55 +261,10 @@ cadoles_core_user_user_ajax_list:
path: /user/user/ajax/list
defaults: { _controller: CadolesCoreBundle:User:ajaxlist, access: user }
cadoles_core_user_user_ajax_selectlist:
path: /user/user/ajax/selectlist
defaults: { _controller: CadolesCoreBundle:User:selectlist, access: user }
cadoles_core_user_users:
path: /user/users
defaults: { _controller: CadolesCoreBundle:User:list, access: user }
cadoles_core_user_view:
path: /user/view/{id}
defaults: { _controller: CadolesCoreBundle:User:view }
cadoles_core_user_viewcalendar:
path: /user/viewcalendar
defaults: { _controller: CadolesCoreBundle:User:viewcalendar }
cadoles_core_user_preference:
path: /user/preference
defaults: { _controller: CadolesCoreBundle:User:preference }
#== Permmodoprofil ========================================================================================================
cadoles_core_config_permmodoprofil:
path: /config/permmodoprofil
defaults: { _controller: CadolesCoreBundle:Permmodoprofil:list }
cadoles_core_config_permmodoprofil_submit:
path: /config/permmodoprofil/submit
defaults: { _controller: CadolesCoreBundle:Permmodoprofil:submit }
cadoles_core_config_permmodoprofil_update:
path: /config/permmodoprofil/update/{id}
defaults: { _controller: CadolesCoreBundle:Permmodoprofil:update }
cadoles_core_config_permmodoprofil_delete:
path: /config/permmodoprofil/delete/{id}
defaults: { _controller: CadolesCoreBundle:Permmodoprofil:delete }
cadoles_core_config_permmodoprofil_ajax_list:
path: /config/permmodoprofil/ajax/list
defaults: { _controller: CadolesCoreBundle:Permmodoprofil:ajaxlist }
cadoles_core_config_permmodoprofil_permmodo:
path: /config/permmodoprofil/permmodo/{id}
defaults: { _controller: CadolesCoreBundle:Permmodoprofil:permmodo }
cadoles_core_config_permmodo_update:
path: /config/permmodo/update
defaults: { _controller: CadolesCoreBundle:Permmodoprofil:permmodoupdate }
#== Niveau01 =============================================================================================================
cadoles_core_config_niveau01:
@ -422,9 +291,6 @@ cadoles_core_config_niveau01_logo:
path: /config/niveau01/logo
defaults: { _controller: CadolesCoreBundle:Niveau01:logo }
cadoles_core_config_niveau01_header:
path: /config/niveau01/header
defaults: { _controller: CadolesCoreBundle:Niveau01:header }
#== Niveau02 =============================================================================================================
cadoles_core_config_niveau02:
@ -474,10 +340,6 @@ cadoles_core_config_group_users:
path: /config/group/users/{id}
defaults: { _controller: CadolesCoreBundle:Group:users, access: config }
cadoles_core_config_group_statistic:
path: /config/group/statistic/{id}
defaults: { _controller: CadolesCoreBundle:Group:statistic, access: config }
cadoles_core_config_group_ajax_usersnotin:
path: /config/group/ajax/usersnotin/{id}
defaults: { _controller: CadolesCoreBundle:Group:ajaxusersnotin, access: config }
@ -494,21 +356,9 @@ cadoles_core_config_group_ajax_usergroup_del:
path: /config/group/ajax/usergroupdel
defaults: { _controller: CadolesCoreBundle:Group:usergroupdel, access: config }
cadoles_core_config_group_ajax_changerole:
path: /config/group/ajax/changerole
defaults: { _controller: CadolesCoreBundle:Group:changerole, access: config }
cadoles_core_config_group_export:
path: /config/group/export
defaults: { _controller: CadolesCoreBundle:Group:groupexport }
cadoles_core_config_group_usergroup_export:
path: /config/group/users/export/{id}
defaults: { _controller: CadolesCoreBundle:Group:usergroupexport, access: config }
cadoles_core_config_group_invitation:
path: /config/group/invitation/{id}
defaults: { _controller: CadolesCoreBundle:Group:invitation, access: config }
cadoles_core_config_group_ajax_switchmanager:
path: /config/group/ajax/switchmanager
defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: config }
#-- Access user
cadoles_core_user_group:
@ -535,10 +385,6 @@ cadoles_core_user_group_users:
path: /user/group/users/{id}
defaults: { _controller: CadolesCoreBundle:Group:users, access: user }
cadoles_core_user_group_statistic:
path: /user/group/statistic/{id}
defaults: { _controller: CadolesCoreBundle:Group:statistic, access: user }
cadoles_core_user_group_out:
path: /user/group/out/{id}
defaults: { _controller: CadolesCoreBundle:Group:out, access: user }
@ -559,17 +405,11 @@ cadoles_core_user_group_ajax_usergroup_del:
path: /user/group/ajax/usergroupdel
defaults: { _controller: CadolesCoreBundle:Group:usergroupdel, access: user }
cadoles_core_user_group_ajax_changerole:
path: /user/group/ajax/changerole
defaults: { _controller: CadolesCoreBundle:Group:changerole, access: user }
cadoles_core_user_group_ajax_switchmanager:
path: /user/group/ajax/switchmanager
defaults: { _controller: CadolesCoreBundle:Group:switchmanager, access: user }
cadoles_core_user_group_usergroup_export:
path: /user/group/users/export/{id}
defaults: { _controller: CadolesCoreBundle:Group:usergroupexport, access: user }
cadoles_core_user_group_invitation:
path: /user/group/invitation/{id}
defaults: { _controller: CadolesCoreBundle:Group:invitation, access: user }
#== Whitelist ============================================================================================================
@ -593,36 +433,10 @@ cadoles_core_config_whitelist_ajax_list:
path: /config/whitelist/ajax/list
defaults: { _controller: CadolesCoreBundle:Whitelist:ajaxlist }
#== Statistic =============================================================================================================
cadoles_core_config_statistic:
path: /config/statistic
defaults: { _controller: CadolesCoreBundle:Statistic:list }
#== REST ==================================================================================================================
cadoles_core_rest_login:
path: /rest/login
defaults: { _controller: CadolesCoreBundle:Rest:login }
cadoles_core_rest_user:
path: /rest/user/{login}
path: /rest/user/{key}/{login}
defaults: { _controller: CadolesCoreBundle:Rest:user }
cadoles_core_rest_users:
path: /rest/users
defaults: { _controller: CadolesCoreBundle:Rest:users }
cadoles_core_rest_groups:
path: /rest/groups
defaults: { _controller: CadolesCoreBundle:Rest:groups }
cadoles_core_rest_bookmark_add:
path: /rest/bookmark/add
defaults: { _controller: CadolesCoreBundle:Rest:bookmarkadd }
cadoles_core_rest_bookmark_del:
path: /rest/bookmark/del
defaults: { _controller: CadolesCoreBundle:Rest:bookmarkdel }
cadoles_core_rest_alert_hide:
path: /rest/alert/hide
defaults: { _controller: CadolesCoreBundle:Rest:alerthide }

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