Commit Graph

8310 Commits

Author SHA1 Message Date
Drak f9951a39eb Fixed formatting. 2012-02-11 11:24:18 +05:45
Drak 398acc9e9f [HttpFoundation] Reworked flashes to maintain same behaviour as in Symfony 2.0 2012-02-11 11:24:15 +05:45
Drak f98f9ae8ff [HttpFoundation] Refactor for DRY code.
Rename ArraySessionStorage to make it clear the session is a mock for testing purposes only.
Has BC class for ArraySessionStorage
Added sanity check when starting the session.
Fixed typos and incorrect php extension test method
session_module_name() also sets session.save_handler, so must use extension_loaded() to check if module exist
or not.
Respect autostart settings.
2012-02-11 11:24:11 +05:45
Drak 9dd4dbed6d Documentation, changelogs and coding standards. 2012-02-11 11:24:07 +05:45
Drak 1ed6ee325c [DoctribeBridge][SecurityBundle][WebProfiler] Refactor code for HttpFoundation changes. 2012-02-11 11:21:30 +05:45
Drak 7aaf024b2a [FrameworkBundle] Refactored code for changes to HttpFoundation component.
Native PHP sessions stored to file are done with session.storage.native_file
Functional testing is done with session.storage.mock_file

Default flash message implementation done with FlashBag (session.flash_bag)
Default attribute storage implementation with AttributeBag (session.attribute_bag)

Services added: session.storage.native_file, session.storage.native_memcache, session.storage.native_memcache,
session.storage.native_sqlite, session.storage.memcache, session.storage.memcached, session.storage.null,
session.storage.mock_file, session.flash_bag, session.attribute_bag

Services removed: session.storage.native, session.storage.filesystem
2012-02-11 11:21:26 +05:45
Drak 669bc96c7f [HttpFoundation] Added pure Memcache, Memcached and Null storage drivers. 2012-02-11 11:21:22 +05:45
Drak e185c8d63b [HttpFoundation] Refactored component for session workflow. 2012-02-11 11:21:18 +05:45
Drak 85b5c43c7a [HttpFoundation] Added drivers for PHP native session save handlers, files, sqlite, memcache and memcached. 2012-02-11 11:21:14 +05:45
Drak 57ef984e95 [HttpFoundation] Added unit and functional testing session storage objects. 2012-02-11 11:21:10 +05:45
Drak 3a263dc088 [HttpFoundation] Introduced session storage base class and interfaces.
Session object now implements SessionInterface to make it more portable.

AbstractSessionStorage and SessionSaveHandlerInterface now makes implementation
of session storage drivers simple and easy to write for both custom save handlers
and native php save handlers and respect the PHP session workflow.
2012-02-11 11:21:06 +05:45
Drak c9694237d2 [HttpFoundation] Added FlashBagInterface and concrete implementation.
This commit outsources the flash message processing to it's own interface.

Overall flash messages now can have multiple flash types and each type can
store multiple messages.  For convenience there are now four flash types
by default, INFO, NOTICE, WARNING and ERROR.

