فهرست منبع

Adding Flint lib in order to cache routes.

Julio Montoya 11 سال پیش
والد
کامیت
91b46e26ed

+ 3 - 2
composer.json

@@ -39,7 +39,7 @@
     ],
     "require": {
         "php": ">=5.3.2",
-        "silex/silex": "~1.0",
+        "silex/silex": "1.*",
         "symfony/console"  : "~2.3",
         "symfony/twig-bridge": "~2.3",
         "symfony/doctrine-bridge": "2.3.*@dev",
@@ -76,7 +76,8 @@
         "bt51/gaufrette-serviceprovider": "dev-master",
         "neutron/silex-filesystem-provider": "dev-master",
         "jbroadway/urlify": "dev-master",
-        "sensio/framework-extra-bundle": "2.3.*@dev"
+        "sensio/framework-extra-bundle": "2.3.*@dev",
+        "flint/flint" : "~1.4"
     },
     "require-dev": {
         "symfony/browser-kit": "2.3.*@dev",

+ 338 - 286
composer.lock

@@ -3,7 +3,7 @@
         "This file locks the dependencies of your project to a known state",
         "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
     ],
-    "hash": "94cb7c5f7d4efa532d6bd2b1a4ba0cd6",
+    "hash": "4a9f7f6b12b57b152e87183d9cf86a50",
     "packages": [
         {
             "name": "bt51/gaufrette-serviceprovider",
@@ -447,6 +447,57 @@
             ],
             "time": "2013-02-18 00:04:08"
         },
+        {
+            "name": "flint/flint",
+            "version": "1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/henrikbjorn/Flint.git",
+                "reference": "1.4.1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/henrikbjorn/Flint/zipball/1.4.1",
+                "reference": "1.4.1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "silex/silex": "~1.0",
+                "symfony/config": "~2.2",
+                "twig/twig": "~1.10"
+            },
+            "replace": {
+                "henrikbjorn/flint": "self.version"
+            },
+            "require-dev": {
+                "symfony/console": "~2.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Flint": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Henrik Bjornskov",
+                    "email": "henrik@bjrnskov.dk",
+                    "homepage": "http://henrik.bjrnskov.dk"
+                }
+            ],
+            "description": "Enhanced Silex",
+            "time": "2013-07-04 09:26:29"
+        },
         {
             "name": "franmomu/silex-pagerfanta-provider",
             "version": "2.3.x-dev",
@@ -1391,18 +1442,65 @@
             "description": "A fork of the popular pChart library.",
             "time": "2013-03-18 08:23:38"
         },
+        {
+            "name": "sensio/framework-extra-bundle",
+            "version": "dev-master",
+            "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"
+            },
+            "type": "symfony-bundle",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3.x-dev"
+                }
+            },
+            "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"
+            ],
+            "time": "2013-06-02 16:13:20"
+        },
         {
             "name": "silex/silex",
-            "version": "v1.0.0",
+            "version": "v1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/fabpot/Silex.git",
-                "reference": "v1.0.0"
+                "reference": "v1.0.1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/fabpot/Silex/zipball/v1.0.0",
-                "reference": "v1.0.0",
+                "url": "https://api.github.com/repos/fabpot/Silex/zipball/v1.0.1",
+                "reference": "v1.0.1",
                 "shasum": ""
             },
             "require": {
@@ -1415,7 +1513,7 @@
             },
             "require-dev": {
                 "doctrine/dbal": ">=2.2.0,<2.4.0-dev",
-                "monolog/monolog": ">=1.4,<2.0,>=1.4.1",
+                "monolog/monolog": "~1.4,>=1.4.1",
                 "swiftmailer/swiftmailer": "5.*",
                 "symfony/browser-kit": ">=2.1,<2.4-dev",
                 "symfony/config": ">=2.1,<2.4-dev",
@@ -1471,7 +1569,7 @@
             "keywords": [
                 "microframework"
             ],
-            "time": "2013-05-03 16:49:57"
+            "time": "2013-07-04 06:25:40"
         },
         {
             "name": "swiftmailer/swiftmailer",
@@ -1625,25 +1723,25 @@
         },
         {
             "name": "symfony/debug",
-            "version": "v2.3.1",
+            "version": "v2.3.3",
             "target-dir": "Symfony/Component/Debug",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Debug.git",
-                "reference": "v2.3.1"
+                "reference": "v2.3.3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Debug/zipball/v2.3.1",
-                "reference": "v2.3.1",
+                "url": "https://api.github.com/repos/symfony/Debug/zipball/v2.3.3",
+                "reference": "v2.3.3",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
             "require-dev": {
-                "symfony/http-foundation": ">=2.1,<3.0",
-                "symfony/http-kernel": ">=2.1,<3.0"
+                "symfony/http-foundation": "~2.1",
+                "symfony/http-kernel": "~2.1"
             },
             "suggest": {
                 "symfony/class-loader": "",
@@ -1677,7 +1775,7 @@
             ],
             "description": "Symfony Debug Component",
             "homepage": "http://symfony.com",
-            "time": "2013-06-02 11:58:44"
+            "time": "2013-07-01 12:24:43"
         },
         {
             "name": "symfony/dependency-injection",
@@ -1803,24 +1901,24 @@
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.3.1",
+            "version": "v2.3.3",
             "target-dir": "Symfony/Component/EventDispatcher",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/EventDispatcher.git",
-                "reference": "v2.3.1"
+                "reference": "v2.3.3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.3.1",
-                "reference": "v2.3.1",
+                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.3.3",
+                "reference": "v2.3.3",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
             "require-dev": {
-                "symfony/dependency-injection": ">=2.0,<3.0"
+                "symfony/dependency-injection": "~2.0"
             },
             "suggest": {
                 "symfony/dependency-injection": "",
@@ -1853,7 +1951,7 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "http://symfony.com",
-            "time": "2013-05-13 14:36:40"
+            "time": "2013-07-21 12:12:18"
         },
         {
             "name": "symfony/filesystem",
@@ -1962,20 +2060,90 @@
             "time": "2013-06-02 12:05:51"
         },
         {
-            "name": "symfony/http-foundation",
+            "name": "symfony/framework-bundle",
             "version": "v2.3.1",
-            "target-dir": "Symfony/Component/HttpFoundation",
+            "target-dir": "Symfony/Bundle/FrameworkBundle",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/HttpFoundation.git",
+                "url": "https://github.com/symfony/FrameworkBundle.git",
                 "reference": "v2.3.1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/v2.3.1",
+                "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": ""
+            },
+            "type": "symfony-bundle",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev"
+                }
+            },
+            "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",
+            "time": "2013-06-07 22:05:01"
+        },
+        {
+            "name": "symfony/http-foundation",
+            "version": "v2.3.3",
+            "target-dir": "Symfony/Component/HttpFoundation",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/HttpFoundation.git",
+                "reference": "v2.3.3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/v2.3.3",
+                "reference": "v2.3.3",
+                "shasum": ""
+            },
             "require": {
                 "php": ">=5.3.3"
             },
