Skip to content
Snippets Groups Projects
Store.rst 27.9 KiB
Newer Older
.. ==================================================
.. ==================================================
.. ==================================================
.. Header hierarchy
.. ==
..  --
..   ^^
..    ""
..     ;;
..      ,,
..
.. --------------------------------------------used to the update the records specified ------
.. Best Practice T3 reST: https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingReST/CheatSheet.html
..             Reference: https://docs.typo3.org/m/typo3/docs-how-to-document/master/en-us/WritingReST/Index.html
.. Italic *italic*
.. Bold **bold**
.. Code ``text``
.. External Links: `Bootstrap <http://getbootstrap.com/>`_
.. Internal Link: :ref:downloadButton (default url text) or :ref:`download Button<downloadButton>` (explicit url text)
.. Add Images:    .. image:: ../Images/a4.jpg
..
..
.. Admonitions
..           .. note::   .. important::     .. tip::     .. warning::
.. Color:   (blue)       (orange)           (green)      (red)
..
.. Definition:
.. some text becomes strong (only one line)
..      description has to indented

.. -*- coding: utf-8 -*- with BOM.

.. include:: Includes.txt


.. _`store`:

Store
=====

Only variables that are known in a specified store can be substituted.

+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| Name |                                       Description                                       |                                      Content                                       |
+======+=========================================================================================+====================================================================================+
| B    | :ref:`STORE_BEFORE`: Record - the current record loaded in the form before any update.  | All columns of the current record from the current table. See :ref:`STORE_BEFORE`. |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| C    | :ref:`STORE_CLIENT`: POST variable, if not found: GET variable.                         | Parameter sent from the Client (=Browser). See :ref:`STORE_CLIENT`.                |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| D    | Default values column : The *table.column* specified *default value*.                   |                                                                                    |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| E    | *Empty* - always an empty string, might be helpful if a variable is empty or undefined  | Any key                                                                            |
|      | and will be used in an SQL statement.                                                   |                                                                                    |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| F    | :ref:`STORE_FORM`: data not saved in database yet.                                      | All native *FormElements*. Recent values from the Browser. See: :ref:`STORE_FORM`  |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| L    | :ref:`STORE_LDAP`: Will be filled on demand during processing of a *FormElement*.       | Custom specified list of LDAP attributes. See :ref:`STORE_LDAP`.                   |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| M    | Column type: The *table.column* specified *type*.                                       |                                                                                    |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| P    | Parent record. E.g.: on multi & copy forms the current record of the outer query.       | All columns of the MultiSQL Statement from the table for the current row           |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| R    | :ref:`STORE_RECORD`: Record - the current record loaded in the form.                    | All columns of the current record from the current table. See :ref:`STORE_RECORD`. |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| S    | :ref:`STORE_SIP`: Client parameter 's' will indicate the current SIP, which will be     | sip, r (recordId), form. See :ref:`STORE_SIP`.                                     |
|      | loaded from the SESSION repo to the SIP-Store.                                          |                                                                                    |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| T    | :ref:`STORE_TYPO3`: a) Bodytext (ttcontent record), b) Typo3 internal variables.        | See Typo3 tt_content record configuration. See `STORE_TYPO3`_.                     |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| U    | :ref:`STORE_USER`: per user variables, valid as long as the browser session lives.      | Set via report: '...' AS '_=<var name>' See: :ref:`STORE_USER`,                    |
|      |                                                                                         | :ref:`store_user_examples`                                                         |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| V    | :ref:`STORE_VARS`: Generic variables.                                                   | See :ref:`STORE_VARS`.                                                             |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| Y    | :ref:`STORE_SYSTEM`: a) Database, b) helper vars for logging/debugging:                 | See :ref:`STORE_SYSTEM`.                                                           |
|      | SYSTEM_SQL_RAW ... SYSTEM_FORM_ELEMENT_COLUMN, c) Any custom fields: CONTACT, HELP, ... |                                                                                    |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+
| 0    | *Zero* - always value: 0, might be helpful if a variable is empty or undefined and      | Any key                                                                            |
|      | will be used in an SQL statement.                                                       |                                                                                    |
+------+-----------------------------------------------------------------------------------------+------------------------------------------------------------------------------------+

