From b51656c068b7c9fbbbf12f02cd1d012ac33d9bf2 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 9 Aug 2013 09:21:36 +0200 Subject: [PATCH] add missing file for api documentation --- .../api/classes/Thelia.Action.Category.html | 2035 ++++++++++++++ ...ion.Exception.FormValidationException.html | 1696 ++++++++++++ .../api/classes/Thelia.Cart.CartTrait.html | 1692 ++++++++++++ .../Thelia.Core.Event.CategoryEvent.html | 1768 ++++++++++++ ...rity.Exception.AuthorizationException.html | 1694 ++++++++++++ ...helia.Core.Template.Loop.CategoryTree.html | 2398 +++++++++++++++++ .../Thelia.Core.Template.Loop.Lang.html | 2332 ++++++++++++++++ .../Thelia.Form.CategoryCreationForm.html | 2339 ++++++++++++++++ .../Thelia.Form.CategoryDeletionForm.html | 2339 ++++++++++++++++ .../Thelia.Type.BooleanOrBothType.html | 1834 +++++++++++++ .../api/files/Action.Category.php.html | 1645 +++++++++++ ...Exception.FormValidationException.php.html | 1645 +++++++++++ .../api/files/Action/Category.php.txt | 254 ++ .../Exception/FormValidationException.php.txt | 29 + .../api/files/Cart.CartTrait.php.html | 1645 +++++++++++ .../api/files/Cart/CartTrait.php.txt | 138 + .../files/Core.Event.CategoryEvent.php.html | 1645 +++++++++++ ....Exception.AuthorizationException.php.html | 1645 +++++++++++ .../Core.Template.Loop.CategoryTree.php.html | 1645 +++++++++++ .../files/Core.Template.Loop.Lang.php.html | 1645 +++++++++++ .../files/Core/Event/CategoryEvent.php.txt | 37 + .../Exception/AuthorizationException.php.txt | 29 + .../Core/Template/Loop/CategoryTree.php.txt | 123 + .../api/files/Core/Template/Loop/Lang.php.txt | 114 + .../files/Form.CategoryCreationForm.php.html | 1645 +++++++++++ .../files/Form.CategoryDeletionForm.php.html | 1645 +++++++++++ .../files/Form/CategoryCreationForm.php.txt | 56 + .../files/Form/CategoryDeletionForm.php.txt | 45 + .../api/files/Type.BooleanOrBothType.php.html | 1645 +++++++++++ .../api/files/Type/BooleanOrBothType.php.txt | 54 + documentation/api/namespaces/Thelia.Cart.html | 1583 +++++++++++ ...-file_32c9f993ba4d278f85efbdac57d30c1b.dat | Bin 0 -> 7188 bytes ...-file_a3643b212d0a35c0dafbee9c2bbe2c11.dat | Bin 0 -> 7178 bytes ...-file_c8d56734f26182bfc343d385509dbf36.dat | Bin 0 -> 11130 bytes ...-file_939af359fed33854bd55e59313ec017c.dat | Bin 0 -> 9818 bytes ...-file_94ccf1d6684f73c94414e65b98169089.dat | Bin 0 -> 6894 bytes ...-file_e66020f7c2728bce96a786b7f43edff3.dat | Bin 0 -> 4837 bytes ...-file_f312c17e13b5538730814011faa2fe1f.dat | Bin 0 -> 8222 bytes ...-file_438820914076c4c0d905b34ead653b6a.dat | Bin 0 -> 20339 bytes ...-file_c6121287de320bb66016b1b65e250000.dat | Bin 0 -> 15660 bytes ...-file_0a0e3d29d89033abec119857e1df20bc.dat | Bin 0 -> 4835 bytes 41 files changed, 39039 insertions(+) create mode 100644 documentation/api/classes/Thelia.Action.Category.html create mode 100644 documentation/api/classes/Thelia.Action.Exception.FormValidationException.html create mode 100644 documentation/api/classes/Thelia.Cart.CartTrait.html create mode 100644 documentation/api/classes/Thelia.Core.Event.CategoryEvent.html create mode 100644 documentation/api/classes/Thelia.Core.Security.Exception.AuthorizationException.html create mode 100644 documentation/api/classes/Thelia.Core.Template.Loop.CategoryTree.html create mode 100644 documentation/api/classes/Thelia.Core.Template.Loop.Lang.html create mode 100644 documentation/api/classes/Thelia.Form.CategoryCreationForm.html create mode 100644 documentation/api/classes/Thelia.Form.CategoryDeletionForm.html create mode 100644 documentation/api/classes/Thelia.Type.BooleanOrBothType.html create mode 100644 documentation/api/files/Action.Category.php.html create mode 100644 documentation/api/files/Action.Exception.FormValidationException.php.html create mode 100644 documentation/api/files/Action/Category.php.txt create mode 100644 documentation/api/files/Action/Exception/FormValidationException.php.txt create mode 100644 documentation/api/files/Cart.CartTrait.php.html create mode 100644 documentation/api/files/Cart/CartTrait.php.txt create mode 100644 documentation/api/files/Core.Event.CategoryEvent.php.html create mode 100644 documentation/api/files/Core.Security.Exception.AuthorizationException.php.html create mode 100644 documentation/api/files/Core.Template.Loop.CategoryTree.php.html create mode 100644 documentation/api/files/Core.Template.Loop.Lang.php.html create mode 100644 documentation/api/files/Core/Event/CategoryEvent.php.txt create mode 100644 documentation/api/files/Core/Security/Exception/AuthorizationException.php.txt create mode 100644 documentation/api/files/Core/Template/Loop/CategoryTree.php.txt create mode 100644 documentation/api/files/Core/Template/Loop/Lang.php.txt create mode 100644 documentation/api/files/Form.CategoryCreationForm.php.html create mode 100644 documentation/api/files/Form.CategoryDeletionForm.php.html create mode 100644 documentation/api/files/Form/CategoryCreationForm.php.txt create mode 100644 documentation/api/files/Form/CategoryDeletionForm.php.txt create mode 100644 documentation/api/files/Type.BooleanOrBothType.php.html create mode 100644 documentation/api/files/Type/BooleanOrBothType.php.txt create mode 100644 documentation/api/namespaces/Thelia.Cart.html create mode 100644 documentation/api/phpdoc-cache-0b/phpdoc-cache-file_32c9f993ba4d278f85efbdac57d30c1b.dat create mode 100644 documentation/api/phpdoc-cache-21/phpdoc-cache-file_a3643b212d0a35c0dafbee9c2bbe2c11.dat create mode 100644 documentation/api/phpdoc-cache-27/phpdoc-cache-file_c8d56734f26182bfc343d385509dbf36.dat create mode 100644 documentation/api/phpdoc-cache-3d/phpdoc-cache-file_939af359fed33854bd55e59313ec017c.dat create mode 100644 documentation/api/phpdoc-cache-4e/phpdoc-cache-file_94ccf1d6684f73c94414e65b98169089.dat create mode 100644 documentation/api/phpdoc-cache-82/phpdoc-cache-file_e66020f7c2728bce96a786b7f43edff3.dat create mode 100644 documentation/api/phpdoc-cache-95/phpdoc-cache-file_f312c17e13b5538730814011faa2fe1f.dat create mode 100644 documentation/api/phpdoc-cache-a8/phpdoc-cache-file_438820914076c4c0d905b34ead653b6a.dat create mode 100644 documentation/api/phpdoc-cache-b6/phpdoc-cache-file_c6121287de320bb66016b1b65e250000.dat create mode 100644 documentation/api/phpdoc-cache-c8/phpdoc-cache-file_0a0e3d29d89033abec119857e1df20bc.dat diff --git a/documentation/api/classes/Thelia.Action.Category.html b/documentation/api/classes/Thelia.Action.Category.html new file mode 100644 index 000000000..c2a3d2a18 --- /dev/null +++ b/documentation/api/classes/Thelia.Action.Category.html @@ -0,0 +1,2035 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\ActionCategory

+

+ + + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ create()
+ modify()
+ delete()
+ toggleVisibility()
+ getSubscribedEvents()
+
+
+ No public properties found +
+
+ No constants found +
+
+
+
+ validateForm()
+ propagateFormError()
+ redirect()
+
+
+ No protected properties found +
+
+ N/A +
+
+
+
+ No private methods found +
+
+ No private properties found +
+
+ N/A +
+
+
+
+ +
+ + + + +
+

Methods

+ +
+ +
+
+ + +
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+

delete()

+ +
delete(\Thelia\Core\Event\ActionEvent $event)
+

Delete a category

+ + + +

Parameters

+ + + + + + +
\Thelia\Core\Event\ActionEvent$event +
+ + +
+
+ +
+ +
+
+ +
+

toggleVisibility()

+ +
toggleVisibility(\Thelia\Core\Event\ActionEvent $event)
+

Toggle category visibility. No form used here