@@ -2009,40 +2177,41 @@
             ],
             "description": "Symfony HttpFoundation Component",
             "homepage": "http://symfony.com",
-            "time": "2013-05-10 06:00:03"
+            "time": "2013-08-07 14:02:06"
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v2.3.1",
+            "version": "v2.3.3",
             "target-dir": "Symfony/Component/HttpKernel",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/HttpKernel.git",
-                "reference": "v2.3.1"
+                "reference": "v2.3.3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/v2.3.1",
-                "reference": "v2.3.1",
+                "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/v2.3.3",
+                "reference": "v2.3.3",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3",
-                "psr/log": ">=1.0,<2.0",
-                "symfony/debug": ">=2.3,<3.0",
-                "symfony/event-dispatcher": ">=2.1,<3.0",
-                "symfony/http-foundation": ">=2.2,<3.0"
+                "psr/log": "~1.0",
+                "symfony/debug": "~2.3",
+                "symfony/event-dispatcher": "~2.1",
+                "symfony/http-foundation": "~2.2"
             },
             "require-dev": {
-                "symfony/browser-kit": "2.2.*",
-                "symfony/class-loader": ">=2.1,<3.0",
-                "symfony/config": ">=2.0,<3.0",
-                "symfony/console": "2.2.*",
-                "symfony/dependency-injection": ">=2.0,<3.0",
-                "symfony/finder": ">=2.0,<3.0",
-                "symfony/process": ">=2.0,<3.0",
-                "symfony/routing": ">=2.2,<3.0",
-                "symfony/stopwatch": ">=2.2,<3.0"
+                "symfony/browser-kit": "~2.2",
+                "symfony/class-loader": "~2.1",
+                "symfony/config": "~2.0",
+                "symfony/console": "~2.2",
+                "symfony/dependency-injection": "~2.0",
+                "symfony/finder": "~2.0",
+                "symfony/process": "~2.0",
+                "symfony/routing": "~2.2",
+                "symfony/stopwatch": "~2.2",
+                "symfony/templating": "~2.2"
             },
             "suggest": {
                 "symfony/browser-kit": "",
@@ -2079,7 +2248,7 @@
             ],
             "description": "Symfony HttpKernel Component",
             "homepage": "http://symfony.com",
-            "time": "2013-06-11 11:46:38"
+            "time": "2013-08-07 17:11:16"
         },
         {
             "name": "symfony/icu",
@@ -2305,17 +2474,17 @@
         },
         {
             "name": "symfony/options-resolver",
-            "version": "v2.3.1",
+            "version": "v2.3.3",
             "target-dir": "Symfony/Component/OptionsResolver",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/OptionsResolver.git",
-                "reference": "v2.3.1"
+                "reference": "v2.3.3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/OptionsResolver/zipball/v2.3.1",
-                "reference": "v2.3.1",
+                "url": "https://api.github.com/repos/symfony/OptionsResolver/zipball/v2.3.3",
+                "reference": "v2.3.3",
                 "shasum": ""
             },
             "require": {
@@ -2353,7 +2522,7 @@
                 "configuration",
                 "options"
             ],