* Default *<prio>*: *FSRVD* - Form / SIP / Record / Vars / Table definition.
* Hint: Preferable, parameter should be submitted by SIP, not by Client (=URL).

  * Warning: Data submitted via 'Client' can be easily spoofed and altered.
  * Best: Data submitted via SIP never leaves the server, cannot be spoofed or altered by the user.
  * SIPs can _only_ be defined by using *Report*. Inside of *Report* use columns 'Link' (with attribute 's'), 'page?' or 'Page?'.

.. _STORE_FORM:

Store: *FORM* - F
-----------------

* Sanitized: *yes*
* Represents the values in the form, typically before saving them.
* Used for:

  * *FormElements* which will be rerendered, after a parent *FormElement* has been changed by the user.
  * *FormElement* actions, before saving the form.
  * Values will be sanitized by the class configured in corresponding the *FormElement*. By default, the sanitize class is `alnumx`.

+---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Name                            | Explanation                                                                                                                                |
+=================================+============================================================================================================================================+
| <FormElement name>              | Name of native *FormElement*. To get, exactly and only, the specified *FormElement* (for 'pId'): *{{pId:F}}*                               |
+---------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+

.. _STORE_SIP:

Store: *SIP* - S
----------------

* Sanitized: *no*
* Filled automatically by creating links. E.g.:

  * in `Report` by using `_page?` or `_link` (with active 's')
  * in `Form` by using subrecords: 'new', 'edit', 'delete' links (system) or by column type `_page?`, `_link`.

+-------------------------+-----------------------------------------------------------+
| Name                    | Explanation                                               |
+=========================+===========================================================+
| sip                     | 13 char uniqid                                            |
+-------------------------+-----------------------------------------------------------+
| r                       | current record id                                         |
+-------------------------+-----------------------------------------------------------+
| form                    | current form name                                         |
+-------------------------+-----------------------------------------------------------+
| table                   | current table name                                        |
+-------------------------+-----------------------------------------------------------+
| urlparam                | all non Typo3 parameter in one string                     |
+-------------------------+-----------------------------------------------------------+
| <user defined>          | additional user defined link parameter                    |
+-------------------------+-----------------------------------------------------------+

.. _STORE_RECORD:

Store: *RECORD* - R
-------------------


* Sanitized: *no*
* *Form*: Current record.
* *Report*: See :ref:`access-column-values`
* If r=0, all values are empty.

+------------------------+-------------------------------------------------------------------------------------------------------------------------+
| Name                   | Type     | Explanation                                                                                                  |
+========================+==========+==============================================================================================================+
| <column name>          | Form     | Name of a column of the primary table (as defined in the current form). Example: *{{pId:R}}*                 |
+------------------------+----------+--------------------------------------------------------------------------------------------------------------+
| <column name>          | Report   | Name of a column of a previous fired SQL query. Example: *{{pId:R}}*                                         |
+------------------------+----------+--------------------------------------------------------------------------------------------------------------+
| &<column name>         | Report   | Name of a column of a previous fired SQL query, typically used by columns with a :ref:`special-column-names`.|
|                        | (final)  | Final value. Example: '{{link:R}}' returns 'p:home&form=Person|s|b:success|t:Edit'.                          |
|                        |          | Whereas '{{&link:R}}' returns '<span class="btn btn-success"><a href="?home&s=badcaffee1234">Edit</a></span> |
+------------------------+----------+--------------------------------------------------------------------------------------------------------------+

.. _STORE_BEFORE:

Store: *BEFORE* - B
-------------------


