diff --git a/main/inc/global.inc.php b/main/inc/global.inc.php index 394d8282a6..58171e4c10 100644 --- a/main/inc/global.inc.php +++ b/main/inc/global.inc.php @@ -542,6 +542,7 @@ $app->before( // Loop in the folder array and create temp folders. /** @var ChamiloLMS\Component\DataFilesystem\DataFilesystem $filesystem */ $filesystem = $app['chamilo.filesystem']; + // @todo improvement create temp folders during installation not everytime $filesystem->createFolders($app['temp.paths']->folders); @@ -679,6 +680,7 @@ require_once 'routes.php'; // Setting doctrine2 extensions if (isset($app['configuration']['main_database']) && isset($app['db.event_manager'])) { + // @todo improvement do not create every time this objects $sortableGroup = new Gedmo\Mapping\Annotation\SortableGroup(array()); $sortablePosition = new Gedmo\Mapping\Annotation\SortablePosition(array()); diff --git a/main/inc/services.php b/main/inc/services.php index a37b508b2d..5923a0aca6 100644 --- a/main/inc/services.php +++ b/main/inc/services.php @@ -20,7 +20,7 @@ if (is_writable($app['sys_temp_path'])) { * $app['monolog']->addInfo('Testing the Monolog logging.'); * $app['monolog']->addError('Testing the Monolog logging.'); */ - //if ($app['debug']) { + if ($app['debug']) { $app->register( new Silex\Provider\MonologServiceProvider(), array( @@ -28,7 +28,7 @@ if (is_writable($app['sys_temp_path'])) { 'monolog.name' => 'chamilo', ) ); - //} + } } //Setting HttpCacheService provider in order to use do: $app['http_cache']->run(); @@ -176,8 +176,8 @@ $app['security.role_hierarchy'] = array( // Role rules $app['security.access_rules'] = array( array('^/admin/administrator', 'ROLE_ADMIN'), - array('^/admin/questionmanager', 'ROLE_QUESTION_MANAGER'), array('^/main/admin/.*', 'ROLE_ADMIN'), + array('^/admin/questionmanager', 'ROLE_QUESTION_MANAGER'), array('^/main/.*', array('ROLE_STUDENT')) //array('^.*$', 'ROLE_USER'), ); @@ -405,7 +405,7 @@ $app['twig'] = $app->share( // Developer tools if (is_writable($app['sys_temp_path'])) { - if ($app['debug'] && $app['show_profiler']) { + if ($app['show_profiler']) { // Adding Symfony2 web profiler (memory, time, logs, etc) $app->register( $p = new Silex\Provider\WebProfilerServiceProvider(), @@ -414,6 +414,7 @@ if (is_writable($app['sys_temp_path'])) { ) ); $app->mount('/_profiler', $p); + // PHP errors for cool kids $app->register(new Whoops\Provider\Silex\WhoopsServiceProvider); } diff --git a/main/install/1.10.0/db_main.sql b/main/install/1.10.0/db_main.sql index 15e035f2ee..d31041197c 100644 --- a/main/install/1.10.0/db_main.sql +++ b/main/install/1.10.0/db_main.sql @@ -3531,5 +3531,23 @@ CREATE TABLE ext_log_entries ( PRIMARY KEY (id) ) DEFAULT CHARSET=utf8; +DROP TABLE IF EXISTS question_score_names; +CREATE TABLE question_score_names ( + id int NOT NULL AUTO_INCREMENT, + score varchar(255) DEFAULT NULL, + name varchar(255) DEFAULT NULL, + description TEXT DEFAULT NULL + question_score_id INT NOT NULL, + PRIMARY KEY (id) +) DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS question_score; +CREATE TABLE question_score ( + id int NOT NULL AUTO_INCREMENT, + name varchar(255) DEFAULT NULL, + PRIMARY KEY (id) +) DEFAULT CHARSET=utf8; + + -- Do not move this UPDATE settings_current SET selected_value = '1.10.0.025' WHERE variable = 'chamilo_database_version'; diff --git a/main/template/default/admin/administrator/question_score/add.tpl b/main/template/default/admin/administrator/question_score/add.tpl new file mode 100644 index 0000000000..cbd972f20a --- /dev/null +++ b/main/template/default/admin/administrator/question_score/add.tpl @@ -0,0 +1,6 @@ +{% extends app.template_style ~ "/layout/layout_1_col.tpl" %} +{% block content %} +
+ {{ form_widget(form) }} +
+{% endblock %} diff --git a/main/template/default/admin/administrator/question_score/edit.tpl b/main/template/default/admin/administrator/question_score/edit.tpl new file mode 100644 index 0000000000..11f1014bc3 --- /dev/null +++ b/main/template/default/admin/administrator/question_score/edit.tpl @@ -0,0 +1,6 @@ +{% extends app.template_style ~ "/layout/layout_1_col.tpl" %} +{% block content %} +
+ {{ form_widget(form) }} +
+{% endblock %} diff --git a/main/template/default/admin/administrator/question_score/list.tpl b/main/template/default/admin/administrator/question_score/list.tpl new file mode 100644 index 0000000000..a733fdc4a1 --- /dev/null +++ b/main/template/default/admin/administrator/question_score/list.tpl @@ -0,0 +1,10 @@ +{% extends app.template_style ~ "/layout/layout_1_col.tpl" %} +{% block content %} + {% for item in items %} + {{ item.name }} - {{ item.role}} + Edit + Delete +
+ {% endfor %} + +{% endblock %} diff --git a/main/template/default/admin/administrator/role/add.tpl b/main/template/default/admin/administrator/role/add.tpl index cbd972f20a..7d4f0c03a4 100644 --- a/main/template/default/admin/administrator/role/add.tpl +++ b/main/template/default/admin/administrator/role/add.tpl @@ -1,6 +1,3 @@ -{% extends app.template_style ~ "/layout/layout_1_col.tpl" %} -{% block content %} -
- {{ form_widget(form) }} -
-{% endblock %} +{% include app.template_style ~ "/admin/administrator/role/settings.tpl" %} +{{ links | var_dump }} +{% include app.template_style ~ "/default_actions/add.tpl" %} diff --git a/main/template/default/admin/administrator/role/settings.tpl b/main/template/default/admin/administrator/role/settings.tpl new file mode 100644 index 0000000000..b87ab54ad6 --- /dev/null +++ b/main/template/default/admin/administrator/role/settings.tpl @@ -0,0 +1,6 @@ +{% set links = { + 'add_link' : path('admin_administrator_roles_add'), + 'edit_link' : path('admin_administrator_roles_add'), + 'list_link' : path('admin_administrator_roles_add') + } +%} diff --git a/main/template/default/default_actions/add.tpl b/main/template/default/default_actions/add.tpl new file mode 100644 index 0000000000..c095cb1eac --- /dev/null +++ b/main/template/default/default_actions/add.tpl @@ -0,0 +1,7 @@ +{% extends app.template_style ~ "/layout/layout_1_col.tpl" %} +{% block content %} + {{ links | var_dump }} +
+ {{ form_widget(form) }} +
+{% endblock %} diff --git a/main/template/default/default_actions/edit.tpl b/main/template/default/default_actions/edit.tpl new file mode 100644 index 0000000000..11f1014bc3 --- /dev/null +++ b/main/template/default/default_actions/edit.tpl @@ -0,0 +1,6 @@ +{% extends app.template_style ~ "/layout/layout_1_col.tpl" %} +{% block content %} +
+ {{ form_widget(form) }} +
+{% endblock %} diff --git a/main/template/default/default_actions/list.tpl b/main/template/default/default_actions/list.tpl new file mode 100644 index 0000000000..a733fdc4a1 --- /dev/null +++ b/main/template/default/default_actions/list.tpl @@ -0,0 +1,10 @@ +{% extends app.template_style ~ "/layout/layout_1_col.tpl" %} +{% block content %} + {% for item in items %} + {{ item.name }} - {{ item.role}} + Edit + Delete +
+ {% endfor %} + +{% endblock %} diff --git a/main/template/default/default_actions/settings.tpl b/main/template/default/default_actions/settings.tpl new file mode 100644 index 0000000000..8f9a7e8635 --- /dev/null +++ b/main/template/default/default_actions/settings.tpl @@ -0,0 +1,6 @@ +{% set links = { + 'add_link' : path('add_link'), + 'edit_link' : path('edit_link'), + 'list_link' : path('list_link') +%} + diff --git a/src/ChamiloLMS/Controller/Admin/Administrator/QuestionScore.php b/src/ChamiloLMS/Controller/Admin/Administrator/QuestionScore.php new file mode 100644 index 0000000000..fd95de8f27 --- /dev/null +++ b/src/ChamiloLMS/Controller/Admin/Administrator/QuestionScore.php @@ -0,0 +1,133 @@ + + */ +class QuestionScore extends BaseController +{ + /** + * + * @param Application $app + * @Route("/") + * @Method({"GET"}) + */ + public function indexAction() + { + $items = parent::listAction('array'); + $template = $this->get('template'); + $template->assign('items', $items); + $response = $template->render_template('admin/administrator/role/list.tpl'); + return new Response($response, 200, array()); + } + + /** + * + * @Route("/{id}", requirements={"id" = "\d+"}, defaults={"foo" = "bar"}) + * @Method({"GET"}) + */ + public function readAction($id) + { + return parent::readAction($id); + } + + public function editAction($id) + { + $roleRepo = $this->getRepository(); + $request = $this->getRequest(); + + $role = $roleRepo->findOneById($id); + + if ($role) { + $form = $this->get('form.factory')->create(new RoleType(), $role); + + if ($request->getMethod() == 'POST') { + $form->bind($this->getRequest()); + + if ($form->isValid()) { + $role = $form->getData(); + parent::updateAction($role); + $this->get('session')->getFlashBag()->add('success', "Updated"); + $url = $this->get('url_generator')->generate('admin_administrator_roles'); + return $this->redirect($url); + } + } + + $template = $this->get('template'); + $template->assign('role', $role); + $template->assign('form', $form->createView()); + $response = $template->render_template('admin/administrator/role/edit.tpl'); + return new Response($response, 200, array()); + } else { + return $this->createNotFoundException(); + } + } + + public function addAction() + { + $request = $this->getRequest(); + $form = $this->get('form.factory')->create(new RoleType()); + + if ($request->getMethod() == 'POST') { + $form->bind($request); + if ($form->isValid()) { + $role = $form->getData(); + parent::createAction($role); + $this->get('session')->getFlashBag()->add('success', "Added"); + + // $params = array('id' => $role->getId()); + // $url = $this->get('url_generator')->generate('admin_administrator_roles_read', $params); + $url = $this->get('url_generator')->generate('admin_administrator_roles'); + return $this->redirect($url); + } + } + + $template = $this->get('template'); + $template->assign('form', $form->createView()); + $response = $template->render_template('admin/administrator/role/add.tpl'); + return new Response($response, 200, array()); + } + + public function deleteAction($id) + { + $result = parent::deleteAction($id); + if ($result) { + $url = $this->get('url_generator')->generate('admin_administrator_roles'); + $this->get('session')->getFlashBag()->add('success', "Deleted"); + + return $this->redirect($url); + } + } + + /** + * @see BaseController::getRepository() + * @return EntityRepository + */ + protected function getRepository() + { + return $this->get('orm.em')->getRepository('Entity\Role'); + } + + /** + * @see BaseController::getNewEntity() + * @return Object + */ + protected function getNewEntity() + { + return new Entity\Role(); + } +} diff --git a/temp/index.html b/temp/index.html deleted file mode 100644 index 83e00291ea..0000000000 --- a/temp/index.html +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/temp/twig/PLACEHOLDER b/temp/twig/PLACEHOLDER deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/vendor/autoload.php b/vendor/autoload.php index 60313fda23..095861494f 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer' . '/autoload_real.php'; -return ComposerAutoloaderInit6d8cfb51f68fe5f00cff93e0da1ac4a3::getLoader(); +return ComposerAutoloaderInit8811d572e3015a10a8864726603bac3a::getLoader(); diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php index ef9924516a..1db8d9a0b2 100644 --- a/vendor/composer/ClassLoader.php +++ b/vendor/composer/ClassLoader.php @@ -121,8 +121,8 @@ class ClassLoader /** * Registers a set of classes, replacing any others previously set. * - * @param string $prefix The classes prefix - * @param array|string $paths The location(s) of the classes + * @param string $prefix The classes prefix + * @param array|string $paths The location(s) of the classes */ public function set($prefix, $paths) { diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 0c3ea3ce8c..8668aa407e 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -503,7 +503,7 @@ return array( 'RSSCache' => $baseDir . '/main/inc/lib/magpierss/rss_cache.inc', 'Redirect' => $baseDir . '/main/inc/lib/redirect.class.php', 'Renderer' => $baseDir . '/main/inc/lib/phpdocx/pdf/include/renderer.cls.php', - 'Request' => $baseDir . '/main/inc/lib/system/web/request.class.php', + 'Request2' => $baseDir . '/main/inc/lib/system/web/request.class.php', 'RequestServer' => $baseDir . '/main/inc/lib/system/web/request_server.class.php', 'Resource' => $baseDir . '/main/coursecopy/classes/Resource.class.php', 'Response' => $baseDir . '/main/inc/lib/response.class.php', @@ -593,7 +593,6 @@ return array( 'SurveyUtil' => $baseDir . '/main/survey/survey.lib.php', 'SystemAnnouncementManager' => $baseDir . '/main/inc/lib/system_announcements.lib.php', 'SystemManagementPage' => $baseDir . '/main/admin/system_management.php', - 'System\\Session' => $baseDir . '/main/inc/lib/system/session.class.php', 'TCPDF_Adapter' => $baseDir . '/main/inc/lib/phpdocx/pdf/include/tcpdf_adapter.cls.php', 'TTFontFile' => $vendorDir . '/mpdf/mpdf/classes/ttfontsuni.php', 'TTFontFile_Analysis' => $vendorDir . '/mpdf/mpdf/classes/ttfontsuni_analysis.php', @@ -682,7 +681,7 @@ return array( 'aiccItem' => $baseDir . '/main/newscorm/aiccItem.class.php', 'aiccObjective' => $baseDir . '/main/newscorm/aiccObjective.class.php', 'aiccResource' => $baseDir . '/main/newscorm/aiccResource.class.php', - 'api_failure' => $baseDir . '/main/inc/lib/main_api.lib.php', + 'api_failure' => $baseDir . '/main/inc/lib/api.lib.php', 'bmp' => $vendorDir . '/mpdf/mpdf/classes/bmp.php', 'calendarComponent' => $baseDir . '/main/inc/lib/icalcreator/iCalcreator.class.php', 'ch_comment' => $baseDir . '/main/survey/survey.lib.php', diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index 46dd9c07af..1e54488aeb 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -12,6 +12,7 @@ return array( 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), 'Symfony\\Component\\Validator\\' => array($vendorDir . '/symfony/validator'), 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), + 'Symfony\\Component\\Templating\\' => array($vendorDir . '/symfony/templating'), 'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'), 'Symfony\\Component\\Security\\' => array($vendorDir . '/symfony/security'), 'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'), @@ -34,11 +35,14 @@ return array( 'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'), 'Symfony\\Component\\BrowserKit\\' => array($vendorDir . '/symfony/browser-kit'), 'Symfony\\Bundle\\WebProfilerBundle\\' => array($vendorDir . '/symfony/web-profiler-bundle'), + 'Symfony\\Bundle\\FrameworkBundle\\' => array($vendorDir . '/symfony/framework-bundle'), 'Symfony\\Bridge\\Twig\\' => array($vendorDir . '/symfony/twig-bridge'), + 'Symfony\\Bridge\\Monolog\\' => array($vendorDir . '/symfony/monolog-bridge'), 'Symfony\\Bridge\\Doctrine\\' => array($vendorDir . '/symfony/doctrine-bridge'), 'Silex\\Provider\\' => array($vendorDir . '/silex/web-profiler'), 'SilexAssetic' => array($vendorDir . '/mheap/silex-assetic/src'), 'Silex' => array($vendorDir . '/silex/silex/src'), + 'Sensio\\Bundle\\FrameworkExtraBundle' => array($vendorDir . '/sensio/framework-extra-bundle'), 'Psr\\Log\\' => array($vendorDir . '/psr/log'), 'Pimple' => array($vendorDir . '/pimple/pimple/lib'), 'Pagerfanta\\' => array($vendorDir . '/pagerfanta/pagerfanta/src'), diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 5d17ba5f73..fefcb71521 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php generated by Composer -class ComposerAutoloaderInit6d8cfb51f68fe5f00cff93e0da1ac4a3 +class ComposerAutoloaderInit8811d572e3015a10a8864726603bac3a { private static $loader; @@ -19,9 +19,9 @@ class ComposerAutoloaderInit6d8cfb51f68fe5f00cff93e0da1ac4a3 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit6d8cfb51f68fe5f00cff93e0da1ac4a3', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit8811d572e3015a10a8864726603bac3a', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit6d8cfb51f68fe5f00cff93e0da1ac4a3', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit8811d572e3015a10a8864726603bac3a', 'loadClassLoader')); $vendorDir = dirname(__DIR__); $baseDir = dirname($vendorDir); diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 6e9bd6a98d..69757e2d60 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -3499,5 +3499,226 @@ ], "description": "Symfony Locale Component", "homepage": "http://symfony.com" + }, + { + "name": "symfony/templating", + "version": "v2.3.1", + "version_normalized": "2.3.1.0", + "target-dir": "Symfony/Component/Templating", + "source": { + "type": "git", + "url": "https://github.com/symfony/Templating.git", + "reference": "v2.3.1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Templating/zipball/v2.3.1", + "reference": "v2.3.1", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2013-04-17 05:31:37", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Templating\\": "" + } + }, + "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 Templating Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/framework-bundle", + "version": "v2.3.1", + "version_normalized": "2.3.1.0", + "target-dir": "Symfony/Bundle/FrameworkBundle", + "source": { + "type": "git", + "url": "https://github.com/symfony/FrameworkBundle.git", + "reference": "v2.3.1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/FrameworkBundle/zipball/v2.3.1", + "reference": "v2.3.1", + "shasum": "" + }, + "require": { + "doctrine/common": ">=2.2,<3.0", + "php": ">=5.3.3", + "symfony/config": ">=2.2,<3.0", + "symfony/dependency-injection": ">=2.2,<3.0", + "symfony/event-dispatcher": ">=2.1,<3.0", + "symfony/filesystem": ">=2.3,<3.0", + "symfony/http-kernel": ">=2.3,<3.0", + "symfony/routing": ">=2.2,<3.0", + "symfony/stopwatch": ">=2.3,<3.0", + "symfony/templating": ">=2.1,<3.0", + "symfony/translation": ">=2.3,<3.0" + }, + "require-dev": { + "symfony/class-loader": ">=2.1,<3.0", + "symfony/finder": ">=2.0,<3.0", + "symfony/form": ">=2.3,<3.0", + "symfony/security": ">=2.3,<3.0", + "symfony/validator": ">=2.1,<3.0" + }, + "suggest": { + "symfony/console": "", + "symfony/finder": "", + "symfony/form": "", + "symfony/validator": "" + }, + "time": "2013-06-07 22:05:01", + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + } + }, + "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 FrameworkBundle", + "homepage": "http://symfony.com" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "dev-master", + "version_normalized": "9999999-dev", + "target-dir": "Sensio/Bundle/FrameworkExtraBundle", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "v2.3.1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/v2.3.1", + "reference": "v2.3.1", + "shasum": "" + }, + "require": { + "doctrine/common": ">=2.2,<3.0", + "symfony/framework-bundle": ">=2.2,<3.0" + }, + "time": "2013-06-02 16:13:20", + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "installation-source": "source", + "autoload": { + "psr-0": { + "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" + ] + }, + { + "name": "symfony/monolog-bridge", + "version": "v2.3.1", + "version_normalized": "2.3.1.0", + "target-dir": "Symfony/Bridge/Monolog", + "source": { + "type": "git", + "url": "https://github.com/symfony/MonologBridge.git", + "reference": "v2.3.1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/MonologBridge/zipball/v2.3.1", + "reference": "v2.3.1", + "shasum": "" + }, + "require": { + "monolog/monolog": ">=1.3,<2.0", + "php": ">=5.3.3", + "symfony/http-kernel": ">=2.2,<3.0" + }, + "time": "2013-05-24 13:05:33", + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Bridge\\Monolog\\": "" + } + }, + "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 Monolog Bridge", + "homepage": "http://symfony.com" } ]