-            "time": "2013-04-11 06:50:46"
+            "time": "2013-07-21 12:12:18"
         },
         {
             "name": "symfony/property-access",
@@ -2415,27 +2584,27 @@
         },
         {
             "name": "symfony/routing",
-            "version": "v2.3.1",
+            "version": "v2.3.3",
             "target-dir": "Symfony/Component/Routing",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Routing.git",
-                "reference": "v2.3.1"
+                "reference": "v2.3.3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Routing/zipball/v2.3.1",
-                "reference": "v2.3.1",
+                "url": "https://api.github.com/repos/symfony/Routing/zipball/v2.3.3",
+                "reference": "v2.3.3",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
             "require-dev": {
-                "doctrine/common": ">=2.2,<3.0",
-                "psr/log": ">=1.0,<2.0",
-                "symfony/config": ">=2.2,<3.0",
-                "symfony/yaml": ">=2.0,<3.0"
+                "doctrine/common": "~2.2",
+                "psr/log": "~1.0",
+                "symfony/config": "~2.2",
+                "symfony/yaml": "~2.0"
             },
             "suggest": {
                 "doctrine/common": "",
@@ -2469,7 +2638,7 @@
             ],
             "description": "Symfony Routing Component",
             "homepage": "http://symfony.com",
-            "time": "2013-05-20 08:57:26"
+            "time": "2013-08-02 20:53:38"
         },
         {
             "name": "symfony/security",
@@ -2539,6 +2708,100 @@
             "homepage": "http://symfony.com",
             "time": "2013-06-02 22:50:02"
         },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v2.3.3",
+            "target-dir": "Symfony/Component/Stopwatch",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/Stopwatch.git",
+                "reference": "v2.3.3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/v2.3.3",
+                "reference": "v2.3.3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\Stopwatch\\": ""
+                }
+            },
+            "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 Stopwatch Component",
+            "homepage": "http://symfony.com",
+            "time": "2013-07-21 12:12:18"
+        },
+        {
+            "name": "symfony/templating",
+            "version": "v2.3.1",
+            "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"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev"
+                }
+            },
+            "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",
+            "time": "2013-04-17 05:31:37"
+        },
         {
             "name": "symfony/translation",
             "version": "v2.3.1",
@@ -3086,53 +3349,6 @@
             ],
             "time": "2013-03-15 18:47:32"
         },
-        {
-            "name": "sensio/framework-extra-bundle",
-            "version": "dev-master",
-            "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"
-            },
-            "type": "symfony-bundle",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3.x-dev"
-                }
-            },
-            "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"
-            ],
-            "time": "2013-06-02 16:13:20"
-        },
         {
             "name": "silex/web-profiler",
             "version": "dev-master",
@@ -3235,24 +3451,24 @@
         },
         {
             "name": "symfony/dom-crawler",
-            "version": "v2.3.1",
+            "version": "v2.3.3",
             "target-dir": "Symfony/Component/DomCrawler",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/DomCrawler.git",
-                "reference": "v2.3.1"
+                "reference": "v2.3.3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/v2.3.1",
-                "reference": "v2.3.1",
+                "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/v2.3.3",
+                "reference": "v2.3.3",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
             "require-dev": {
-                "symfony/css-selector": ">=2.0,<3.0"
+                "symfony/css-selector": "~2.0"
             },
             "suggest": {
                 "symfony/css-selector": ""
@@ -3284,21 +3500,21 @@
             ],
             "description": "Symfony DomCrawler Component",
             "homepage": "http://symfony.com",
-            "time": "2013-06-11 07:15:14"
+            "time": "2013-07-21 12:12:18"
         },
         {
             "name": "symfony/finder",
-            "version": "v2.2.3",
+            "version": "v2.2.5",
             "target-dir": "Symfony/Component/Finder",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Finder.git",
-                "reference": "v2.2.3"
+                "reference": "v2.2.5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Finder/zipball/v2.2.3",
-                "reference": "v2.2.3",
+                "url": "https://api.github.com/repos/symfony/Finder/zipball/v2.2.5",
+                "reference": "v2.2.5",
                 "shasum": ""
             },
             "require": {
@@ -3331,91 +3547,21 @@
             ],
             "description": "Symfony Finder Component",
             "homepage": "http://symfony.com",