* Sanitized: *no*
* Current record loaded in Form without any modification.
* If r=0, all values are empty.

This store is handy to compare new and old values of a form.

+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+
| Name                   | Explanation                                                                                                                                      |
+========================+==================================================================================================================================================+
| <column name>          | Name of a column of the primary table (as defined in the current form). To get, exactly and only, the specified form *FormElement*: *{{pId:B}}*  |
+------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+

.. _STORE_CLIENT:

Store: *CLIENT* - C
-------------------

* Sanitized: *yes*

+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
| Name                    | Explanation                                                                                                                              |
+=========================+==========================================================================================================================================+
| s                       | =SIP                                                                                                                                     |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
| r                       | record id. Only if specified as GET parameter - typically stored in SIP (=STORE_SIP)                                                     |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
| form                    | Name of form to load. Only if specified as GET parameter - typically stored in SIP (=STORE_SIP)                                          |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
| HTTP_HOST               | current HTTP HOST                                                                                                                        |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
| REMOTE_ADDR             | Client IP address                                                                                                                        |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
| All HTTP Header         | SERVER_ADDR, SERVER_NAME, SERVER_SOFTWARE,SERVER_PROTOCOL, REQUEST_METHOD, REQUEST_TIME, REQUEST_TIME_FLOAT, QUERY_STRING, DOCUMENT_ROOT,|
| variables               | HTTP_ACCEPT, HTTP_ACCEPT_CHARSET, HTTP_ACCEPT_ENCODING, HTTP_ACCEPT_LANGUAGE, HTTP_CONNECTION, HTTP_HOST, HTTP_REFERER,                  |
|                         | HTTP_USER_AGENT, HTTPS, REMOTE_ADDR, REMOTE_HOST, REMOTE_PORT, REMOTE_USER, REDIRECT_REMOTE_USER, SCRIPT_FILENAME, SERVER_ADMIN,         |
|                         | SERVER_PORT, SERVER_SIGNATURE, PATH_TRANSLATED, SCRIPT_NAME, REQUEST_URI, PHP_AUTH_DIGEST, PHP_AUTH_USER, PHP_AUTH_PW,                   |
|                         | AUTH_TYPE, PATH_INFO, ORIG_PATH_INFO                                                                                                     |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+
| Authorization           | Value of the HTTP Header 'Authorization'. This is typically not set. Mostly used for authentication of REST requests                     |
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------+



.. _STORE_TYPO3:

Store: *TYPO3* (Bodytext) - T
-----------------------------

* Sanitized: *no*

+-------------------------+-------------------------------------------------------------------+----------+
| Name                    | Explanation                                                       | Note     |
+=========================+===================================================================+==========+
| form                    | | Formname defined in ttcontent record bodytext                   | see note |
|                         | | * Fix. E.g. *form = person*                                     |          |
|                         | | * via SIP. E.g. *form = {{form:SE}}*                            |          |
+-------------------------+-------------------------------------------------------------------+----------+
| pageId                  | Record id of current Typo3 page                                   | see note |
+-------------------------+-------------------------------------------------------------------+----------+
| pageAlias               | Alias of current Typo3 page. If empty, take  pageId.              | see note |
+-------------------------+-------------------------------------------------------------------+----------+
| pageTitle               | Title of current Typo3 page                                       | see note |
+-------------------------+-------------------------------------------------------------------+----------+
| pageType                | Current selected page type (typically URL parameter 'type')       | see note |
+-------------------------+-------------------------------------------------------------------+----------+
| pageLanguage            | Current selected page language (typically URL parameter 'L')      | see note |
+-------------------------+-------------------------------------------------------------------+----------+
| ttcontentUid            | Record id of current Typo3 content element                        | see note |
+-------------------------+-------------------------------------------------------------------+----------+
| feUser                  | Logged in Typo3 FE User                                           |          |
+-------------------------+-------------------------------------------------------------------+----------+
| feUserUid               | Logged in Typo3 FE User uid                                       |          |
+-------------------------+-------------------------------------------------------------------+----------+
| feUserGroup             | FE groups of logged in Typo3 FE User                              |          |
+-------------------------+-------------------------------------------------------------------+----------+
| beUser                  | Logged in Typo3 BE User                                           |          |
+-------------------------+-------------------------------------------------------------------+----------+
| beUserLoggedIn          | 'yes' | 'no' - Status if a BE-User is logged in                   |          |
+-------------------------+-------------------------------------------------------------------+----------+