+ + + +

Parameters

+ + + + + + +
\Thelia\Core\Event\ActionEvent$event +
+ + +
+
+ +
+ +
+
+ +
+

getSubscribedEvents()

+ +
getSubscribedEvents() : array
+

Returns an array of event names this subscriber listens to.

+

The array keys are event names and the value can be:

+ +
    +
  • The method name to call (priority defaults to 0)
  • +
  • An array composed of the method name to call and the priority
  • +
  • An array of arrays composed of the method names to call and respective +priorities, or 0 if unset
  • +
+ +

For instance:

+ +
    +
  • array('eventName' => 'methodName')
  • +
  • array('eventName' => array('methodName', $priority))
  • +
  • array('eventName' => array(array('methodName1', $priority), array('methodName2'))
  • +
+ + + + +

Returns

+ array + —

The event names to listen to

+ +
+
+ +
+ +
+
+ +
+

validateForm()

+ +
validateForm(\Thelia\Form\BaseForm $aBaseForm,  $expectedMethod)
+

+ + + +

Parameters

+ + + + + + + + + + + +
\Thelia\Form\BaseForm$aBaseForm +
$expectedMethod +
+ + +
+
+ +
+ +
+
+ +
+

propagateFormError()

+ +
propagateFormError(\Thelia\Form\BaseForm $aBaseForm, string $error_message, \Thelia\Core\Event\ActionEvent $event)
+

+ + + +

Parameters

+ + + + + + + + + + + + + + + + +
\Thelia\Form\BaseForm$aBaseForm +
string$error_message +
\Thelia\Core\Event\ActionEvent$event +
+ + +
+
+ +
+ +
+
+ +
+

redirect()

+ +
redirect( $url,  $status)
+

+ + + +

Parameters

+ + + + + + + + + + + +
$url +
$status +
+ + +
+
+ +
+ +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Action.Exception.FormValidationException.html b/documentation/api/classes/Thelia.Action.Exception.FormValidationException.html new file mode 100644 index 000000000..2128fa82a --- /dev/null +++ b/documentation/api/classes/Thelia.Action.Exception.FormValidationException.html @@ -0,0 +1,1696 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\Action\ExceptionFormValidationException

+

+ + + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ No public methods found +
+
+ No public properties found +
+
+ No constants found +
+
+
+
+ No protected methods found +
+
+ No protected properties found +
+
+ N/A +
+
+
+
+ No private methods found +
+
+ No private properties found +
+
+ N/A +
+
+
+
+ +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Cart.CartTrait.html b/documentation/api/classes/Thelia.Cart.CartTrait.html new file mode 100644 index 000000000..49658c617 --- /dev/null +++ b/documentation/api/classes/Thelia.Cart.CartTrait.html @@ -0,0 +1,1692 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\CartCartTrait

+

+ + + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ No public methods found +
+
+ No public properties found +
+
+ No constants found +
+
+
+
+ No protected methods found +
+
+ No protected properties found +
+
+ N/A +
+
+
+
+ No private methods found +
+
+ No private properties found +
+
+ N/A +
+
+
+
+ +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Core.Event.CategoryEvent.html b/documentation/api/classes/Thelia.Core.Event.CategoryEvent.html new file mode 100644 index 000000000..74a14bad8 --- /dev/null +++ b/documentation/api/classes/Thelia.Core.Event.CategoryEvent.html @@ -0,0 +1,1768 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\Core\EventCategoryEvent

+

Base class used for internal event like creating new Customer, adding item to cart, etc

+

Class InternalEvent

+ + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ __construct()
+
+
+ $category
+
+
+ No constants found +
+
+
+
+ No protected methods found +
+
+ No protected properties found +
+
+ N/A +
+
+
+
+ No private methods found +
+
+ No private properties found +
+
+ N/A +
+
+
+
+ +
+ + + +
+
+

Properties

+
+ +
+ +
+
+ +
+

$category

+
$category
+

+ + + +
+
+ +
+ + + +
+

Methods

+ +
+ +
+
+ +
+

__construct()

+ +
__construct(\Thelia\Model\Category $category)
+

+ + + +

Parameters

+ + + + + + +
\Thelia\Model\Category$category +
+ + +
+
+ +
+ +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Core.Security.Exception.AuthorizationException.html b/documentation/api/classes/Thelia.Core.Security.Exception.AuthorizationException.html new file mode 100644 index 000000000..d56bc0cbe --- /dev/null +++ b/documentation/api/classes/Thelia.Core.Security.Exception.AuthorizationException.html @@ -0,0 +1,1694 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\Core\Security\ExceptionAuthorizationException

+

+ + + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ No public methods found +
+
+ No public properties found +
+
+ No constants found +
+
+
+
+ No protected methods found +
+
+ No protected properties found +
+
+ N/A +
+
+
+
+ No private methods found +
+
+ No private properties found +
+
+ N/A +
+
+
+
+ +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Core.Template.Loop.CategoryTree.html b/documentation/api/classes/Thelia.Core.Template.Loop.CategoryTree.html new file mode 100644 index 000000000..7a2fb1a8e --- /dev/null +++ b/documentation/api/classes/Thelia.Core.Template.Loop.CategoryTree.html @@ -0,0 +1,2398 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\Core\Template\LoopCategoryTree

+

Category tree loop, to get a category tree from a given category to a given depth.

+
    +
  • category is the category id
  • +
  • depth is the maximum depth to go, default unlimited
  • +
  • visible if true or missing, only visible categories will be displayed. If false, all categories (visible or not) are returned.
  • +
+ + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ exec()
+ __construct()
+ __call()
+ initializeArgs()
+ getArg()
+ getArgValue()
+ search()
+ searchWithOffset()
+ searchWithPagination()
+
+
+ No public properties found +
+
+ No constants found +
+
+
+
+ getArgDefinitions()
+ buildCategoryTree()
+ getDefaultArgs()
+
+
+ $request
+ $dispatcher
+ $securityContext
+ $args
+
+
+ N/A +
+
+
+
+ No private methods found +
+
+ No private properties found +
+
+ N/A +
+
+
+
+ +
+ + + +
+
+

Properties

+
+ +
+ +
+
+ +
+

$request

+
$request : \Symfony\Component\HttpFoundation\Request
+

+ + + +

Type

+ \Symfony\Component\HttpFoundation\Request +
+
+ +
+ +
+
+ +
+

$dispatcher

+
$dispatcher : \Symfony\Component\EventDispatcher\EventDispatcherInterface
+

+ + + +

Type

+ \Symfony\Component\EventDispatcher\EventDispatcherInterface +
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+

$args

+
$args
+

+ + + +
+
+ +
+ + + +
+

Methods

+ +
+ +
+
+ +
+

exec()

+ +
exec(mixed $pagination) : mixed
+

this function have to be implement in your own loop class.

+

All your parameters are defined in defineArgs() and can be accessible like a class property.

+ +

example :

+ +

public function defineArgs() +{ + return array ( + "ref", + "id" => "optional", + "stock" => array( + "optional", + "default" => 10 + ) + ); +}

+ +

you can retrieve ref value using $this->ref

+ + +

Parameters

+ + + + + + +
mixed$pagination +
+ + +

Returns

+ mixed +
+
+ +
+ +
+
+ +
+

__construct()

+ +
__construct(\Symfony\Component\HttpFoundation\Request $request, \Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher, \Thelia\Core\Security\SecurityContext $securityContext)
+

Create a new Loop

+ + + +

Parameters

+ + + + + + + + + + + + + + + + +
\Symfony\Component\HttpFoundation\Request$request +
\Symfony\Component\EventDispatcher\EventDispatcherInterface$dispatcher +
\Thelia\Core\Security\SecurityContext$securityContext +
+ + +
+
+ +
+ +
+
+ +
+

__call()

+ +
__call(string $name, mixed $arguments) : null
+

Provides a getter to loop parameters

+ + + +

Parameters

+ + + + + + + + + + + +
string$name

the methode name (only getArgname is supported)

+
mixed$arguments

this parameter is ignored

+
+ +

Throws

+
+
\InvalidArgumentException
+

if the parameter is unknown or the method name is not supported.

+
+
+ +

Returns

+ null +
+
+ +
+ +
+
+ +
+

initializeArgs()

+ +
initializeArgs(array $nameValuePairs)
+

Initialize the loop arguments.

+ + + +

Parameters

+ + + + + + +
array$nameValuePairs

a array of name => value pairs. The name is the name of the argument.

+
+ +

Throws

+
+
\InvalidArgumentException
+

if somùe argument values are missing, or invalid

+
+
+ +
+
+ +
+ +
+
+ +
+

getArg()

+ +
getArg(string $argumentName) : \Thelia\Core\Template\Loop\Argument\Argument
+

Return a loop argument

+ + + +

Parameters

+ + + + + + +
string$argumentName

the argument name

+
+ +

Throws

+
+
\InvalidArgumentException
+

if argument is not found in loop argument list

+
+
+ +

Returns

+ \Thelia\Core\Template\Loop\Argument\Argument + —

the loop argument.

+ +
+
+ +
+ +
+
+ +
+

getArgValue()

+ +
getArgValue(string $argumentName) : \Thelia\Core\Template\Loop\Argument\Argument
+

Return a loop argument value

+ + + +

Parameters

+ + + + + + +
string$argumentName

the argument name

+
+ +

Throws

+
+
\InvalidArgumentException
+

if argument is not found in loop argument list

+
+
+ +

Returns

+ \Thelia\Core\Template\Loop\Argument\Argument + —

the loop argument.

+ +
+
+ +
+ +
+
+ +
+

search()

+ +
search(\ModelCriteria $search, null $pagination) : array|mixed|\PropelModelPager|\PropelObjectCollection
+

+ + + +

Parameters

+ + + + + + + + + + + +
\ModelCriteria$search +
null$pagination +
+ + +

Returns

+ array|mixed|\PropelModelPager|\PropelObjectCollection +
+
+ +
+ +
+
+ +
+

searchWithOffset()

+ +
searchWithOffset(\ModelCriteria $search) : array|mixed|\PropelObjectCollection
+

+ + + +

Parameters

+ + + + + + +
\ModelCriteria$search +
+ + +

Returns

+ array|mixed|\PropelObjectCollection +
+
+ +
+ +
+
+ +
+

searchWithPagination()

+ +
searchWithPagination(\ModelCriteria $search, mixed $pagination) : array|\PropelModelPager
+

+ + + +

Parameters

+ + + + + + + + + + + +
\ModelCriteria$search +
mixed$pagination +
+ + +

Returns

+ array|\PropelModelPager +
+
+ +
+ +
+
+ +
+

getArgDefinitions()

+ +
getArgDefinitions() : \Thelia\Core\Template\Loop\Argument\ArgumentCollection
+

define all args used in your loop

+

array key is your arg name.

+ +

example :

+ +

return array ( + "ref", + "id" => "optional", + "stock" => array( + "optional", + "default" => 10 + ) +);

+ + + + +

Returns

+ \Thelia\Core\Template\Loop\Argument\ArgumentCollection +
+
+ +
+ +
+
+ +
+

buildCategoryTree()

+ +
buildCategoryTree( $parent,  $visible,  $level,  $max_level, array $exclude, \Thelia\Core\Template\Element\LoopResult $loopResult)
+

+ + + +

Parameters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$parent +
$visible +
$level +
$max_level +
array$exclude +
\Thelia\Core\Template\Element\LoopResult$loopResult +
+ + +
+
+ +
+ +
+
+ +
+

getDefaultArgs()

+ +
getDefaultArgs() : \Thelia\Core\Template\Loop\Argument\Argument[]
+

Define common loop arguments

+ + + + + +

Returns

+ \Thelia\Core\Template\Loop\Argument\Argument[] +
+
+ +
+ +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Core.Template.Loop.Lang.html b/documentation/api/classes/Thelia.Core.Template.Loop.Lang.html new file mode 100644 index 000000000..2f3c5b7ce --- /dev/null +++ b/documentation/api/classes/Thelia.Core.Template.Loop.Lang.html @@ -0,0 +1,2332 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\Core\Template\LoopLang

+

Language loop, to get a list of available languages

+
    +
  • id is the language id
  • +
  • exclude is a comma separated list of lang IDs that will be excluded from output
  • +
  • default if 1, the loop return only default lang. If 0, return all but the default language
  • +
+ + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ exec()
+ __construct()
+ __call()
+ initializeArgs()
+ getArg()
+ getArgValue()
+ search()
+ searchWithOffset()
+ searchWithPagination()
+
+
+ No public properties found +
+
+ No constants found +
+
+
+
+ getArgDefinitions()
+ getDefaultArgs()
+
+
+ $request
+ $dispatcher
+ $securityContext
+ $args
+
+
+ N/A +
+
+
+
+ No private methods found +
+
+ No private properties found +
+
+ N/A +
+
+
+
+ +
+ + + +
+
+

Properties

+
+ +
+ +
+
+ +
+

$request

+
$request : \Symfony\Component\HttpFoundation\Request
+

+ + + +

Type

+ \Symfony\Component\HttpFoundation\Request +
+
+ +
+ +
+
+ +
+

$dispatcher

+
$dispatcher : \Symfony\Component\EventDispatcher\EventDispatcherInterface
+

+ + + +

Type

+ \Symfony\Component\EventDispatcher\EventDispatcherInterface +
+
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+

$args

+
$args
+

+ + + +
+
+ +
+ + + +
+

Methods

+ +
+ +
+
+ +
+

exec()

+ +
exec(mixed $pagination) : mixed
+

this function have to be implement in your own loop class.

+

All your parameters are defined in defineArgs() and can be accessible like a class property.

+ +

example :

+ +

public function defineArgs() +{ + return array ( + "ref", + "id" => "optional", + "stock" => array( + "optional", + "default" => 10 + ) + ); +}

+ +

you can retrieve ref value using $this->ref

+ + +

Parameters

+ + + + + + +
mixed$pagination +
+ + +

Returns

+ mixed +
+
+ +
+ +
+
+ +
+

__construct()

+ +
__construct(\Symfony\Component\HttpFoundation\Request $request, \Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher, \Thelia\Core\Security\SecurityContext $securityContext)
+

Create a new Loop

+ + + +

Parameters

+ + + + + + + + + + + + + + + + +
\Symfony\Component\HttpFoundation\Request$request +
\Symfony\Component\EventDispatcher\EventDispatcherInterface$dispatcher +
\Thelia\Core\Security\SecurityContext$securityContext +
+ + +
+
+ +
+ +
+
+ +
+

__call()

+ +
__call(string $name, mixed $arguments) : null
+

Provides a getter to loop parameters

+ + + +

Parameters

+ + + + + + + + + + + +
string$name

the methode name (only getArgname is supported)

+
mixed$arguments

this parameter is ignored

+
+ +

Throws

+
+
\InvalidArgumentException
+

if the parameter is unknown or the method name is not supported.

+
+
+ +

Returns

+ null +
+
+ +
+ +
+
+ +
+

initializeArgs()

+ +
initializeArgs(array $nameValuePairs)
+

Initialize the loop arguments.

+ + + +

Parameters

+ + + + + + +
array$nameValuePairs

a array of name => value pairs. The name is the name of the argument.

+
+ +

Throws

+
+
\InvalidArgumentException
+

if somùe argument values are missing, or invalid

+
+
+ +
+
+ +
+ +
+
+ +
+

getArg()

+ +
getArg(string $argumentName) : \Thelia\Core\Template\Loop\Argument\Argument
+

Return a loop argument

+ + + +

Parameters

+ + + + + + +
string$argumentName

the argument name

+
+ +

Throws

+
+
\InvalidArgumentException
+

if argument is not found in loop argument list

+
+
+ +

Returns

+ \Thelia\Core\Template\Loop\Argument\Argument + —

the loop argument.

+ +
+
+ +
+ +
+
+ +
+

getArgValue()

+ +
getArgValue(string $argumentName) : \Thelia\Core\Template\Loop\Argument\Argument
+

Return a loop argument value

+ + + +

Parameters

+ + + + + + +
string$argumentName

the argument name

+
+ +

Throws

+
+
\InvalidArgumentException
+

if argument is not found in loop argument list

+
+
+ +

Returns

+ \Thelia\Core\Template\Loop\Argument\Argument + —

the loop argument.

+ +
+
+ +
+ +
+
+ +
+

search()

+ +
search(\ModelCriteria $search, null $pagination) : array|mixed|\PropelModelPager|\PropelObjectCollection
+

+ + + +

Parameters

+ + + + + + + + + + + +
\ModelCriteria$search +
null$pagination +
+ + +

Returns

+ array|mixed|\PropelModelPager|\PropelObjectCollection +
+
+ +
+ +
+
+ +
+

searchWithOffset()

+ +
searchWithOffset(\ModelCriteria $search) : array|mixed|\PropelObjectCollection
+

+ + + +

Parameters

+ + + + + + +
\ModelCriteria$search +
+ + +

Returns

+ array|mixed|\PropelObjectCollection +
+
+ +
+ +
+
+ +
+

searchWithPagination()

+ +
searchWithPagination(\ModelCriteria $search, mixed $pagination) : array|\PropelModelPager
+

+ + + +

Parameters

+ + + + + + + + + + + +
\ModelCriteria$search +
mixed$pagination +
+ + +

Returns

+ array|\PropelModelPager +
+
+ +
+ +
+
+ +
+

getArgDefinitions()

+ +
getArgDefinitions() : \Thelia\Core\Template\Loop\Argument\ArgumentCollection
+

define all args used in your loop

+

array key is your arg name.

+ +

example :

+ +

return array ( + "ref", + "id" => "optional", + "stock" => array( + "optional", + "default" => 10 + ) +);

+ + + + +

Returns

+ \Thelia\Core\Template\Loop\Argument\ArgumentCollection +
+
+ +
+ +
+
+ +
+

getDefaultArgs()

+ +
getDefaultArgs() : \Thelia\Core\Template\Loop\Argument\Argument[]
+

Define common loop arguments

+ + + + + +

Returns

+ \Thelia\Core\Template\Loop\Argument\Argument[] +
+
+ +
+ +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Form.CategoryCreationForm.html b/documentation/api/classes/Thelia.Form.CategoryCreationForm.html new file mode 100644 index 000000000..a44ca0e95 --- /dev/null +++ b/documentation/api/classes/Thelia.Form.CategoryCreationForm.html @@ -0,0 +1,2339 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\FormCategoryCreationForm

+

+ + + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ getName()
+ __construct()
+ getRequest()
+ getSuccessUrl()
+ createView()
+ getView()
+ setError()
+ hasError()
+ setErrorMessage()
+ getErrorMessage()
+ getForm()
+
+
+ No public properties found +
+
+ No constants found +
+
+
+
+ buildForm()
+ cleanOptions()
+
+
+ $formBuilder
+ $form
+ $request
+
+
+ N/A +
+
+
+
+ No private methods found +
+
+ $view
+ $has_error
+ $error_message
+
+
+ N/A +
+
+
+
+ +
+ + + +
+
+

Properties

+
+ +
+ +
+
+ +
+

$formBuilder

+
$formBuilder : \Symfony\Component\Form\FormFactoryInterface
+

+ + + +

Type

+ \Symfony\Component\Form\FormFactoryInterface +
+
+ +
+ +
+
+ +
+

$form

+
$form : \Symfony\Component\Form\Form
+

+ + + +

Type

+ \Symfony\Component\Form\Form +
+
+ +
+ +
+
+ +
+

$request

+
$request
+

+ + + +
+
+ +
+ +
+
+ +
+

$view

+
$view
+

+ + + +
+
+ +
+ +
+
+ +
+

$has_error

+
$has_error : boolean
+

true if the form has an error, false otherwise.

+ + + +

Type

+ boolean +
+
+ +
+ +
+
+ +
+

$error_message

+
$error_message : string
+

The form error message.

+ + + +

Type

+ string +
+
+ +
+ + + +
+

Methods

+ +
+ +
+
+ +
+

getName()

+ +
getName() : string
+

+ + + + + +

Returns

+ string + —

the name of you form. This name must be unique

+ +
+
+ +
+ +
+
+ +
+

__construct()

+ +
__construct(\Symfony\Component\HttpFoundation\Request $request,  $type,  $data,  $options)
+

+ + + +

Parameters

+ + + + + + + + + + + + + + + + + + + + + +
\Symfony\Component\HttpFoundation\Request$request +
$type +
$data +
$options +
+ + +
+
+ +
+ +
+
+ +
+

getRequest()

+ +
getRequest()
+

+ + + + + +
+
+ +
+ +
+
+ +
+

getSuccessUrl()

+ +
getSuccessUrl(string $default) : string
+

Returns the absolute URL to redirect the user to if the form is successfully processed.

+ + + +

Parameters

+ + + + + + +
string$default

the default URL. If not given, the configured base URL is used.

+
+ + +

Returns

+ string + —

an absolute URL

+ +
+
+ +
+ +
+
+ +
+

createView()

+ +
createView()
+

+ + + + + +
+
+ +
+ +
+
+ +
+

getView()

+ +
getView()
+

+ + + + + +
+
+ +
+ +
+
+ +
+

setError()

+ +
setError(boolean $has_error)
+

Set the error status of the form.

+ + + +

Parameters

+ + + + + + +
boolean$has_error +
+ + +
+
+ +
+ +
+
+ +
+

hasError()

+ +
hasError() : boolean
+

Get the cuirrent error status of the form.

+ + + + + +

Returns

+ boolean +
+
+ +
+ +
+
+ +
+

setErrorMessage()

+ +
setErrorMessage(\Thelia\Form\unknown $message)
+

Set the error message related to global form error

+ + + +

Parameters

+ + + + + + +
\Thelia\Form\unknown$message +
+ + +
+
+ +
+ +
+
+ +
+

getErrorMessage()

+ +
getErrorMessage() : string
+

Get the form error message.

+ + + + + +

Returns

+ string +
+
+ +
+ +
+
+ +
+

getForm()

+ +
getForm() : \Symfony\Component\Form\Form
+

+ + + + + +

Returns

+ \Symfony\Component\Form\Form +
+
+ +
+ +
+
+ +
+

buildForm()

+ +
buildForm() : null
+

in this function you add all the fields you need for your Form.

+

Form this you have to call add method on $this->formBuilder attribute :

+ +

$this->formBuilder->add("name", "text") + ->add("email", "email", array( + "attr" => array( + "class" => "field" + ), + "label" => "email", + "constraints" => array( + new \Symfony\Component\Validator\Constraints\NotBlank() + ) + ) + ) + ->add('age', 'integer');

+ + + + +

Returns

+ null +
+
+ +
+ +
+
+ +
+

cleanOptions()

+ +
cleanOptions( $options)
+

+ + + +

Parameters

+ + + + + + +
$options +
+ + +
+
+ +
+ +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Form.CategoryDeletionForm.html b/documentation/api/classes/Thelia.Form.CategoryDeletionForm.html new file mode 100644 index 000000000..1c71a632b --- /dev/null +++ b/documentation/api/classes/Thelia.Form.CategoryDeletionForm.html @@ -0,0 +1,2339 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\FormCategoryDeletionForm

+

+ + + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ getName()
+ __construct()
+ getRequest()
+ getSuccessUrl()
+ createView()
+ getView()
+ setError()
+ hasError()
+ setErrorMessage()
+ getErrorMessage()
+ getForm()
+
+
+ No public properties found +
+
+ No constants found +
+
+
+
+ buildForm()
+ cleanOptions()
+
+
+ $formBuilder
+ $form
+ $request
+
+
+ N/A +
+
+
+
+ No private methods found +
+
+ $view
+ $has_error
+ $error_message
+
+
+ N/A +
+
+
+
+ +
+ + + +
+
+

Properties

+
+ +
+ +
+
+ +
+

$formBuilder

+
$formBuilder : \Symfony\Component\Form\FormFactoryInterface
+

+ + + +

Type

+ \Symfony\Component\Form\FormFactoryInterface +
+
+ +
+ +
+
+ +
+

$form

+
$form : \Symfony\Component\Form\Form
+

+ + + +

Type

+ \Symfony\Component\Form\Form +
+
+ +
+ +
+
+ +
+

$request

+
$request
+

+ + + +
+
+ +
+ +
+
+ +
+

$view

+
$view
+

+ + + +
+
+ +
+ +
+
+ +
+

$has_error

+
$has_error : boolean
+

true if the form has an error, false otherwise.

+ + + +

Type

+ boolean +
+
+ +
+ +
+
+ +
+

$error_message

+
$error_message : string
+

The form error message.

+ + + +

Type

+ string +
+
+ +
+ + + +
+

Methods

+ +
+ +
+
+ +
+

getName()

+ +
getName() : string
+

+ + + + + +

Returns

+ string + —

the name of you form. This name must be unique

+ +
+
+ +
+ +
+
+ +
+

__construct()

+ +
__construct(\Symfony\Component\HttpFoundation\Request $request,  $type,  $data,  $options)
+

+ + + +

Parameters

+ + + + + + + + + + + + + + + + + + + + + +
\Symfony\Component\HttpFoundation\Request$request +
$type +
$data +
$options +
+ + +
+
+ +
+ +
+
+ +
+

getRequest()

+ +
getRequest()
+

+ + + + + +
+
+ +
+ +
+
+ +
+

getSuccessUrl()

+ +
getSuccessUrl(string $default) : string
+

Returns the absolute URL to redirect the user to if the form is successfully processed.

+ + + +

Parameters

+ + + + + + +
string$default

the default URL. If not given, the configured base URL is used.

+
+ + +

Returns

+ string + —

an absolute URL

+ +
+
+ +
+ +
+
+ +
+

createView()

+ +
createView()
+

+ + + + + +
+
+ +
+ +
+
+ +
+

getView()

+ +
getView()
+

+ + + + + +
+
+ +
+ +
+
+ +
+

setError()

+ +
setError(boolean $has_error)
+

Set the error status of the form.

+ + + +

Parameters

+ + + + + + +
boolean$has_error +
+ + +
+
+ +
+ +
+
+ +
+

hasError()

+ +
hasError() : boolean
+

Get the cuirrent error status of the form.

+ + + + + +

Returns

+ boolean +
+
+ +
+ +
+
+ +
+

setErrorMessage()

+ +
setErrorMessage(\Thelia\Form\unknown $message)
+

Set the error message related to global form error

+ + + +

Parameters

+ + + + + + +
\Thelia\Form\unknown$message +
+ + +
+
+ +
+ +
+
+ +
+

getErrorMessage()

+ +
getErrorMessage() : string
+

Get the form error message.

+ + + + + +

Returns

+ string +
+
+ +
+ +
+
+ +
+

getForm()

+ +
getForm() : \Symfony\Component\Form\Form
+

+ + + + + +

Returns

+ \Symfony\Component\Form\Form +
+
+ +
+ +
+
+ +
+

buildForm()

+ +
buildForm() : null
+

in this function you add all the fields you need for your Form.

+

Form this you have to call add method on $this->formBuilder attribute :

+ +

$this->formBuilder->add("name", "text") + ->add("email", "email", array( + "attr" => array( + "class" => "field" + ), + "label" => "email", + "constraints" => array( + new \Symfony\Component\Validator\Constraints\NotBlank() + ) + ) + ) + ->add('age', 'integer');

+ + + + +

Returns

+ null +
+
+ +
+ +
+
+ +
+

cleanOptions()

+ +
cleanOptions( $options)
+

+ + + +

Parameters

+ + + + + + +
$options +
+ + +
+
+ +
+ +
+
+ + + + +
+ + + diff --git a/documentation/api/classes/Thelia.Type.BooleanOrBothType.html b/documentation/api/classes/Thelia.Type.BooleanOrBothType.html new file mode 100644 index 000000000..1ee59083b --- /dev/null +++ b/documentation/api/classes/Thelia.Type.BooleanOrBothType.html @@ -0,0 +1,1834 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

\Thelia\TypeBooleanOrBothType

+

This filter accepts either a boolean value, or '*' which means both, true and false

+ + + +
+

Summary

+
+
+ Methods +
+
+ Properties +
+
+ Constants +
+
+
+
+ getType()
+ isValid()
+ getFormattedValue()
+
+
+ No public properties found +
+
+ ANY
+
+
+
+
+ No protected methods found +
+
+ No protected properties found +
+
+ N/A +
+
+
+
+ No private methods found +
+
+ No private properties found +
+
+ N/A +
+
+
+
+ +
+ + +
+
+

Constants

+
+ +
+ +
+
+ +
+

ANY

+
ANY
+

+ + +
+
+ +
+ + + + +
+

Methods

+ +
+ +
+
+ +
+

getType()

+ +
getType()
+

+ + + + + +
+
+ +
+ +
+
+ +
+

isValid()

+ +
isValid( $value)
+

+ + + +

Parameters

+ + + + + + +
$value +
+ + +
+
+ +
+ +
+
+ +
+

getFormattedValue()

+ +
getFormattedValue( $value)
+

+ + + +

Parameters

+ + + + + + +
$value +
+ + +
+
+ +
+ +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Action.Category.php.html b/documentation/api/files/Action.Category.php.html new file mode 100644 index 000000000..7d321a48f --- /dev/null +++ b/documentation/api/files/Action.Category.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

ActionCategory.php

+

+ + + + + +

Classes

+ + + + + +
Category
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Action.Exception.FormValidationException.php.html b/documentation/api/files/Action.Exception.FormValidationException.php.html new file mode 100644 index 000000000..8f7f6c8e4 --- /dev/null +++ b/documentation/api/files/Action.Exception.FormValidationException.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

Action/ExceptionFormValidationException.php

+

+ + + + + +

Classes

+ + + + + +
FormValidationException
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Action/Category.php.txt b/documentation/api/files/Action/Category.php.txt new file mode 100644 index 000000000..bac17bb50 --- /dev/null +++ b/documentation/api/files/Action/Category.php.txt @@ -0,0 +1,254 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Action; + +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Thelia\Core\Event\ActionEvent; +use Thelia\Core\Event\TheliaEvents; +use Thelia\Model\Category as CategoryModel; +use Thelia\Form\CategoryCreationForm; +use Thelia\Core\Event\CategoryEvent; +use Thelia\Tools\Redirect; +use Thelia\Model\CategoryQuery; +use Thelia\Model\AdminLog; +use Thelia\Form\CategoryDeletionForm; +use Thelia\Action\Exception\FormValidationException; + +class Category extends BaseAction implements EventSubscriberInterface +{ + public function create(ActionEvent $event) + { + $request = $event->getRequest(); + + try { + $categoryCreationForm = new CategoryCreationForm($request); + + $form = $this->validateForm($categoryCreationForm, "POST"); + + $data = $form->getData(); + + $category = new CategoryModel(); + + $event->getDispatcher()->dispatch(TheliaEvents::BEFORE_CREATECATEGORY, $event); + + $category->create( + $data["title"], + $data["parent"], + $data["locale"] + ); + + AdminLog::append(sprintf("Category %s (ID %s) created", $category->getTitle(), $category->getId()), $request, $request->getSession()->getAdminUser()); + + $categoryEvent = new CategoryEvent($category); + + $event->getDispatcher()->dispatch(TheliaEvents::AFTER_CREATECATEGORY, $categoryEvent); + + // Substitute _ID_ in the URL with the ID of the created category + $successUrl = str_replace('_ID_', $category->getId(), $categoryCreationForm->getSuccessUrl()); + + // Redirect to the success URL + Redirect::exec($successUrl); + + } catch (PropelException $e) { + Tlog::getInstance()->error(sprintf('error during creating category with message "%s"', $e->getMessage())); + + $message = "Failed to create this category, please try again."; + } + + // The form has errors, propagate it. + $this->propagateFormError($categoryCreationForm, $message, $event); + } + + public function modify(ActionEvent $event) + { + /* + $request = $event->getRequest(); + + $customerModification = new CustomerModification($request); + + $form = $customerModification->getForm(); + + if ($request->isMethod("post")) { + + $form->bind($request); + + if ($form->isValid()) { + $data = $form->getData(); + + $customer = CustomerQuery::create()->findPk(1); + try { + $customerEvent = new CustomerEvent($customer); + $event->getDispatcher()->dispatch(TheliaEvents::BEFORE_CHANGECUSTOMER, $customerEvent); + + $data = $form->getData(); + + $customer->createOrUpdate( + $data["title"], + $data["firstname"], + $data["lastname"], + $data["address1"], + $data["address2"], + $data["address3"], + $data["phone"], + $data["cellphone"], + $data["zipcode"], + $data["country"] + ); + + $customerEvent->customer = $customer; + $event->getDispatcher()->dispatch(TheliaEvents::AFTER_CHANGECUSTOMER, $customerEvent); + + // Update the logged-in user, and redirect to the success URL (exits) + // We don-t send the login event, as the customer si already logged. + $this->processSuccessfullLogin($event, $customer, $customerModification); + } + catch(PropelException $e) { + + Tlog::getInstance()->error(sprintf('error during modifying customer on action/modifyCustomer with message "%s"', $e->getMessage())); + + $message = "Failed to change your account, please try again."; + } + } + else { + $message = "Missing or invalid data"; + } + } + else { + $message = "Wrong form method !"; + } + + // The form has an error + $customerModification->setError(true); + $customerModification->setErrorMessage($message); + + // Dispatch the errored form + $event->setErrorForm($customerModification); + */ + } + + /** + * Delete a category + * + * @param ActionEvent $event + */ + public function delete(ActionEvent $event) + { + $request = $event->getRequest(); + + try { + $categoryDeletionForm = new CategoryDeletionForm($request); + + $form = $this->validateForm($categoryDeletionForm, "POST"); + + $data = $form->getData(); + + $category = CategoryQuery::create()->findPk($data['id']); + + $categoryEvent = new CategoryEvent($category); + + $event->getDispatcher()->dispatch(TheliaEvents::BEFORE_DELETECATEGORY, $categoryEvent); + + $category->delete(); + + AdminLog::append(sprintf("Category %s (ID %s) deleted", $category->getTitle(), $category->getId()), $request, $request->getSession()->getAdminUser()); + + $categoryEvent->category = $category; + + $event->getDispatcher()->dispatch(TheliaEvents::AFTER_DELETECATEGORY, $categoryEvent); + + // Substitute _ID_ in the URL with the ID of the created category + $successUrl = str_replace('_ID_', $category->getParent(), $categoryDeletionForm->getSuccessUrl()); + + // Redirect to the success URL + Redirect::exec($successUrl); + } + catch(PropelException $e) { + + Tlog::getInstance()->error(sprintf('error during deleting category ID=%s on action/modifyCustomer with message "%s"', $data['id'], $e->getMessage())); + + $message = "Failed to change your account, please try again."; + } + catch(FormValidationException $e) { + + $message = $e->getMessage(); + } + + $this->propagateFormError($categoryDeletionForm, $message, $event); + } + + /** + * Toggle category visibility. No form used here + * + * @param ActionEvent $event + */ + public function toggleVisibility(ActionEvent $event) + { + $request = $event->getRequest(); + + $category = CategoryQuery::create()->findPk($request->get('id', 0)); + + if ($category !== null) { + + $category->setVisible($category->getVisible() ? false : true); + + $category->save(); + + $categoryEvent = new CategoryEvent($category); + + $event->getDispatcher()->dispatch(TheliaEvents::AFTER_CHANGECATEGORY, $categoryEvent); + } + } + + /** + * Returns an array of event names this subscriber listens to. + * + * The array keys are event names and the value can be: + * + * * The method name to call (priority defaults to 0) + * * An array composed of the method name to call and the priority + * * An array of arrays composed of the method names to call and respective + * priorities, or 0 if unset + * + * For instance: + * + * * array('eventName' => 'methodName') + * * array('eventName' => array('methodName', $priority)) + * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) + * + * @return array The event names to listen to + * + * @api + */ + public static function getSubscribedEvents() + { + return array( + "action.createCategory" => array("create", 128), + "action.modifyCategory" => array("modify", 128), + "action.deleteCategory" => array("delete", 128), + + "action.toggleCategoryVisibility" => array("toggleVisibility", 128), + ); + } +} + diff --git a/documentation/api/files/Action/Exception/FormValidationException.php.txt b/documentation/api/files/Action/Exception/FormValidationException.php.txt new file mode 100644 index 000000000..76886a3d9 --- /dev/null +++ b/documentation/api/files/Action/Exception/FormValidationException.php.txt @@ -0,0 +1,29 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Action\Exception; + + +class FormValidationException extends ActionException +{ +} diff --git a/documentation/api/files/Cart.CartTrait.php.html b/documentation/api/files/Cart.CartTrait.php.html new file mode 100644 index 000000000..b928abad6 --- /dev/null +++ b/documentation/api/files/Cart.CartTrait.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

CartCartTrait.php

+

+ + + +

Traits

+ + + + + +
CartTrait
+ + +
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Cart/CartTrait.php.txt b/documentation/api/files/Cart/CartTrait.php.txt new file mode 100644 index 000000000..472275c33 --- /dev/null +++ b/documentation/api/files/Cart/CartTrait.php.txt @@ -0,0 +1,138 @@ +. */ +/* */ +/*************************************************************************************/ +namespace Thelia\Cart; + +use Thelia\Model\ProductPrice; +use Thelia\Model\ProductPriceQuery; +use Thelia\Model\CartItem; +use Thelia\Model\CartItemQuery; +use Thelia\Model\CartQuery; +use Thelia\Model\Cart as CartModel; +use Thelia\Model\ConfigQuery; +use Thelia\Model\Customer; +use Symfony\Component\HttpFoundation\Request; +use Thelia\Core\HttpFoundation\Session\Session; +use Thelia\Core\Event\CartEvent; +use Thelia\Core\Event\TheliaEvents; + +trait CartTrait { + /** + * + * search if cart already exists in session. If not try to create a new one or duplicate an old one. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @return \Thelia\Model\Cart + */ + public function getCart(Request $request) + { + + if(null !== $cart = $request->getSession()->getCart()){ + return $cart; + } + + if ($request->cookies->has("thelia_cart")) { + //le cookie de panier existe, on le récupère + $token = $request->cookies->get("thelia_cart"); + + $cart = CartQuery::create()->findOneByToken($token); + + if ($cart) { + //le panier existe en base + $customer = $request->getSession()->getCustomerUser(); + + if ($customer) { + if($cart->getCustomerId() != $customer->getId()) { + //le customer du panier n'est pas le mm que celui connecté, il faut cloner le panier sans le customer_id + $cart = $this->duplicateCart($cart, $request->getSession(), $customer); + } + } else { + if ($cart->getCustomerId() != null) { + //il faut dupliquer le panier sans le customer_id + $cart = $this->duplicateCart($cart, $request->getSession()); + } + } + + } else { + $cart = $this->createCart($request->getSession()); + } + } else { + //le cookie de panier n'existe pas, il va falloir le créer et faire un enregistrement en base. + $cart = $this->createCart($request->getSession()); + } + + return $cart; + } + + /** + * @param \Thelia\Core\HttpFoundation\Session\Session $session + * @return \Thelia\Model\Cart + */ + protected function createCart(Session $session) + { + $cart = new CartModel(); + $cart->setToken($this->generateCookie()); + + if(null !== $customer = $session->getCustomerUser()) { + $cart->setCustomer($customer); + } + + $cart->save(); + + $session->setCart($cart->getId()); + + return $cart; + } + + + /** + * try to duplicate existing Cart. Customer is here to determine if this cart belong to him. + * + * @param \Thelia\Model\Cart $cart + * @param \Thelia\Core\HttpFoundation\Session\Session $session + * @param \Thelia\Model\Customer $customer + * @return \Thelia\Model\Cart + */ + protected function duplicateCart(CartModel $cart, Session $session, Customer $customer = null) + { + $newCart = $cart->duplicate($this->generateCookie(), $customer); + $session->setCart($newCart->getId()); + + $cartEvent = new CartEvent($newCart); + $this->dispatcher->dispatch(TheliaEvents::CART_DUPLICATE, $cartEvent); + + return $cartEvent->cart; + } + + protected function generateCookie() + { + $id = null; + if (ConfigQuery::read("cart.session_only", 0) == 0) { + $id = uniqid('', true); + setcookie("thelia_cart", $id, time()+ConfigQuery::read("cart.cookie_lifetime", 60*60*24*365)); + + } + + return $id; + + } +} diff --git a/documentation/api/files/Core.Event.CategoryEvent.php.html b/documentation/api/files/Core.Event.CategoryEvent.php.html new file mode 100644 index 000000000..4b329954e --- /dev/null +++ b/documentation/api/files/Core.Event.CategoryEvent.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

Core/EventCategoryEvent.php

+

+ + + + + +

Classes

+ + + + + +
CategoryEventBase class used for internal event like creating new Customer, adding item to cart, etc
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Core.Security.Exception.AuthorizationException.php.html b/documentation/api/files/Core.Security.Exception.AuthorizationException.php.html new file mode 100644 index 000000000..cc498de15 --- /dev/null +++ b/documentation/api/files/Core.Security.Exception.AuthorizationException.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

Core/Security/ExceptionAuthorizationException.php

+

+ + + + + +

Classes

+ + + + + +
AuthorizationException
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Core.Template.Loop.CategoryTree.php.html b/documentation/api/files/Core.Template.Loop.CategoryTree.php.html new file mode 100644 index 000000000..6420c6e9b --- /dev/null +++ b/documentation/api/files/Core.Template.Loop.CategoryTree.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

Core/Template/LoopCategoryTree.php

+

+ + + + + +

Classes

+ + + + + +
CategoryTreeCategory tree loop, to get a category tree from a given category to a given depth.
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Core.Template.Loop.Lang.php.html b/documentation/api/files/Core.Template.Loop.Lang.php.html new file mode 100644 index 000000000..ba2331273 --- /dev/null +++ b/documentation/api/files/Core.Template.Loop.Lang.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

Core/Template/LoopLang.php

+

+ + + + + +

Classes

+ + + + + +
LangLanguage loop, to get a list of available languages
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Core/Event/CategoryEvent.php.txt b/documentation/api/files/Core/Event/CategoryEvent.php.txt new file mode 100644 index 000000000..b674bf787 --- /dev/null +++ b/documentation/api/files/Core/Event/CategoryEvent.php.txt @@ -0,0 +1,37 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Event; + + +use Thelia\Model\Category; + +class CategoryEvent extends InternalEvent { + + public $category; + + public function __construct(Category $category) + { + $this->category = $category; + } +} diff --git a/documentation/api/files/Core/Security/Exception/AuthorizationException.php.txt b/documentation/api/files/Core/Security/Exception/AuthorizationException.php.txt new file mode 100644 index 000000000..9ca33d89d --- /dev/null +++ b/documentation/api/files/Core/Security/Exception/AuthorizationException.php.txt @@ -0,0 +1,29 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Security\Exception; + +class AuthorizationException extends \Exception +{ +} + diff --git a/documentation/api/files/Core/Template/Loop/CategoryTree.php.txt b/documentation/api/files/Core/Template/Loop/CategoryTree.php.txt new file mode 100644 index 000000000..1bc7e008e --- /dev/null +++ b/documentation/api/files/Core/Template/Loop/CategoryTree.php.txt @@ -0,0 +1,123 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Template\Loop; + +use Propel\Runtime\ActiveQuery\Criteria; +use Thelia\Core\Template\Element\BaseLoop; +use Thelia\Core\Template\Element\LoopResult; +use Thelia\Core\Template\Element\LoopResultRow; + +use Thelia\Core\Template\Loop\Argument\ArgumentCollection; +use Thelia\Core\Template\Loop\Argument\Argument; +use Thelia\Log\Tlog; + +use Thelia\Model\CategoryQuery; +use Thelia\Model\ConfigQuery; +use Thelia\Type\TypeCollection; +use Thelia\Type; +use Thelia\Type\BooleanOrBothType; + +/** + * + * Category tree loop, to get a category tree from a given category to a given depth. + * + * - category is the category id + * - depth is the maximum depth to go, default unlimited + * - visible if true or missing, only visible categories will be displayed. If false, all categories (visible or not) are returned. + * + * @package Thelia\Core\Template\Loop + * @author Franck Allimant + */ +class CategoryTree extends BaseLoop +{ + /** + * @return ArgumentCollection + */ + protected function getArgDefinitions() + { + return new ArgumentCollection( + Argument::createIntTypeArgument('category', null, true), + Argument::createIntTypeArgument('depth', PHP_INT_MAX), + Argument::createBooleanOrBothTypeArgument('visible', true, false), + Argument::createIntListTypeArgument('exclude', array()) + ); + } + + // changement de rubrique + protected function buildCategoryTree($parent, $visible, $level, $max_level, array $exclude, LoopResult &$loopResult) { + + if ($level > $max_level) return; + + $search = CategoryQuery::create(); + + $search->filterByParent($parent); + + if ($visible != BooleanOrBothType::ANY) $search->filterByVisible($visible); + + $search->filterById($exclude, Criteria::NOT_IN); + + $search->orderByPosition(Criteria::ASC); + + $results = $search->find(); + + foreach($results as $result) { + + $loopResultRow = new LoopResultRow(); + + $loopResultRow + ->set("ID", $result->getId()) + ->set("TITLE",$result->getTitle()) + ->set("PARENT", $result->getParent()) + ->set("URL", $result->getUrl()) + ->set("VISIBLE", $result->getVisible() ? "1" : "0") + ->set("LEVEL", $level) + ; + + $loopResult->addRow($loopResultRow); + + $this->buildCategoryTree($result->getId(), $visible, 1 + $level, $max_level, $exclude, $loopResult); + } + } + + /** + * @param $pagination (ignored) + * + * @return \Thelia\Core\Template\Element\LoopResult + */ + public function exec(&$pagination) + { + $id = $this->getCategory(); + $depth = $this->getDepth(); + $visible = $this->getVisible(); + $exclude = $this->getExclude(); + + //echo "exclude=".print_r($exclude); + + $loopResult = new LoopResult(); + + $this->buildCategoryTree($id, $visible, 0, $depth, $exclude, $loopResult); + + return $loopResult; + } +} diff --git a/documentation/api/files/Core/Template/Loop/Lang.php.txt b/documentation/api/files/Core/Template/Loop/Lang.php.txt new file mode 100644 index 000000000..f75558266 --- /dev/null +++ b/documentation/api/files/Core/Template/Loop/Lang.php.txt @@ -0,0 +1,114 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Template\Loop; + +use Propel\Runtime\ActiveQuery\Criteria; +use Thelia\Core\Template\Element\BaseLoop; +use Thelia\Core\Template\Element\LoopResult; +use Thelia\Core\Template\Element\LoopResultRow; + +use Thelia\Core\Template\Loop\Argument\Argument; + +use Thelia\Type\TypeCollection; +use Thelia\Type; +use Thelia\Model\LangQuery; +use Thelia\Core\Template\Loop\Argument\ArgumentCollection; + +/** + * Language loop, to get a list of available languages + * + * - id is the language id + * - exclude is a comma separated list of lang IDs that will be excluded from output + * - default if 1, the loop return only default lang. If 0, return all but the default language + * + * @package Thelia\Core\Template\Loop + * @author Franck Allimant + */ +class Lang extends BaseLoop +{ + /** + * @return ArgumentCollection + */ + protected function getArgDefinitions() + { + return new ArgumentCollection( + Argument::createIntTypeArgument('id', null), + Argument::createIntListTypeArgument('exclude'), + Argument::createBooleanTypeArgument('default_only', false) + ); + } + + /** + * @param $pagination (ignored) + * + * @return \Thelia\Core\Template\Element\LoopResult + */ + public function exec(&$pagination) + { + $id = $this->getId(); + $exclude = $this->getExclude(); + $default_only = $this->getDefaultOnly(); + + $search = LangQuery::create(); + + if (! is_null($id)) + $search->filterById($id); + + if ($default_only) + $search->filterByByDefault(true); + + if (! is_null($exclude)) { + $search->filterById($exclude, Criteria::NOT_IN); + } + + $search->orderByPosition(Criteria::ASC); + + $results = $this->search($search, $pagination); + + $loopResult = new LoopResult(); + + foreach ($results as $result) { + + $loopResultRow = new LoopResultRow(); + + $loopResultRow + ->set("ID", $result->getId()) + ->set("TITLE",$result->getTitle()) + ->set("CODE", $result->getCode()) + ->set("LOCALE", $result->getLocale()) + ->set("URL", $result->getUrl()) + ->set("IS_DEFAULT", $result->getByDefault()) + ->set("URL", $result->getUrl()) + ->set("POSITION", $result->getPosition()) + + ->set("CREATE_DATE", $result->getCreatedAt()) + ->set("UPDATE_DATE", $result->getUpdatedAt()) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/documentation/api/files/Form.CategoryCreationForm.php.html b/documentation/api/files/Form.CategoryCreationForm.php.html new file mode 100644 index 000000000..93f90c758 --- /dev/null +++ b/documentation/api/files/Form.CategoryCreationForm.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

FormCategoryCreationForm.php

+

+ + + + + +

Classes

+ + + + + +
CategoryCreationForm
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Form.CategoryDeletionForm.php.html b/documentation/api/files/Form.CategoryDeletionForm.php.html new file mode 100644 index 000000000..9d8a9a1e8 --- /dev/null +++ b/documentation/api/files/Form.CategoryDeletionForm.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

FormCategoryDeletionForm.php

+

+ + + + + +

Classes

+ + + + + +
CategoryDeletionForm
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Form/CategoryCreationForm.php.txt b/documentation/api/files/Form/CategoryCreationForm.php.txt new file mode 100644 index 000000000..722c8873c --- /dev/null +++ b/documentation/api/files/Form/CategoryCreationForm.php.txt @@ -0,0 +1,56 @@ +. */ +/* */ +/*************************************************************************************/ +namespace Thelia\Form; + +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Validator\Constraints\NotBlank; + +class CategoryCreationForm extends BaseForm { + + protected function buildForm() + { + $this->formBuilder + ->add("title", "text", array( + "constraints" => array( + new NotBlank() + ) + )) + ->add("parent", "integer", array( + "constraints" => array( + new NotBlank() + ) + )) + ->add("locale", "text", array( + "constraints" => array( + new NotBlank() + ) + )) + ; + } + + public function getName() + { + return "thelia_category_creation"; + } +} + diff --git a/documentation/api/files/Form/CategoryDeletionForm.php.txt b/documentation/api/files/Form/CategoryDeletionForm.php.txt new file mode 100644 index 000000000..2ee2a2f78 --- /dev/null +++ b/documentation/api/files/Form/CategoryDeletionForm.php.txt @@ -0,0 +1,45 @@ +. */ +/* */ +/*************************************************************************************/ +namespace Thelia\Form; + +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Validator\Constraints\NotBlank; + +class CategoryDeletionForm extends BaseForm { + + protected function buildForm() + { + $this->formBuilder + ->add("id", "integer", array( + "constraints" => array( + new NotBlank() + ) + )) + ; + } + + public function getName() + { + return "thelia_category_deletion"; + } +} diff --git a/documentation/api/files/Type.BooleanOrBothType.php.html b/documentation/api/files/Type.BooleanOrBothType.php.html new file mode 100644 index 000000000..640358169 --- /dev/null +++ b/documentation/api/files/Type.BooleanOrBothType.php.html @@ -0,0 +1,1645 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + +

TypeBooleanOrBothType.php

+

+ + + + + +

Classes

+ + + + + +
BooleanOrBothTypeThis filter accepts either a boolean value, or '*' which means both, true and false
+
+ + +
+ + + +
+
+ + + + +
+ + + diff --git a/documentation/api/files/Type/BooleanOrBothType.php.txt b/documentation/api/files/Type/BooleanOrBothType.php.txt new file mode 100644 index 000000000..9e4447363 --- /dev/null +++ b/documentation/api/files/Type/BooleanOrBothType.php.txt @@ -0,0 +1,54 @@ +. */ +/* */ +/*************************************************************************************/ +namespace Thelia\Type; + +/** + * This filter accepts either a boolean value, or '*' which means both, true and false + * + * @author Etienne Roudeix + * + */ + +class BooleanOrBothType implements TypeInterface +{ + + const ANY = '*'; + + public function getType() + { + return 'Boolean or both type'; + } + + public function isValid($value) + { + return $value === self::ANY || filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) !== null; + } + + public function getFormattedValue($value) + { + if ($value === self::ANY) return $value; + + return $value === null ? null : filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); + } +} + diff --git a/documentation/api/namespaces/Thelia.Cart.html b/documentation/api/namespaces/Thelia.Cart.html new file mode 100644 index 000000000..1bc0eccef --- /dev/null +++ b/documentation/api/namespaces/Thelia.Cart.html @@ -0,0 +1,1583 @@ + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+ +

\TheliaCart

+ + +

Traits

+ + + + + +
CartTrait
+ + +
+ + +
+ + + +
+
+ + +
+ + + diff --git a/documentation/api/phpdoc-cache-0b/phpdoc-cache-file_32c9f993ba4d278f85efbdac57d30c1b.dat b/documentation/api/phpdoc-cache-0b/phpdoc-cache-file_32c9f993ba4d278f85efbdac57d30c1b.dat new file mode 100644 index 0000000000000000000000000000000000000000..88792902f88484cf466f011061cb6bbed76be51b GIT binary patch literal 7188 zcmeHMZExE)5boFHR}jKJBt;v)#c3vY*&HWn4YW>RJ1YVNC}`Fos>DVKwi3J?q=efO@j|lcOp_gNmz>AIM>_GD$fthO-x4lFl!e44j0fTmZ8_QF zpuY*Om|Vi0!vs-hTE}j!HlNS;Ho-387PhK5DdCQ1Op#cMsiYCX(?9|cB?3LC5;|ld z65>%#B=}5e$tH;g!Ze}WuL(&a;j>^-xKzT$ISKbc5`2H6K}L#*z+Su?T#|RdLDG<1 zB$JSNm z4z9?j?r_*0jITO~pl1R{;RaHC7R4b$LNTI}a=kF5tR5xYkEg@ldj#qp_doQH!(sntN@Q z+s^hj%AJfBQ6Tu@x+kJoaO?%_p#3>cSct`>&#{sO_;lxi2mYiX!&-oyLr-w5SCnzB zt_MONhm?OoJ6=eYBJ0+C0)K1Zz9Pp|f$@smZf_edu{dh*G=@G%xMx}fGBNI$IXk;{ z%B}r1lYcQ$eSL(IjxwK%Av65?i2DAHqnQrDc|{zJM)9vn%*D>iOf%c@mM`Iu-;N%d zXXbL4ll(n1ugvZINc}9XRxdNJVyyVwxZ@yeFa^1}XImAx6$+0&#n#qysM>nWo2^w! zc9)kO8<)FG4C#VZC}9eEfRg@72NHB5IR@CO{Ii!enV-F^%XD(oyKUQ8)@`R*WXEUJ zG0IRmopZOuE;yD4tYa&@>V&9(?sz=9>b)pDKdQZc(;S6oaS_tE%+8=ao1OXZzT#2cpAgoR8mvMp}0z*!Nc5u|czx8s{rk`bMWG@#lO0fEU!Wv9RLdMY;b6X};(p#ENE2A@wFGwlm=9pN=7-sYnC2HAQof@-_ zyKi)wNmAi%LuQh~^~ySC=t|$*6TW5MRH%!Ko_jhRzHZm+^~2?q6~3~V;ksfQBwWWb z7gKvh)Qu|c%wY{>Yw=H?awvVf%f-aR_xVBjhGJe>IM(M|(atOblV=-7vLLu{`{&BF zcB4?-|GD;zT(f*Vl51FGN`kP7W>W25DSu`Il-Gh>Pfe_(>qJ;eijulg#g!Fo=l#gq zj%#osue@3{4~tusD9-i|m}$joRZ;toJgH<-DXLMzzhf0@FN@tuTp!7dXKKDknY=a6 zzh7*=W@l|x8Ugd6qr!GS%_?k%zTkJ%s)UoHVw)OY^?A!PJL literal 0 HcmV?d00001 diff --git a/documentation/api/phpdoc-cache-21/phpdoc-cache-file_a3643b212d0a35c0dafbee9c2bbe2c11.dat b/documentation/api/phpdoc-cache-21/phpdoc-cache-file_a3643b212d0a35c0dafbee9c2bbe2c11.dat new file mode 100644 index 0000000000000000000000000000000000000000..5877c3ae59ae805db24ede883b33e5a7f3295830 GIT binary patch literal 7178 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 b7&KEv;`qzYL9*#K)6|xkGqv{rP<;Fw#%lRR literal 0 HcmV?d00001 diff --git a/documentation/api/phpdoc-cache-3d/phpdoc-cache-file_939af359fed33854bd55e59313ec017c.dat b/documentation/api/phpdoc-cache-3d/phpdoc-cache-file_939af359fed33854bd55e59313ec017c.dat new file mode 100644 index 0000000000000000000000000000000000000000..97bc6c42c945c7b68cda202555451cce197bbf57 GIT binary patch literal 9818 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 literal 0 HcmV?d00001 diff --git a/documentation/api/phpdoc-cache-82/phpdoc-cache-file_e66020f7c2728bce96a786b7f43edff3.dat b/documentation/api/phpdoc-cache-82/phpdoc-cache-file_e66020f7c2728bce96a786b7f43edff3.dat new file mode 100644 index 0000000000000000000000000000000000000000..b1a0954de61c2c1b4ff13b76d34896a55b3e3dca GIT binary patch literal 4837 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 F{}+GAE}Q@W literal 0 HcmV?d00001 diff --git a/documentation/api/phpdoc-cache-a8/phpdoc-cache-file_438820914076c4c0d905b34ead653b6a.dat b/documentation/api/phpdoc-cache-a8/phpdoc-cache-file_438820914076c4c0d905b34ead653b6a.dat new file mode 100644 index 0000000000000000000000000000000000000000..4a3565d4acaf802d061c44e5dc709df19d141ae3 GIT binary patch literal 20339 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 k@uFoxRo7nwC;R`@@x+V8m@Z$7fEQnD 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 literal 0 HcmV?d00001 diff --git a/documentation/api/phpdoc-cache-c8/phpdoc-cache-file_0a0e3d29d89033abec119857e1df20bc.dat b/documentation/api/phpdoc-cache-c8/phpdoc-cache-file_0a0e3d29d89033abec119857e1df20bc.dat new file mode 100644 index 0000000000000000000000000000000000000000..fe1d5cbc2abf315badeba69140739684692edaab GIT binary patch literal 4835 zcmeHL+iv4F5Z%}MD+YdQgRSqm$&0qGWA7SBW5ag32oRv4CCVaJBDEwHuMyoS&Vv7medqc<#3rEz&tVS(xwKu9RrItJCqS zJzq1y>w|ATP3_xI$mDMlvw)akK3_xq3<7G3a+S!WPtCY_-a*h0zvFVHe)JYk9dV)j z=V*sJk7&%uPo>Bxz?Ooy1u5Y6MY@)38EN?0{{_Y==SW1!rzJ`)gP$JYT zB54=aA_JdrkThUQOSZ@~1*U=Upe`gNB4FVsZ11z&<;LcUBgGp zsU$H>vPH~%xMV)%iUL7Z%#4a?0E_S98n~g+akkMBh5`lI{Otl|xGv$2N`?6h?XAqM zfLv4eQqcFw%3;F-?o<2j%ot$oS%X9(MH59t8^f+x9K(V_rf8VO?;qE zD#Ux?Dd4{FzQK}L|a@-xg-{RX#a--AL+ekjn#l4ms`mvu}NlOn4A+s-@%bqm4{f3>)8Q{5_@Bvhrur!cpq zd+TcQZC-o3l}g2riBg!@-!0BSziG+?1#V})v2tH|Fh#o6uvI%3^bgi|f|jdx$6ovR znckx>;+WbFq3YST%+m7Ib+}>1 z?a|7^b!N7%D!~fY;2pI1?Vh-}-4hPRtsT^5Z%f%X!Bp%io2RCybiG}QRgP;DHU?v_ z>?fgSd%?B~10+{!`q=Ue>*9+nu-+0Mbz681)XxQD$T*3&Q_Z&u8Fw`73Q{UHE5W3%?_Nf8xa_(0m;T*ld!WXF1l+@`1s<~m0lA8+*-^y ziep~uG@sIBdAR*so4Z+lqLK&}kFByrsi=myUB*)>g*^Q1$X5*W@&)eM+%559J1}Ca zUdNbhQ$ZAVXp(8`X{<|DG2>Y0G+zYn&WV9Ine@HEbo%RYqtQ6tee%e!o9My%p|L=k zdbLpzsqKd{;=w(r?uO|QScX`+4>#V14xB@f5>RD=nGx~%BuNKC}xwF&QUpI q;BXIPZ2wRAFKb+(zc-%C