-            "time": "2013-06-10 18:35:46"
-        },
-        {
-            "name": "symfony/framework-bundle",
-            "version": "v2.3.1",
-            "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": ""
-            },
-            "type": "symfony-bundle",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3-dev"
-                }
-            },
-            "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",
-            "time": "2013-06-07 22:05:01"
+            "time": "2013-07-01 12:15:46"
         },
         {
             "name": "symfony/process",
-            "version": "v2.3.1",
+            "version": "v2.3.3",
             "target-dir": "Symfony/Component/Process",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Process.git",
-                "reference": "v2.3.1"
+                "reference": "v2.3.3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Process/zipball/v2.3.1",
-                "reference": "v2.3.1",
+                "url": "https://api.github.com/repos/symfony/Process/zipball/v2.3.3",
+                "reference": "v2.3.3",
                 "shasum": ""
             },
             "require": {
@@ -3448,101 +3594,7 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "http://symfony.com",
-            "time": "2013-05-06 20:03:44"
-        },
-        {
-            "name": "symfony/stopwatch",
-            "version": "v2.3.1",
-            "target-dir": "Symfony/Component/Stopwatch",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/Stopwatch.git",
-                "reference": "v2.3.1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/v2.3.1",
-                "reference": "v2.3.1",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.3.3"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3-dev"
-                }
-            },
-            "autoload": {
-                "psr-0": {
-                    "Symfony\\Component\\Stopwatch\\": ""
-                }
-            },
-            "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 Stopwatch Component",
-            "homepage": "http://symfony.com",
-            "time": "2013-04-17 07:17:10"
-        },
-        {
-            "name": "symfony/templating",
-            "version": "v2.3.1",
-            "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"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.3-dev"
-                }
-            },
-            "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",
-            "time": "2013-04-17 05:31:37"
+            "time": "2013-08-02 21:51:01"
         },
         {
             "name": "symfony/web-profiler-bundle",
@@ -3625,13 +3677,13 @@
         "bt51/gaufrette-serviceprovider": 20,
         "neutron/silex-filesystem-provider": 20,
         "jbroadway/urlify": 20,
+        "sensio/framework-extra-bundle": 20,
         "symfony/browser-kit": 20,
         "silex/web-profiler": 20,
         "natxet/cssmin": 20,
         "leafo/lessphp": 20,
         "mheap/silex-assetic": 20,
-        "filp/whoops": 20,
-        "sensio/framework-extra-bundle": 20
+        "filp/whoops": 20
     },
     "platform": {
         "php": ">=5.3.2"

+ 3 - 21
main/inc/routes.php

@@ -444,19 +444,10 @@ $app->match('/main/{file}', 'legacy.controller:classicAction', 'GET|POST')
     ->assert('file', '.+')
     ->assert('type', '.+');
 
-/** Logout already implemented by the the security service provider */
-
-/* $app->get('/logout', 'index.controller:logoutAction')
-    ->bind('logout')
-    ->after($cleanCourseSession);*/
-
 /** Login form */
 $app->match('/login', 'index.controller:loginAction', 'GET|POST')
     ->bind('login');
 
-/*$app->match('/admin/login-check', 'index.controller:checkLoginAction', 'GET|POST')
-->bind('login_check');*/
-
 /** Course home instead of courses/MATHS the new URL is web/courses/MATHS  */
 $app->match('/courses/{cidReq}/{id_session}/', 'course_home.controller:indexAction', 'GET|POST')
     ->assert('id_session', '\d+')
@@ -537,7 +528,6 @@ $app->get('/data/upload/groups/{groupId}/{file}', 'index.controller:getGroupFile
     ->assert('type', '.+');
 
 /** Admin */
-
 $app->get('/admin/dashboard', 'index.controller:dashboardAction')
     ->assert('type', '.+')
     ->bind('admin_dashboard');
@@ -659,24 +649,16 @@ $app->match('/admin/administrator/', 'admin.controller:indexAction', 'GET')
     ->assert('type', '.+')
     ->bind('admin_administrator');
 
-
-
 $app->match('/ajax', 'model_ajax.controller:indexAction', 'GET')
     ->assert('type', '.+')
     ->bind('model_ajax');
 
-
-// Roles
-// @todo improve route creation. Use mount() to write less
-
 if ($alreadyInstalled) {
-    // Takes a some time to load @todo improve this calls
     $app->mount('/admin/administrator/roles', new ChamiloLMS\Provider\ReflectionControllerProvider('role.controller'));
     $app->mount('/admin/administrator/question_scores', new ChamiloLMS\Provider\ReflectionControllerProvider('question_score.controller'));
     $app->mount('/admin/administrator/question_score_names', new ChamiloLMS\Provider\ReflectionControllerProvider('question_score_name.controller'));
 
     // Ministerio routes:
-
     $app->mount('/admin/administrator/branches', new ChamiloLMS\Provider\ReflectionControllerProvider('branch.controller'));
     $app->mount('/admin/administrator/juries', new ChamiloLMS\Provider\ReflectionControllerProvider('jury.controller'));
 
@@ -684,9 +666,9 @@ if ($alreadyInstalled) {
     $app->mount('/admin/jury_president', new ChamiloLMS\Provider\ReflectionControllerProvider('jury_president.controller'));
     $app->mount('/admin/jury_member', new ChamiloLMS\Provider\ReflectionControllerProvider('jury_member.controller'));
 
-    $app->mount('/tool/curriculum/category', new ChamiloLMS\Provider\ReflectionControllerProvider('curriculum_category.controller'));
-    $app->mount('/tool/curriculum/item', new ChamiloLMS\Provider\ReflectionControllerProvider('curriculum_item.controller'));
-    $app->mount('/tool/curriculum/user', new ChamiloLMS\Provider\ReflectionControllerProvider('curriculum_user.controller'));
+    $app->mount('/courses/{courseCode}/curriculum/category', new ChamiloLMS\Provider\ReflectionControllerProvider('curriculum_category.controller'));
+    $app->mount('/courses/{courseCode}/curriculum/item', new ChamiloLMS\Provider\ReflectionControllerProvider('curriculum_item.controller'));
+    $app->mount('/courses/{courseCode}/curriculum/user', new ChamiloLMS\Provider\ReflectionControllerProvider('curriculum_user.controller'));
 
 }
 

+ 34 - 14
main/inc/services.php

@@ -7,6 +7,19 @@
  * @package chamilo.services
  */
 
+
+// Flint
+$app->register(new Flint\Provider\ConfigServiceProvider());
+$app['root_dir'] = $app['root_sys'];
+
+$app->register(new Flint\Provider\RoutingServiceProvider(), array(
+    'routing.resource' => $app['sys_config_path'].'routing.yml',
+    'routing.options' => array(
+        'cache_dir' => $app['debug'] == true ? null : $app['sys_temp_path']
+        //'cache_dir' => $app['sys_temp_path']
+    ),
+));
+
 // Monolog.
 use Doctrine\Common\Persistence\AbstractManagerRegistry;
 use FranMoreno\Silex\Provider\PagerfantaServiceProvider;
@@ -35,6 +48,7 @@ if (is_writable($app['sys_temp_path'])) {
     }
 }
 
+
 //Setting HttpCacheService provider in order to use do: $app['http_cache']->run();
 /*
 $app->register(new Silex\Provider\HttpCacheServiceProvider(), array(
@@ -43,7 +57,15 @@ $app->register(new Silex\Provider\HttpCacheServiceProvider(), array(
 
 // http://symfony.com/doc/master/reference/configuration/security.html
 
-$app->register(new Silex\Provider\SecurityServiceProvider(), array(
+class SecurityServiceProvider extends \Silex\Provider\SecurityServiceProvider
+{
+    public function addFakeRoute($method, $pattern, $name)
+    {
+        // Don't do anything otherwise the closures will be dumped and that leads to fatal errors.
+    }
+}
+
+$app->register(new SecurityServiceProvider, array(
     'security.firewalls' => array(
         'login' => array(
             'pattern' => '^/login$',
@@ -67,17 +89,12 @@ $app->register(new Silex\Provider\SecurityServiceProvider(), array(
                 return $app['orm.em']->getRepository('Entity\User');
             }),
             'anonymous' => true
-        ),/*
-        'classic' => array(
-            'pattern' => '^/.*$'
-        )*/
+        )
     )
 ));
 
 
