.. ==================================================
.. ==================================================
.. ==================================================
.. 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 `_
.. Internal Link: :ref:`downloadButton` (default url text) or :ref:`download Button` (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
.. _debug:
Debug
=====
.. _QFQ_LOG:
QFQ Log
-------
Setup in :ref:`configuration`
* *qfqLog*
* Filename where to log QFQ debug and error messages.
* File is relative to the `` or absolute (starting with '/').
* Content: error situations of QFQ and debug, if enabled.
All non SQL related information will be logged to QFQ log file.
.. _SQL_LOG:
SQL Log
-------
Setup in :ref:`configuration`
* *sqlLog*
* Filename where to log SQL queries and statistical data.
* File is relative to the `` or absolute (starting with '/').
* Content: SQL queries and timestamp, formName/formId, fe_user, success, affected rows, newly created record
id's and accessed from IP.
* The global setting can be overwritten by defining `sqlLog` inside of a QFQ tt-content record.
.. _SQL_LOG_MODE:
* *sqlLogMode: all|modify|error|none*
* *all*: logs every SQL statement.
* *modify*: logs only statements who might potentially change data.
* *error*: logs only queries which generate SQL errors.
* *none*: no query logging at all.
* The global setting can be overwritten by defining `sqlLogMode` inside of a QFQ tt-content record.
* *showDebugInfo = [yes|no|auto],[download]*
If active, displays additional information in the Frontend (FE). This is typically helpful during development.
* *yes*:
* Form:
* For every internal link/button, show tooltips with decoded SIP on mouseover.
* Shows an 'Edit form'-button (wrench symbol) on a form. The link points to the T3 page with the :ref:`form-editor`.
* Report: Will be configured per tt-content record.
*debugShowBodyText = 1*
* *no*: No debug info.
* *auto*: Depending if there is a Typo3 BE session, set internally:
* *showDebugInfo = yes* (BE session exist)
* *showDebugInfo = no* (no BE session)
* *download*:
* During a download (especially by using wkhtml), temporary files are not deleted automatically. Also the
``wkhtmltopdf``, ``pdfunite``, ``pdf2img`` command lines will be logged to :ref:`QFQ_LOG`. Use this only to debug problems on download.
.. _MAIL_LOG:
MAIL Log
--------
Setup in :ref:`configuration`
* *mailLog*
* File which `sendEmail` logs sending mail.
* File is relative to the `` or absolute (starting with '/').
.. _`mail-log-page`:
Mail Log page (Table MailLog)
-----------------------------
For debugging purposes you may like to add a Mail Log page in the frontend.
The following QFQ code could be used for that purpose (put it in a QFQ PageContent element)
.. warning::
Use this code only on access restricted pages. GET/POST Parameter might be used to get access to unintended content.
Note: If you do not use/have the Ggroup table, then remove the "# Filters" block.::
# Page parameters
1.sql = SELECT @grId := '{{grId:C0:digit}}' AS _grId
2.sql = SELECT @summary := IF('{{summary:CE:alnumx}}' = 'true', 'true', 'false') AS _s
# Filters
10 {
sql = SELECT "'", gr.id, IF(gr.id = @grId, "' selected>", "'>"), gr.value, ' (Id: ', gr.id, ')'
FROM Ggroup AS gr
INNER JOIN MailLog AS ml ON ml.grId = gr.id
GROUP BY gr.id
head =
}
# Mail Log
50 {
sql = SELECT id, '
', grId, '
', xId, '
'
, REPLACE(receiver, ',', ' '), '
', REPLACE(sender, ',', ' '), '
'
, DATE_FORMAT(modified, '%d.%m.%Y %H:%i:%s'), '
'
, CONCAT('', subject, ' ', IF(@summary = 'true', CONCAT(SUBSTR(body, 1
, LEAST(IF(INSTR(body, '\n') = 0, 50, INSTR(body, '\n')), IF(INSTR(body, ' ') = 0, 50
, INSTR(body, ' ')))-1), ' ...'), CONCAT(' ', REPLACE(body, '\n', ' '))) )
FROM MailLog
WHERE (grId = @grId OR @grId = 0)
ORDER BY modified DESC
LIMIT 100
head =
Id
grId
xId
To
From
Date
E-Mail
tail =
rbeg =
rend =
}
.. _REDIRECT_ALL_MAIL_TO:
Redirect all mail to (catch all)
--------------------------------
Setup in :ref:`configuration`
* *redirectAllMailTo=john@doe.com*
* During the development, it might be helpful to configure a 'catch all' email address, which QFQ uses as the final receiver
instead of the original intended one.
* The setting will:
* Replace the 'To' with the configured one.
* Clear 'CC' and 'Bcc'
* Write a note and the original configured receiver at the top of the email body.
Show log files realtime
-----------------------
.. warning::
Use this code only on access restricted pages. GET/POST Parameter might be used to get access to unintended content.
Display QFQ log files in realtime. Put the following code in a QFQ page content element.::
#
# {{logfile:SU}}
#
# Show buttons to select log file.
10 {
sql = SELECT '{{logfile:SU:::sql.log}}' AS '_=logfile'
head =
tail =
20.sql = SELECT CONCAT('p:{{pageAlias:T}}&logfile=sql.log|t:sql.log|b:', IF('{{logfile:R}}'='sql.log','primary','')) AS _page, ' '
, CONCAT('p:{{pageAlias:T}}&logfile=qfq.log|t:qfq.log|b:', IF('{{logfile:R}}'='qfq.log','primary','')) AS _page, ' '
, CONCAT('p:{{pageAlias:T}}&logfile=mail.log|t:mail.log|b:', IF('{{logfile:R}}'='mail.log','primary','')) AS _page
}
# Show selected log file.
100 {
sql = SELECT 'file:{{qfqProjectPath:Y}}/log/{{logfile:R}}' AS _monitor
head =
Please wait
}
**NOTE**: The `log` directory has been moved into `qfqProject` with a recent upgrade of QFQ. For backwards compatibility logs are still stored in `fileadmin/protected/log/` if that directory already exists.
.. _`form-submit-log-page`:
Form Submit Log page
--------------------
.. warning::
Use this code only on access restricted pages. GET/POST Parameter might be used to get access to unintended content.
Check the Form Submit Log page to see what have been submitted. Put the following code in a QFQ page content element.::
#
# Show all form submit. Optional filter by Form or FeUser.
#
# {{formId:SC0}}
# {{feUser:SCE:alnumx}}
# Filters
10 {
sql = SELECT ''
shead =
# Dropdown: Form
20 {
sql = SELECT "'", f.id, IF( f.id = '{{formId:SC0}}', "' selected>", "'>"), f.name, ' (', QIFEMPTY(COUNT(fsl.id),'-'), ')'
FROM Form AS f
LEFT JOIN FormSubmitLog AS fsl
ON fsl.formId=f.id
GROUP BY f.id
ORDER BY f.name
head =
rbeg =
')
, CONCAT("")
FROM FormSubmitLog AS l
LEFT JOIN Form AS f
ON f.id = l.formId
WHERE (l.formId = '{{formId:SC0}}' OR '{{formId:SC0}}' = 0)
AND (l.feUser = '{{feUser:SCE:alnumx}}' OR '{{feUser:SCE:alnumx}}' = '')
ORDER BY l.created DESC
LIMIT 100
head =