Commit Graph

6796 Commits

Author SHA1 Message Date
Andrej Hudec
5c060d15e9 Fix for {@inheritdoc} phpDoc tag. 2011-09-28 10:00:17 +03:00
Fabien Potencier
2db24c264f removed time limit for the vendors script (closes #2282) 2011-09-28 08:30:05 +02:00
Igor Wiedler
731b28bb92 [composer] add missing deps for FrameworkBundle 2011-09-27 20:03:59 +02:00
Fabien Potencier
c13b4e2b55 fixed fallback catalogue mechanism in Framework bundle 2011-09-27 17:18:11 +02:00
Igor Wiedler
9c8f100c11 [composer] change ext/intl to the new ext-intl syntax 2011-09-27 12:35:30 +02:00
Fabien Potencier
122a352003 merged branch drak/patch-2 (PR #2278)
Commits
-------

d375b6d Corrected docblock, quoted types were incorrect.

Discussion
----------

Patch 2

Update docblock to show correct property types.
2011-09-27 09:54:09 +02:00
Fabien Potencier
0b505ffee0 merged branch Exercise/assets-helper-scope-2 (PR #2223)
Commits
-------

6555e28 Remove unnecessary use statement
369f181 [FrameworkBundle] Add request scope to assets helper only if needed
d6b915a [FrameworkBundle] Assets templating helper does not need request scope

Discussion
----------

[FrameworkBundle] Assign request scope to assets helper only if needed

**Note**: This PR replaces #2218

I traced this request scope addition back to [an old commit](d9f5c99fab (commitcomment-597654)) from @kriswallsmith.

No other helpers have request scope and the assets helper's parameters don't appear to depend on the request in any way, so this appears to be unnecessary. As-is, request scope here prevents use of the assets helper from a console command that may need to internally render a template.

---------------------------------------------------------------------------

by fabpot at 2011/09/20 08:10:48 -0700

There is probably a reason why it was set to the request scope (just run the unit tests ;)).

---------------------------------------------------------------------------

by jmikola at 2011/09/20 08:22:46 -0700

Doh! Didn't even think to do that for such a small change.

I will investigate further. Do you have any idea how one can generate templates (which call the `asset()` function) during a console script?

---------------------------------------------------------------------------

by fabpot at 2011/09/20 08:33:22 -0700

Apparently, something depends on the Request somewhere. We need to find what needs the Request and determine if this is legitimate or not.

---------------------------------------------------------------------------

by henrikbjorn at 2011/09/20 09:25:05 -0700

https://github.com/symfony/symfony/blob/master/src/Symfony/Bundle/FrameworkBundle/Templating/Asset/PathPackage.php#L33

---------------------------------------------------------------------------

by jmikola at 2011/09/20 10:40:23 -0700

Thanks @henrikbjorn. So, it appears the default behavior of the asset helper is to use the request path as the base URL for assets. In my particular case, I didn't get this scope-widening exception at runtime because I use `assets_base_urls`, which results in the request-independent UrlPackage being injected instead of PathPackage.

This is tricky. I think there's definitely a use case for folks rendering templates outside of a request. Sending HTML emails via some console command is perhaps the most common example. Also, if those developers are not using a CDN, they likely won't think of using `assets_base_urls` at all. Unfortunately, that appears to be the only configuration option where the site's domain is specified (outside of, say, a session domain).

---------------------------------------------------------------------------

by lsmith77 at 2011/09/20 10:45:42 -0700

So do we need 2 services?

---------------------------------------------------------------------------

by jmikola at 2011/09/20 10:52:02 -0700

Well, we actually already have two services. I think that's why PathPackages and UrlPackages are distinct. The issue is that the asset helper has been assigned the request scope to accommodate to satisfy the most restrictive possibility.

I don't think two separate asset helpers would help the developer, even if it'd let us get passing tests.

Also, there is a very real use case here that I wasn't struggling with. You want to render templates with asset paths outside of a request (from a console command). In that case, you need a base URL, but where do you get that from?

Has anyone else encountered that requirement? I know we definitely did at OpenSky, and now at Exercise.com.

---------------------------------------------------------------------------

by jmikola at 2011/09/22 20:14:37 -0700

Had a chat with @kriswallsmith today. We brainstormed and came up with the idea of simply adding `strict="false"` to the request arguments of these templating services. That would disable the premature scope exception, but lead to different kind of error if the user attempted to call `asset()` when using a PathPackage (no `asset_base_urls` and no UrlPackage in play).

The PathPackage class in the templating component obviously has no request dependency -- just the FrameworkBundle version. I started modifying FrameworkBundle's PathPackage to make the Request usage optional (if it's not available, an empty base path is provided to the parent constructor, which actually works fine).

In the course of implementing that, I made the request argument `strict="false" on-invalid="null"` and encountered some strange behavior (possibly a bug) where the PathPackage service generated in FrameworkExtension via the DefinitionDecorator was not inheriting the strict/invalid properties. If I removed `on-invalid="null", strictness was inherited just fine. I'm going to continue looking into this, but at this point it seems like that may be a separate PR if it is, indeed, a bug.

Just going to paste my chat transcript with Kris here for some extra context:

```
<jmikola> if you have a moment later, could you chime in on https://github.com/symfony/symfony/pull/2223 ?
<jmikola> it's about using the asset() helper from a console command
<jmikola> i could have sworn we were sending emails like this in opensky, from console commands
<jmikola> doing the same thing for exercise, but the request scope on the asset helper is a cog in the gear
<kris>    you don't have base urls configured?
<jmikola> we do
<jmikola> but the service is request-scoped because it doesn't know until runtime if it will be using UrlPackage or PathPackage
<jmikola> and PathPackage depends on the request object
<kris>    yeah, it's tricky
<jmikola> so i think the scope was added to handle the most restrictive case
<jmikola> no way around that except to remove the scoping at runtime i suppose
<kris>    we can tweak the scope in a compilation pass
<kris>    but that could create some wtfs
<jmikola> why?
<jmikola> because some asset() calls might specify a package name?
<jmikola> without base_url's?
<kris>    what about setting strict to false?
<jmikola> i haven't played with package names but i think that's how it works
<jmikola> ah, what's the problem with that again? i know it disables the exception
<jmikola> but if strict is false, what's the benefit of having request scope at all?
<kris>    there are a lot of instances of strict="false" in the core
<jmikola> if strict is false, the scope becomes just documentation?
<jmikola> i'm drawing a blank on how that works - i just know strictness turns on the exceptions for widening violations
<kris>    right
<kris>    it means that helper would no longer be in the request scope, even though it uses a service from the request scope
<kris>    i think that would be fine
<jmikola> ah, strict=false goes on the service argument
<jmikola> does that mean we'd apply that to the definition of templating.asset.path_package ?
<kris>    yes
<jmikola> or just when PathPackage becomes an argument to the helper?
<jmikola> ok
<kris>    whatever uses the request
<jmikola> and this would still cause havoc if I didn't define base_urls and tried to call asset() :)
<jmikola> i suppose in the form of null passed when Request instance expected?
<jmikola> or worse, undefined service request
<kris>    right...
<jmikola> ok
<kris>    so maybe we need a way to manually define the base path
<jmikola> for PathPackage
<kris>    right, i think that's what's in the component
<jmikola> UrlPackage only comes into play if there's 1 or more assets_base_urls defined, right?
<kris>    right
<jmikola> i'm looking at it, and am curious what happens if it was constructed with no base urls :)
<jmikola> since there's no checks that the array is full
<jmikola> *non-empty
<jmikola> ah, if it's empty it uses '' as the base Url
<jmikola> Perhaps PathPackage in FrameworkBundle could make the request optional
<jmikola> the core PathPackage does support an empty baseUrl
<jmikola> $basePath rather
<jmikola> it uses "/" by default
<kris>    how about a configurator that calls setBasePath() if the container includes a request?
<jmikola> then the service would still need to be request scoped, no?
<jmikola> what it the same service was used on multiple requests
<jmikola> thinking of those trendy php app servers :)
<kris>    the service wouldn't use the request
<kris>    the configurator would
<kris>    but via dic injection
<jmikola> do configurators exist?
<jmikola> i don't think i've seen one, a class with that name is in the DistributionBundle though - probably different
<kris>    you can define a configurator on a service
<jmikola> example? is this done via tags?
<kris>    it's a callable that will be passed the service before it leaves the container for the first time
<jmikola> so the PathPackage base class in the Templating component has a private basePath, it'd need a setBasePath method added of course
<kris>    yeah, that's fine
<jmikola> ah <configurator
<jmikola> can't believe i've never seen this before
<kris>    it's an old feature
<kris>    and you can only set one for some reason
<jmikola> woah, it's only in test fixtures
<jmikola> nothing actually uses it
<jmikola> yet :)
<jmikola> configurators receive the container as their only argument?
<jmikola> oh, no arguments at all
<kris>    they receive the service
<kris>    but a configurator can be a service itself
<kris>    i would add a base path node to the config
<kris>    and disallow using both base path and base urls
<kris>    and only use the configurator if the base path isn't explicitly set
<jmikola> now, in this case i'd have the configurator for the PathPackage service be another service that depends on request
<kris>    no
<kris>    the configurator should depend on the container
<kris>    check if there is a request service and use it to set the base path if so
<jmikola> ok, and it's responsible for $pathPackage->setBaseUrl($request->getBasePath()) if the request exists
<jmikola> right
<kris>    setBasePath
<jmikola> correct, sorry
<jmikola> i think a base_path and base_url can co-exist
<jmikola> base_url will entail use of the UrlPackage
<jmikola> and base_path is simply the default value for PathPackages
<jmikola> in the absence of the request
<kris>    i don't follow
<jmikola> a base_url option in the config would simply be for the case where PathPackage is utilized outside of a request scope (i.e. console command)
<jmikola> sorry, base_path***
<jmikola> assets_base_url is for UrlPackages
<kris>    right
<jmikola> ok, so you're saying at the top level, or in the packages prototypes, we'd allow only one or the other
<jmikola> at present, there's only asset_base_url's, so that implies configurations creating only UrlPackages
<kris>    add a validation to the Configuration class so you have to choose one or the other
<kris>    i don't understand why you would need base_path from the cli
<jmikola> so in this case, absence of either will result in a PathPackage configured based on the current request
<kris>    don't you need absolute urls in your emails?
<kris>    i'm rethinking
<jmikola> yes, we're using UrlPackages of course
<jmikola> but the request scope ruined this for me
<kris>    don't bother with base_path in the config
<kris>    just do the configurator
<jmikola> there's still a possibility that someone would generate HTML for on-site use from a console command
<jmikola> perhaps pre-building twig templates or something
<jmikola> your idea made sense i think
<jmikola> even if it's an edge case
<jmikola> granted, most people are perfectly fine with "/" as a default base_path in the absence of a request
<kris>    that would be another pr
<jmikola> right
<jmikola> then for now, what about just making the request argument on-invalid null?
<jmikola> and changing PathPackage in the bundle
<jmikola> PathPackage in the component already handles an empty base path itself just fine
<kris>    yeah, that's better
<jmikola> on-invalid="null" and strict="false"
<kris>    nice
<jmikola> i'm satisifed with the simplicity of that
<jmikola> and will comment about your base_path option idea in my PR for a future task when i get around to it - as that sounded great as well
<jmikola> thanks for talking through this w/ me :)
<kris>    np
<jmikola> PackageFactory is the new roadblock, heh
<jmikola> getPackage() { return $this->container->get($request->isSecure() ? $sslId : $httpId); }
<jmikola> :D
<kris>    oh yeah
<jmikola> should i utilize the same logic? default to non-ssl?
<jmikola> i'm actually curious how gmail handles references to http:// assets embedded in its emails
<jmikola> i suppose it renders message bodies in iframes
<kris>    then it would be impossible to render https asset urls without a request
<jmikola> wouldn't it default to the http url?
<kris>    right
<kris>    but what if you only have https base urls configured?
<jmikola> if you break them into http and https blocks, it'd be a problem
<kris>    i think it always uses https if you only have https urls configured
<jmikola> otherwise, the shorthand notation sorts them for you
<jmikola> and all https urls are available to http
<jmikola> ah, you're correct
<jmikola> FrameworkExtension::createPackageDefinition
```

---------------------------------------------------------------------------

by jmikola at 2011/09/26 10:39:00 -0700

@fabpot: I believe I reached an agreeable solution, so please review when you get a chance.

I removed any `strict` and `on-invalid` trickery (ideas I was discussing with Kris) and decided to only apply request scoping to the assets helper if one or more of its injected packages (default or named) is request scoped.

This satisfies my requirements, as I had absolute base URL's defined for both HTTP and SSL protocols. It also leaves the current scope exceptions in place if, for instance, someone only defined an HTTP base URL and FrameworkBundle ended up creating a PathPackage for their SSL assets. I go into detail about this more in my second commit, and I think the added tests help explain this as well.

---------------------------------------------------------------------------

by jmikola at 2011/09/26 16:56:30 -0700

Something screwed up earlier and this PR's branch included all commits in `symfony/master`. I just cleaned things up.
2011-09-27 09:52:20 +02:00
Drak
d375b6d00e Corrected docblock, quoted types were incorrect. 2011-09-27 13:34:25 +05:45
Igor Wiedler
d535afeb98 [composer] fix monolog-bridge composer.json, add more inter-component deps 2011-09-27 09:33:21 +02:00
Jeremy Mikola
6555e28d57 Remove unnecessary use statement 2011-09-26 19:54:19 -04:00
Jeremy Mikola
369f181005 [FrameworkBundle] Add request scope to assets helper only if needed
Builds upon aead4a9836180cabae4d47fe27c634dcd79ac8f2, which prematurely removed request scoping from the assets templating helper in all cases. The helper need only be request-scoped if one or more request-scoped packages (e.g. PathPackages) are injected into it. This change makes it possible to utilize the assets helper outside of a request (e.g. during a console script).

To ensure that the assets helper is not assigned a request scope, all asset base URL's must be defined for all packages (default and any named) and both protocols: HTTP and SSL. The included test config fixtures concisely accomplish this by specifying a single HTTPS URL as the base URL for our default and named package, since FrameworkExtension's Configuration conveniently registers this URL for both protocols.
2011-09-26 19:54:12 -04:00
Jeremy Mikola
d6b915a174 [FrameworkBundle] Assets templating helper does not need request scope
No other helpers have request scope and the assets helper's parameters don't appear to depend on the request in any way, so this appears to be unnecessary. As-is, request scope here prevents use of the assets helper from a console command that may need to internally render a template.
2011-09-26 19:54:05 -04:00
Igor Wiedler
9ade639bb4 [composer] add composer.json 2011-09-27 00:55:43 +02:00
Laurent Bachelier
72e82eb595 Replace deprecated key_exists alias
From the PHP manual of array_key_exists:
    For backward compatibility, the following deprecated alias
    may be used: key_exists().
2011-09-27 00:06:04 +02:00
Marcin Chylek
ed02aa9974 Fix console: list 'namespace' command display all available commands 2011-09-27 00:05:57 +02:00
Dan Patrick
decfe9eb5c Corrected grammar in FilterControllerEvent comments 2011-09-27 00:05:39 +02:00
Fabien Potencier
0bd1f15923 merged branch Yrwein/class_loader_trait_exists (PR #2257)
Commits
-------

85ed5c6 [ClassLoader] Fixed state when trait_exists doesn't exists

Discussion
----------

[ClassLoader] Fixed state when trait_exists doesn't exists

Just for consistency of throwing exceptions in the ClassCollectionLoader. (An exception would be thrown in the next step by the ReflectionClass.)
2011-09-26 23:48:27 +02:00
Josef Cech
85ed5c67dc [ClassLoader] Fixed state when trait_exists doesn't exists 2011-09-25 19:25:50 +02:00
Fabien Potencier
369d4da4eb bumped Symfony version to 2.0.3-DEV 2011-09-25 11:51:38 +02:00
Fabien Potencier
6a25df0ebf updated VERSION for 2.0.3 2011-09-25 11:51:12 +02:00
Fabien Potencier
eb8de85ea5 updated CHANGELOG for 2.0.3 2011-09-25 11:50:40 +02:00
Fabien Potencier
49c585ebd2 Revert "merged branch stealth35/ini_bool (PR #2235)"
This reverts commit 363057b181, reversing
changes made to 545cd4cd63.
2011-09-25 11:33:22 +02:00
Fabien Potencier
fa13469bba Revert "[DependencyInjection] fixed array support for the ini loader"
This reverts commit e0ace8eaee.
2011-09-25 11:33:07 +02:00
Fabien Potencier
27fc06785b Revert "[DepedencyInjection] fixed unit tests"
This reverts commit b8e5a155e4.
2011-09-25 11:33:00 +02:00
Fabien Potencier
604d066b52 bumped Symfony version to 2.0.3-DEV 2011-09-25 10:27:37 +02:00
Fabien Potencier
3d89f340b3 updated VERSION for 2.0.2 2011-09-25 10:27:00 +02:00
Fabien Potencier
fd8ea0cac2 update CONTRIBUTORS for 2.0.2 2011-09-25 10:26:33 +02:00
Fabien Potencier
c9b382d528 updated CHANGELOG for 2.0.2 2011-09-25 10:21:40 +02:00
Fabien Potencier
389073a326 updated vendors for 2.0.2 2011-09-25 09:55:09 +02:00
Fabien Potencier
6b367d1e3d merged branch helmer/target_path (PR #2228)
Commits
-------

022a9a7 [Security] Make saving target_path extendible

Discussion
----------

[Security] Make saving target_path extendible

The problem lies in how Security component handles ``target_path`` - the latest request URI is always stored. This can lead to problems in following scenarios:
a) The response type of the request is not HTML (think JSON, XML ..)
b) The URI matches a route that does not listen to HTTP GET

I opened a [PR](https://github.com/symfony/symfony/pull/604) months ago, to partly solve scenario A, which did not make it. Now I am proposing a different solution - user can extend ``ExceptionListener`` and override the logic behind setting the ``target_path`` to match his precise needs.

In my simplified scenario, I would be using:

```
protected function setTargetPath(Request $request)
{
    if ($request->isXmlHttpRequest() || 'GET' !== $request->getMethod()) {
        return;
    }

    $request->getSession()->set('_security.target_path', $request->getUri());
}
```

@Seldaek, @schmittjoh, @lsmith77, thoughts?

---------------------------------------------------------------------------

by Seldaek at 2011/09/21 02:37:02 -0700

Seems like a better solution for flexibility's sake. Would be quite awesome if you could add a cookbook entry to symfony/symfony-docs about this, otherwise I'm afraid we'll have to explain it over and over again :)

---------------------------------------------------------------------------

by helmer at 2011/09/21 03:38:57 -0700

[Cookbook](b22c5e666e) entry done. Perhaps though I rushed ahead ..

---------------------------------------------------------------------------

by Seldaek at 2011/09/21 03:52:01 -0700

Thanks. You can already do a pull request against symfony-docs, just reference this pull request in it so it's not merged before this is merged.
2011-09-25 09:46:00 +02:00
Fabien Potencier
4983f0a18e merged branch weaverryan/2.0_readme_contributing (PR #2251)
Commits
-------

c0494c4 [README] Adding a small section with information about contributing.

Discussion
----------

[WIP] Contributing addition to the README

Hey guys-

This adds a small section to the README about contributing. It's a WIP only because we need to wait for [this](0892a2cf5c) commit to be rendered so that the following link works (and takes you down to the new section):

http://symfony.com/doc/current/contributing/code/patches.html#check-list

Thanks!
2011-09-23 21:09:44 +02:00
Fabien Potencier
e2945c9f9b [Routing] fixed Apache matcher dumper (broken by previous merge) 2011-09-23 20:56:36 +02:00
Fabien Potencier
d830253876 [Routing] fixed unit tests broken by previous merge 2011-09-23 20:56:18 +02:00
Fabien Potencier
67f182e3e2 merged branch geezmo/2.0 (PR #2249)
Commits
-------

ae3aded Added PCRE_DOTALL modifier to RouteCompiler to allow urlencoded linefeed in route parameters.

Discussion
----------

Added PCRE_DOTALL modifier to RouteCompiler to allow urlencoded linefeed in route parameters.

Reopened from PR 2220 on master branch.

---------------------------------------------------------------------------

by Seldaek at 2011/09/23 07:59:58 -0700

👍 :)
2011-09-23 20:49:59 +02:00
Ryan Weaver
c0494c4c5b [README] Adding a small section with information about contributing. 2011-09-23 11:21:11 -05:00
Alberto Pirovano
ae3aded83f Added PCRE_DOTALL modifier to RouteCompiler to allow urlencoded linefeed in route parameters. 2011-09-23 16:53:06 +02:00
Fabien Potencier
b8e5a155e4 [DepedencyInjection] fixed unit tests 2011-09-23 11:59:37 +02:00
Fabien Potencier
e0ace8eaee [DependencyInjection] fixed array support for the ini loader 2011-09-23 11:45:30 +02:00
Fabien Potencier
e5a23dbdaa [ClassLoader] added support for PHP 5.4 traits 2011-09-22 09:31:50 +02:00
Fabien Potencier
363057b181 merged branch stealth35/ini_bool (PR #2235)
Commits
-------

11c4412 [DependencyInjection] fix 2219 IniFileLoader accept Boolean

Discussion
----------

[DependencyInjection] fix #2219 IniFileLoader accept Boolean

fix #2219
accept : `true`, `false`, `null` like YAML
2011-09-21 22:17:58 +02:00
stealth35
11c441289a [DependencyInjection] fix 2219 IniFileLoader accept Boolean 2011-09-21 22:14:12 +02:00
Fabien Potencier
545cd4cd63 merged branch alifity/trans-unit-41-id (PR #2234)
Commits
-------

ad208d9 added trans-unit-41 for 2.0

Discussion
----------

Added indonesian translation for trans unit 41
2011-09-21 20:15:26 +02:00
Fabien Potencier
64d44fbb93 [Translator] fixed recursion when using a fallback that is the same as the locale 2011-09-21 20:13:06 +02:00
Alif Rachmawadi
ad208d9dae added trans-unit-41 for 2.0 2011-09-22 01:01:06 +07:00
Matthieu Bontemps
e3f6b4fc0d [Translation] Add a failing test when translating a non existent string with a fallback 2011-09-21 19:43:20 +02:00
Fabien Potencier
4ec8798ab2 merged branch stealth35/patch-11 (PR #2224)
Commits
-------

cf736cc [DomCrawler] Add test for ChoiceFormField without value
bca551e [DomCrawler] ChoiceFormField should take the content when value is unavailable

Discussion
----------

[DomCrawler] ChoiceFormField should take the content when value is unavai

[DomCrawler] ChoiceFormField should take the content when value is unavailable

---------------------------------------------------------------------------

by fabpot at 2011/09/20 09:15:21 -0700

Can you some unit tests?
2011-09-20 22:07:47 +02:00
stealth35
cf736ccde3 [DomCrawler] Add test for ChoiceFormField without value 2011-09-20 18:30:35 +02:00
stealth35
bca551e86f [DomCrawler] ChoiceFormField should take the content when value is unavailable 2011-09-20 19:08:17 +03:00
Fabien Potencier
b635dcad7a [Translator] fixed non-loaded locale 2011-09-19 08:52:59 +02:00
Fabien Potencier
dde8b6aa25 merged branch hason/czech-2.0 (PR #2203)
Commits
-------

620d44a [FrameworkBundle] updated Czech translation

Discussion
----------

[2.0] Updated Czech translation
2011-09-18 09:44:02 +02:00