-
 // Registering Password encoder.
-
 $app['security.encoder.digest'] = $app->share(function($app) {
     // use the sha1 algorithm
     // don't base64 encode the password
@@ -85,6 +102,7 @@ $app['security.encoder.digest'] = $app->share(function($app) {
     return new MessageDigestPasswordEncoder($app['configuration']['password_encryption'], false, 1);
 });
 
+
 // What to do when login success?
 $app['security.authentication.success_handler.admin'] = $app->share(function($app) {
     return new ChamiloLMS\Component\Auth\LoginSuccessHandler($app['url_generator'], $app['security']);
@@ -97,7 +115,14 @@ $app['security.authentication.logout_handler.admin'] = $app->share(function($app
 
 // Role hierarchy
 $app['security.role_hierarchy'] = array(
-    'ROLE_ADMIN' => array('ROLE_QUESTION_MANAGER', 'ROLE_SESSION_MANAGER', 'ROLE_TEACHER', 'ROLE_ALLOWED_TO_SWITCH', 'ROLE_DIRECTOR'),
+    'ROLE_ADMIN' => array(
+        'ROLE_QUESTION_MANAGER',
+        'ROLE_SESSION_MANAGER',
+        'ROLE_TEACHER',
+        'ROLE_ALLOWED_TO_SWITCH',
+        'ROLE_DIRECTOR',
+        'ROLE_JURY_PRESIDENT'
+    ),
     'ROLE_RRHH' => array('ROLE_TEACHER'),
     'ROLE_TEACHER' => array('ROLE_STUDENT'),
     'ROLE_QUESTION_MANAGER' => array('ROLE_STUDENT', 'ROLE_QUESTION_MANAGER'),
@@ -158,7 +183,7 @@ $app->register(new Silex\Provider\TranslationServiceProvider(), array(
 $app->register(new Silex\Provider\FormServiceProvider());
 
 // URL generator provider
-$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
+//$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
 
 // Needed to use the "entity" option in symfony forms
 
@@ -450,7 +475,6 @@ if ($app['assetic.enabled']) {
     );
 }
 
-
 // Gaufrette service provider (to manage files/dirs) (not used yet)
 /*
 use Bt51\Silex\Provider\GaufretteServiceProvider\GaufretteServiceProvider;
@@ -685,7 +709,3 @@ $app['curriculum_user.controller'] = $app->share(
         return new ChamiloLMS\Controller\Tool\Curriculum\CurriculumUserController($app);
     }
 );
-
-
-
-

+ 14 - 23
src/ChamiloLMS/Controller/BaseController.php

@@ -12,6 +12,7 @@ use Symfony\Component\HttpFoundation\Request;
 use Doctrine\ORM\Query;
 use Doctrine\ORM\NoResultException;
 use Silex\Application;
+use Flint\Controller\Controller as FlintController;
 
 use Symfony\Component\Routing\Annotation\Route;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
@@ -21,9 +22,10 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  *
  * @abstract
  */
-abstract class BaseController
+abstract class BaseController extends FlintController
 {
     protected $app;
+    protected $pimple;
 
     /**
      * @param Application $app
@@ -31,6 +33,8 @@ abstract class BaseController
     public function __construct(Application $app)
     {
         $this->app = $app;
+        // In order to use the Flint Controller
+        $this->pimple = $app;
     }
 
     /**
@@ -81,28 +85,14 @@ abstract class BaseController
         return $this->get('request');
     }
 
-    protected function redirect($redirect)
-    {
-        return $this->app->redirect($redirect);
-    }
-
     protected function createNotFoundException($message = 'Not Found', \Exception $previous = null)
     {
         return $this->app->abort(404, $message);
     }
 
-    /**
-     * @param string $item
-     * @return mixed
-     */
-    protected function get($item)
-    {
-        return $this->app[$item];
-    }
-
     protected function getManager()
     {
-        return $this->app['orm.em'];
+        return $this->get('orm.em');
     }
 
     /**
@@ -114,14 +104,15 @@ abstract class BaseController
     protected function createUrl($label, $params = array())
     {
         $links = $this->generateLinks();
+        $courseCode = $this->getRequest()->get('courseCode');
+        $params['courseCode'] = $courseCode;
         if (isset($links) && is_array($links) && isset($links[$label])) {
-            $url = $this->get('url_generator')->generate($links[$label], $params);
+            $url = $this->generateUrl($links[$label], $params);
             return $url;
         }
-        return $url = $this->get('url_generator')->generate($links['list_link']);
+        return $url = $this->generateUrl($links['list_link']);
     }
 
-
     // CRUD default actions
 
     /**
@@ -154,6 +145,7 @@ abstract class BaseController
                 $item = $form->getData();
                 $this->createAction($item);
                 $this->get('session')->getFlashBag()->add('success', "Added");
+
                 $url = $this->createUrl('list_link');
                 return $this->redirect($url);
             }
@@ -168,7 +160,7 @@ abstract class BaseController
 
     /**
      *
-     * @Route("/{id}", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})
+     * @Route("/{id}", requirements={"id" = "\d+"})
      * @Method({"GET"})
      */
     public function readAction($id)
@@ -180,7 +172,7 @@ abstract class BaseController
 
     /**
      *
-     * @Route("/{id}/edit", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})
+     * @Route("/{id}/edit", requirements={"id" = "\d+"}})
      * @Method({"GET"})
      */
     public function editAction($id)
@@ -217,7 +209,7 @@ abstract class BaseController
 
     /**
      *
-     * @Route("/{id/delete}", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})
+     * @Route("/{id}/delete", requirements={"id" = "\d+"})
      * @Method({"GET"})
      */
     public function deleteAction($id)
@@ -231,7 +223,6 @@ abstract class BaseController
         }
     }
 
-
     /**
      * Base "read" action.
      *

+ 2 - 10
src/ChamiloLMS/Controller/CommonController.php

@@ -12,12 +12,6 @@ use ChamiloLMS\Controller\BaseController;
  */
 class CommonController extends BaseController
 {
-    public $languageFiles = array();
-
-    public function __construct(Application $app)
-    {
-        parent::__construct($app);
-    }
 
     /**
      * {@inheritdoc}
@@ -43,8 +37,8 @@ class CommonController extends BaseController
     /**
      * {@inheritdoc}
      */
-    protected function getControllerAlias() {
-
+    protected function getControllerAlias()
+    {
     }
 
     /**
@@ -74,7 +68,6 @@ class CommonController extends BaseController
         );
     }
 
-
     /**
      * @param Application $app
      * @param array $breadcrumbs
@@ -129,5 +122,4 @@ class CommonController extends BaseController
         );
         $app['breadcrumbs'] = $bread;
     }
-
 }

+ 3 - 3
src/ChamiloLMS/Controller/IndexController.php

@@ -198,7 +198,6 @@ class IndexController extends CommonController
         $app['template']->assign('error', $app['security.last_error']($request));
         $response = $app['template']->render_template('auth/login.tpl');
         return new Response($response, 200, array('Cache-Control' => 's-maxage=3600, public'));
-        //return new Response($response, 200, array());
     }
 
     /**
@@ -287,8 +286,9 @@ class IndexController extends CommonController
           ->getForm();
           return $app['template']->assign('form', $form->createView());
          */
-
-        $form = new \FormValidator('formLogin', 'POST', $app['url_generator']->generate('admin_login_check'), null, array('class' => 'form-vertical'));
+        $url = $app['url_generator']->generate('admin_login_check');
+        //var_dump($app['router']->generate('admin_login_check'));
+        $form = new \FormValidator('formLogin', 'POST', $url , null, array('class' => 'form-vertical'));
         $form->addElement(
             'text',
             'username',

+ 18 - 18
src/ChamiloLMS/Controller/Tool/Curriculum/CurriculumCategoryController.php

@@ -14,7 +14,6 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
 
 /**
  * Class CurriculumController
- * @todo @route and @method function don't work yet
  * @package ChamiloLMS\Controller
  * @author Julio Montoya <gugli100@gmail.com>
  */
@@ -25,7 +24,7 @@ class CurriculumCategoryController extends CommonController
      * @Route("/")
      * @Method({"GET"})
      */
-    public function indexAction()
+    public function indexAction($courseCode)
     {
         $options = array(
             'decorate' => true,
@@ -33,24 +32,25 @@ class CurriculumCategoryController extends CommonController
             'rootClose' => '</ul>',
             'childOpen' => '<li>',
             'childClose' => '</li>',
-            'nodeDecorator' => function($row) {
+            'nodeDecorator' => function ($row) use ($courseCode) {
                 $addChildren = null;
                 $items = null;
                 if ($row['lvl'] <= 0) {
-                    $addChildren = '<a class="btn" href="'.$this->createUrl('add_from_parent_link', array('id' => $row['id'])).'">Add children</a>';
+
+                    $addChildren = '<a class="btn" href="'.$this->createUrl('add_from_parent_link', array('courseCode' => $courseCode, 'id' => $row['id'])).'">Add children</a>';
                 } else {
-                    $addChildren = '<a class="btn" href="'.$this->createUrl('add_from_category', array('id' => $row['id'])).'">Add items</a>';
+                    $addChildren = '<a class="btn" href="'.$this->createUrl('add_from_category', array('courseCode' => $courseCode, 'id' => $row['id'])).'">Add items</a>';
                     //$items = $row['items'];
                     $items = '<ul>';
                     foreach ($row['items'] as $item) {
-                        $url = ' <a class="btn" href="'.$this->createUrl('edit_item', array('id' => $item['id'])).'">Edit</a>';
+                        $url = ' <a class="btn" href="'.$this->createUrl('edit_item', array('courseCode' => $courseCode, 'id' => $item['id'])).'">Edit</a>';
                         $items.= '<li>'.$item['title']." (item) ".$url.'</li>';
                     }
                     $items .= '</ul>';
                 }
-                $readLink = '<a href="'.$this->createUrl('read_link', array('id' => $row['id'])).'">'.$row['title'].'</a>';
-                $editLink = '<a class="btn" href="'.$this->createUrl('update_link', array('id' => $row['id'])).'">Edit</a>';
-                $deleteLink = '<a class="btn" href="'.$this->createUrl('delete_link', array('id' => $row['id'])).'"/>Delete</a>';
+                $readLink = '<a href="'.$this->createUrl('read_link', array('courseCode' => $courseCode, 'id' => $row['id'])).'">'.$row['title'].'</a>';
+                $editLink = '<a class="btn" href="'.$this->createUrl('update_link', array('courseCode' => $courseCode, 'id' => $row['id'])).'">Edit</a>';
+                $deleteLink = '<a class="btn" href="'.$this->createUrl('delete_link', array('courseCode' => $courseCode, 'id' => $row['id'])).'"/>Delete</a>';
 
                 return $readLink.' '.$addChildren.' '.$editLink.' '.$deleteLink.$items;
             }
@@ -71,19 +71,20 @@ class CurriculumCategoryController extends CommonController
             ->getQuery();
 
         $htmlTree = $repo->buildTree($query->getArrayResult(), $options);
+
         $this->get('template')->assign('tree', $htmlTree);
         $this->get('template')->assign('links', $this->generateLinks());
         $response = $this->get('template')->render_template($this->getTemplatePath().'list.tpl');
-        return new Response($response, 200, array());
 
+        return new Response($response, 200, array());
     }
 
     /**
     *
-    * @Route("/{id}", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})
+    * @Route("/{id}/show", requirements={"id" = "\d+"})
     * @Method({"GET"})
     */
-    public function readAction($id)
+    public function readCategoryAction($courseCode, $id)
     {
         return parent::readAction($id);
     }
@@ -92,7 +93,7 @@ class CurriculumCategoryController extends CommonController
     * @Route("/add")
     * @Method({"GET"})
     */
-    public function addAction()
+    public function addCategoryAction($courseCode)
     {
         return parent::addAction();
     }
@@ -137,20 +138,20 @@ class CurriculumCategoryController extends CommonController
 
     /**
     *
-    * @Route("/{id}/edit", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})
+    * @Route("/{id}/edit", requirements={"id" = "\d+"})
     * @Method({"GET"})
     */
-    public function editAction($id)
+    public function editCategoryAction($courseCode, $id)
     {
         return parent::editAction($id);
     }
 
     /**
     *
-    * @Route("/{id}/delete", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})
+    * @Route("/{id}/delete", requirements={"id" = "\d+"})
     * @Method({"GET"})
     */
-    public function deleteAction($id)
+    public function deleteCategoryAction($courseCode, $id)
     {
         return parent::deleteAction($id);
     }
@@ -167,7 +168,6 @@ class CurriculumCategoryController extends CommonController
         $routes['add_from_category'] = 'curriculum_item.controller:addFromCategoryAction';
         $routes['edit_item'] = 'curriculum_item.controller:editAction';
 
-
         return $routes ;
     }
 

+ 34 - 15
src/ChamiloLMS/Provider/ReflectionControllerProvider.php

@@ -35,10 +35,14 @@ class ReflectionControllerProvider implements ControllerProviderInterface
         /** @var \Silex\ControllerCollection $controllers */
         $controllers = $app['controllers_factory'];
 
+        // Routes are already cached using Flint
+        if ($app['debug'] == false) {
+            return $controllers;
+        }
+
         $reflection = new \ReflectionClass($app[$this->controllerName]);
 
         $annotationReader = new AnnotationReader();
-        //$classAnnotations = $annotationReader->getClassAnnotations($reflection);
         $routeAnnotation = new Route(array());
         $methodAnnotation = new Method(array());
 
@@ -46,37 +50,52 @@ class ReflectionControllerProvider implements ControllerProviderInterface
 
         foreach ($methods as $method) {
             $methodName = $method->getName();
+
             $controllerName = $this->controllerName.':'.$methodName;
 
-            if (in_array($methodName, array('__construct', 'get', 'getManager'))) {
+            // Parse only function with the "Action" suffix
+
+            if (strpos($methodName, 'Action') === false) {
                 continue;
             }
 
-            /** @var Route $routeObject */
-            $routeObject = $annotationReader->getMethodAnnotation($method, $routeAnnotation);
-            $req = $routeObject->getRequirements();
-            //$routeObject->setMethods();
+            // Getting all annotations
+            $routeObjects = $annotationReader->getMethodAnnotations($method);
 
             /** @var Method $routeObject */
             $methodObject = $annotationReader->getMethodAnnotation($method, $methodAnnotation);
 
             $methodsToString = 'GET';
+
             if ($methodObject) {
                 $methodsToString = implode('|', $methodObject->getMethods());
             }
 
-            if ($routeObject) {
-                $match = $controllers->match($routeObject->getPath(), $controllerName, $methodsToString);
-                //var_dump($controllerName);
-                $match->bind($controllerName);
-                // setRequirements
-                if (!empty($req)) {
-                    foreach ($req as $key => $value) {
-                        $match->assert($key, $value);
+            /** @var Route $routeObject */
+            foreach ($routeObjects as $routeObject) {
+
+                if ($routeObject && is_a($routeObject, 'Symfony\Component\Routing\Annotation\Route')) {
+
+                    $match = $controllers->match($routeObject->getPath(), $controllerName, $methodsToString);
+
+                    // setRequirements
+                    if (!empty($req)) {
+                        foreach ($req as $key => $value) {
+                            $match->assert($key, $value);
+                        }
                     }
+                    $defaults = $routeObject->getDefaults();
+                    //var_dump($routeObject);
+                    //var_dump($defaults);
+                    if (!empty($defaults)) {
+                        foreach ($defaults as $key => $value) {
+                            $match->value($key, $value);
+                        }
+                    }
+
+                    $match->bind($controllerName);
                 }
             }
-
         }
         return $controllers;
     }

+ 3 - 0
src/ChamiloLMS/Resources/config/route_example.yml

@@ -0,0 +1,3 @@
+homepage:
+    path:      /homepage
+    defaults:  { _controller: index.controller:indexAction, culture: en }