* **note**: not available:

  * in :ref:`dynamic-update` or
  * by *FormElement* class 'action' with type 'beforeSave', 'afterSave', 'beforeDelete', 'afterDelete'.

.. _STORE_VARS:

Store: *VARS* - V
-----------------

* Sanitized: *no*

+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Name                    | Explanation                                                                                                                                |
+=========================+============================================================================================================================================+
| random                  | Random string with length of 32 alphanum chars (lower & upper case). This variable is always filled. Each access gives a new value.        |
|                         | Remember: QFQ variables will be replaced **before** a SQL statement is fired. Uniqueness is given via PHP function *uniqid()*.             |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| slaveId                 | see :ref:`slave-id`                                                                                                                        |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| allRequiredGiven        | Form save - Set during check of all required FE. If every *required* FE is given: *1*. Else: *0*. If there is no required FE: *1*.         |
|                         | Even with `formModeGlobal` = `requiredOff` | `requiredOffButMark` the variable will be set.                                                |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+

.. _`store_vars_form_element_upload`:

Carsten  Rose's avatar
Carsten Rose committed
Specific FormElement 'upload'
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Name                    | Explanation                                                                                                                                |
+=========================+============================================================================================================================================+
| filename                | Original filename of an uploaded file via an 'upload'-FormElement. Valid only during processing of the current 'upload'-formElement.       |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| filenameOnly            | Like filename, but without path.                                                                                                           |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| filenameBase            | Like `filename`, but without an optional extension. E.g. filename='image.png' comes to filenameBase='image'                                |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| filenameExt             | Like `filename`, but only the optional extension. E.g. filename='image.png' comes to filenameExt='png'                                     |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| fileDestination         | Destination (path & filename) for an uploaded file. Defined in an 'upload'-FormElement.parameter. Valid: same as 'filename'.               |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| fileSize                | Size of the uploaded file.                                                                                                                 |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| mimeType                | Mime type of the uploaded file.                                                                                                            |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+


The directive `fillStoreVar` will fill the store VARS with custom values.::

    fillStoreVar = {{! SELECT p.name, p.email FROM Person AS p WHERE p.id={{pId:S}} }}

* After filling the store, the values can be retrieved via `{{name:V}}` and `{{email:V}}`.
* Be careful by specifying general purpose variables like `id`, `r`, `pageId` and so on. This might conflict with existing variables.
* `fillStoreVar` can be used in :ref:`form-parameter` and :ref:`fe-parameter-attributes`
* Already existing variables with different names will be merged.
* Already existing variables with same names will be overwritten.

.. _STORE_LDAP:

Store: *LDAP* - L
-----------------

* Sanitized: *yes*
* See also :ref:`LDAP`:

+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Name                    | Explanation                                                                                                                                |
+=========================+============================================================================================================================================+
| <custom defined>        | See *ldapAttributes*                                                                                                                       |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+



.. _STORE_SYSTEM:

Store: *SYSTEM* - Y
-------------------

* Sanitized: *no*

See :ref:`configuration` for a list of all settings.



.. _STORE_USER:

Store: *USER* - U
-----------------

* Sanitized: *no*

At start of a new browser session (=user calls the website the first time or was logged out before) the store is empty.
As soon as a value is set in the store, it remains as long as the browser session is alive (=until user logs out).

Values can be set via report '... AS "_=<var name>"'

See also: :ref:`store_user_examples`