There are two concrete implementations: one preserving the old behaviour of
flash messages expiring exactly after one page load, regardless of being
displayed or not; and the other where flash messages persist until explicitly
popped.
2012-02-11 11:21:02 +05:45
Drak 39288bcdaa [HttpFoundation] Added AttributesInterface and AttributesBagInterface and concrete implementations.
This commit outsources session attribute storage to it's own class.
There are two concrete implementations, one with structured namespace storage and the other
without.
2012-02-11 11:20:58 +05:45
Fabien Potencier 92cb685ebc fixed CS 2012-02-10 13:35:11 +01:00
Fabien Potencier 5ca472bd45 merged branch vicb/profiler/routing (PR #3283)
Commits
-------

ac59db7 cleanup
64ea95d [WebProfilerBundle] Add redirection info to the router panel
826bd23 [FrameworkBundle] fix phpDoc of ControllerResolver::createController()
e3cf37f [HttpFoundation] RedirectResponse: add the ability to retrieve the target URL, add unit tests
50c85ae [WebProfiler] Add info to the router panel

Discussion
----------

[WIP][Profiler] Routing

former #3206 part 3 (depends on part 1 - #3280)

The goal of this PR is to fix #3264 by adding redirection infos on the router panel.

Done:

* Add info on the target url / route

To do:

* Display an accurate URL matching process (when using the RedirectableUrlMatcher)
2012-02-10 13:31:26 +01:00
Fabien Potencier 2a16171645 merged branch vicb/profiler/pages (PR #3281)
Commits
-------

0d4d7e0 [WebProfilerBundle] Make the toolbar use the common JS
a440279 [WebProfilerBundle] Adds panel pages
762d90d [Profiler] Buid a common infrastructure

Discussion
----------

[Profiler] Provide a common infrastructure

former #3206 part 3

* base JS (provides ajax, toggle, css class helpers),
* panel pages (used only by the Doctrine panel for now).

Successfuly tested with the (future version of the) Doctrine panel.
2012-02-10 13:25:59 +01:00
Fabien Potencier 75c6ccf3b6 merged branch vicb/misc/cleaning (PR #3280)
Commits
-------

3896fdd [WebProfilerBundle] Some cleanup

Discussion
----------

[WebProfilerBundle] Some cleanup

former #3206 part 1 (misc cleanup)
2012-02-10 13:21:41 +01:00
Fabien Potencier be2e67c1ab merged branch bschussek/issue3288 (PR #3290)
Commits
-------

22c8f80 [Form] Fixed issues mentioned in the PR comments
3b1b570 [Form] Fixed: The "date", "time" and "datetime" types can be initialized with \DateTime objects
88ef52d [Form] Improved FormType::getDefaultOptions() to see default options defined in parent types
b9facfc [Form] Removed undefined variables in exception constructor

Discussion
----------

[Form] Fixed: "date", "time" and "datetime" fields can be initialized with \DateTime objects

Bug fix: yes
Feature addition: yes
Backwards compatibility break: **yes**
Symfony2 tests pass: yes
Fixes the following tickets: #3288
Todo: -

![Travis Build Status](https://secure.travis-ci.org/bschussek/symfony.png?branch=issue3288)

Fixed exception that was thrown when doing:

    $builder->add('createdAt', 'date', array('data' => new \DateTime()));

On a side note, the options passed to `FieldType::getDefaultOptions` now always also contain the default options of any parent types. This is necessary if you want to be independent of how `getDefaultOptions` is implemented in the parent type and still rely on the already defined values.

As a result, `FieldType::getParent` doesn't see default options anymore. This shouldn't be a big problem, because this method only relies on options in few cases. If it does, options now need to be checked for existence with `isset` before being used (BC break).

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

by bschussek at 2012-02-09T16:14:46Z

@fabpot Ready to merge.

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

by bschussek at 2012-02-10T12:15:04Z

@fabpot Ready to merge
2012-02-10 13:16:49 +01:00
Fabien Potencier 78e6a2f734 merged branch bschussek/issue3293 (PR #3315)
Commits
-------

da2447e [Form] Fixed MergeCollectionListener when used with a custom property path
b56502f0 [Form] Added getParent() to PropertyPath
7e5104e [Form] Fixed MergeCollectionListener for the case that the form's data is updated by the data mapper (as happening in CollectionType)

Discussion
----------

[Form] Fixed MergeCollectionListener for the case that the form's data is updated by the data mapper

Bug fix: yes
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #3293, #1499
Todo: -

![Travis Build Status](https://secure.travis-ci.org/bschussek/symfony.png?branch=issue3293)

This fixes CollectionType to properly use adders and removers. Apart from that, adders and removers now work with custom property paths. PropertyPath was extended for a method `getParent`.

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

by bschussek at 2012-02-10T07:42:13Z

@fabpot Ready to merge.
2012-02-10 13:02:02 +01:00
Fabien Potencier c614be74c8 merged branch bschussek/issue2308 (PR #3320)
Commits
-------

0a4519d [Form] Fixed duplicate errors on forms with "error_bubbling"=false

Discussion
----------

[Form] Fixed duplicate errors on forms with "error_bubbling"=false

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #2308
Todo: -

![Travis Build Status](https://secure.travis-ci.org/bschussek/symfony.png?branch=issue2308)
2012-02-10 12:59:38 +01:00
Fabien Potencier feb0dfd55e merged branch bschussek/issue2553 (PR #3319)
Commits
-------

6a45a41 [Form] Fixed Form::bindRequest() when used on a form without children

Discussion
----------

[Form] Fixed Form::bindRequest() when used on a form without children

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #2553
Todo: -

![Travis Build Status](https://secure.travis-ci.org/bschussek/symfony.png?branch=issue2553)
2012-02-10 12:55:15 +01:00
Fabien Potencier 6d793e72bf merged branch bschussek/issue2226 (PR #3321)
Commits
-------

2521962 [Form] Added constant Guess::VERY_HIGH_CONFIDENCE

Discussion
----------

[Form] Added constant Guess::VERY_HIGH_CONFIDENCE

Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: #2226
Todo: -

![Travis Build Status](https://secure.travis-ci.org/bschussek/symfony.png?branch=issue2226)
2012-02-10 12:52:45 +01:00
Bernhard Schussek 2521962260 [Form] Added constant Guess::VERY_HIGH_CONFIDENCE 2012-02-10 12:01:35 +01:00
Bernhard Schussek 0a4519d103 [Form] Fixed duplicate errors on forms with "error_bubbling"=false 2012-02-10 11:41:19 +01:00
Bernhard Schussek 6a45a415a1 [Form] Fixed Form::bindRequest() when used on a form without children 2012-02-10 10:36:16 +01:00
Bernhard Schussek da2447e118 [Form] Fixed MergeCollectionListener when used with a custom property path 2012-02-09 18:29:42 +01:00
Bernhard Schussek b56502f023 [Form] Added getParent() to PropertyPath 2012-02-09 18:11:16 +01:00
Bernhard Schussek 7e5104e09b [Form] Fixed MergeCollectionListener for the case that the form's data is updated by the data mapper (as happening in CollectionType) 2012-02-09 18:11:10 +01:00
Bernhard Schussek 22c8f8087c [Form] Fixed issues mentioned in the PR comments 2012-02-09 17:13:33 +01:00
Fabien Potencier 11e3516583 merged branch blogsh/dynamic_group_sequence (PR #3199)
Commits
-------

411a0cc [Validator] Added GroupSequenceProvider to changelog
815c769 [Validator] Renamed getValidationGroups to getGroupSequence
d84a2e4 [Validator] Updated test expectations
9f2310b [Validator] Fixed typos, renamed hasGroupSequenceProvider
e0d2828 [Validator] GroupSequenceProvider tests improved, configuration changed
c3b04a3 [Validator] Changed GroupSequenceProvider implementation
6c4455f [Validator] Added GroupSequenceProvider

Discussion
----------

[Validator] Added GroupSequenceProvider

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: ![](https://secure.travis-ci.org/blogsh/symfony.png?branch=dynamic_group_sequence)

As discussed in #3114 I implemented the "GroupSequenceProvider" pattern for the validator component. It allows the user to select certain validation groups based on the current state of an object. Here is an example:

    /**
     * @Assert\GroupSequenceProvider("UserGroupSequnceProvider")
     */
    class User
    {
        /**
         * @Assert\NotBlank(groups={"Premium"})
         */
        public function getAddress();

        public function hasPremiumSubscription();
    }

    class UserGroupSequenceProvider implements GroupSequenceProviderInterface
    {
        public function getValidationGroups($user)
        {
            if ($user->hasPremiumSubscription()) {
                return array('User', 'Premium');
            } else {
                return array('User');
            }
        }
    }

With this patch there are two mechanisms to define the group sequence now. Either you can use @GroupSequence to define a static order of validation groups or you can use @GroupSequenceProvider to create dynamic validation group arrays.
The ClassMetadata therefore has methods now which implement quite similar things. The question is whether it would make sense to interpret the static group sequence as a special case and create something like a DefaultGroupSequenceProvider or StaticGroupSequenceProvider which is assigned by default. This would cause a BC break inside the validator component.

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

by bschussek at 2012-01-28T13:39:54Z

I like the implementation, but I think we should differ a little bit from Java here.

1. `GroupSequenceProviderInterface` should be implemented by the domain classes themselves (`User`), not by a separate class.
2. As such, the parameter `$object` from `getValidationGroups($object)` can be removed
3. `ClassMetadata::setGroupSequenceProvider()` should accept a boolean to activate/deactivate this functionality. Also the check for the interface (does the underlying class implement it?) should be done here

Apart from that, special cases need to be treated:

* A definition of a group sequence and a group sequence provider in the same `ClassMetadata` should not be allowed. Either of them must not be set.
* Metadata loaders must take care of settings made by parent classes. If `Animal` is extended by `Dog`, `Animal` defines a group sequence (or group sequence provider) and `Dog` a group sequence provider (or group sequence), only the setting of `Dog` should apply

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

by blogsh at 2012-01-28T21:25:37Z

Changes of the latest commit:

- GroupSequenceProviderInterface has to be implemented by the domain class
- The annotation/configuration options let the user define whether the provider is activated or not (is this neccessary at all?)
- An error is thrown if the user wants to use static group sequences and the provider simultaneously

At the moment neither the static group sequence nor the provider is inherited from parent classes or interfaces. I don't know if it would make sense to enable this feature. There could be problems if a user wants to define a static group sequence in the parent class and a sequence provider in the child class.

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

by bschussek at 2012-01-30T13:07:04Z

> There could be problems if a user wants to define a static group sequence in the parent class and a sequence provider in the child class.

In this case, the setting in the child class should override the setting of the parent class.

But we can leave this open for now. As it seems, [this issue is unresolved in Hibernate as well](https://hibernate.onjira.com/browse/HV-467).

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

by blogsh at 2012-01-30T22:54:41Z

Okay, finally I managed to upload the latest commit. If you got a bunch of notifications or so I'm sorry, but I had to revert some accidental changes in the commit :(

I've rewritten the tests and have removed the "active" setting in the XML configuration.

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

by blogsh at 2012-02-02T15:24:01Z

Okay, typos are fixed now and `hasGroupSequenceProvider` has been renamed to `isGroupSequenceProvider`. I also had to adjust some tests after the rebase with master.

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

by bschussek at 2012-02-03T09:25:19Z

Looks good.

@fabpot 👍

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

by fabpot at 2012-02-03T09:46:52Z

Can you add a note in the CHANGELOG before I merge? Thanks.

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

by blogsh at 2012-02-09T12:31:27Z

@fabpot done
2012-02-09 13:39:47 +01:00
Fabien Potencier 7eb22a7711 [MonologBundle] moved bundle to its own repository 2012-02-09 10:22:21 +01:00
Fabien Potencier c0c75c8d15 removed Swiftmailer from vendors.php 2012-02-09 10:20:48 +01:00
Fabien Potencier 0e17e8bfff merged branch henrikbjorn/swiftmailer-composer (PR #3304)
Commits
-------

f143822 Removed invalid dependencies and replaces in composer.json

Discussion
----------

Removed invalid dependencies and replaces in composer.json
2012-02-09 10:19:06 +01:00
Fabien Potencier a53cd6954a removed Swiftmailer from composer.json 2012-02-09 10:13:28 +01:00
Henrik Bjørnskov f143822d52 Removed invalid dependencies and replaces in composer.json 2012-02-09 10:13:03 +01:00
Fabien Potencier e69a30b2a5 [SwiftmailerBundle] moved the bundle to its own repository 2012-02-09 09:51:46 +01:00
Fabien Potencier 1e3028d0d7 merged branch benji07/patch-1 (PR #3289)
Commits
-------

a38cfa3 [Serializer] Fix typo

Discussion
----------

[Serializer] Fix typo in comments
2012-02-09 07:26:49 +01:00
Fabien Potencier 4c4a1d6d8a merged branch jmikola/cc-optional-warmers (PR #3302)
Commits
-------

42c9892 [FrameworkBundle] Allow cache:clear/warmup to skip optional warmers

Discussion
----------

[FrameworkBundle] Allow cache:clear/warmup to skip optional warmers

> Bug fix: no
> Feature addition: yes
> Backwards compatibility break: yes
> Symfony2 tests pass: [yes](http://travis-ci.org/#!/jmikola/symfony/builds/647861)

Exercise.com has been using this for a while for our local environments. Skipping the optional cache warmers (namely Assetic) can save quite a bit of time.
2012-02-09 07:08:52 +01:00
Jeremy Mikola 42c98921a2 [FrameworkBundle] Allow cache:clear/warmup to skip optional warmers 2012-02-08 20:16:02 -05:00
Fabien Potencier 11f83a6481 merged branch umpirsky/serbian-translation-latin (PR #3297)
Commits
-------

fd15529 Added Serbian Latin translation for validatoor messages.

Discussion
----------

Added Serbian Latin translation for validatoor messages.

Files named as specified by stof https://github.com/symfony/symfony/pull/3167#issuecomment-3598423
2012-02-08 07:58:07 +01:00
Sasa Stamenkovic fd15529ea6 Added Serbian Latin translation for validatoor messages. 2012-02-07 21:49:41 +01:00
Bernhard Schussek 3b1b57030b [Form] Fixed: The "date", "time" and "datetime" types can be initialized with \DateTime objects 2012-02-07 11:10:02 +01:00
Bernhard Schussek 88ef52d272 [Form] Improved FormType::getDefaultOptions() to see default options defined in parent types
In turn, FormType::getParent() does not see default options anymore.
2012-02-07 10:51:21 +01:00
Bernhard Schussek b9facfc5ae [Form] Removed undefined variables in exception constructor 2012-02-07 10:47:01 +01:00
Benjamin Lévêque a38cfa3763 [Serializer] Fix typo 2012-02-07 10:25:10 +01:00
Victor Berchet ac59db7eef cleanup 2012-02-06 20:42:20 +01:00
Victor Berchet 64ea95dea1 [WebProfilerBundle] Add redirection info to the router panel
Conflicts:

	src/Symfony/Bundle/FrameworkBundle/DataCollector/RouterDataCollector.php
	src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml
	src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig
2012-02-06 19:26:06 +01:00
Victor Berchet 826bd230a1 [FrameworkBundle] fix phpDoc of ControllerResolver::createController() 2012-02-06 19:09:38 +01:00
Victor Berchet e3cf37fe84 [HttpFoundation] RedirectResponse: add the ability to retrieve the target URL, add unit tests 2012-02-06 19:09:24 +01:00
Victor Berchet 50c85aef24 [WebProfiler] Add info to the router panel 2012-02-06 19:08:49 +01:00